summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/CommunicatorI.java30
-rw-r--r--java/src/IceInternal/BasicStream.java26
-rw-r--r--java/src/IceInternal/Instance.java21
-rw-r--r--java/src/IceInternal/UserExceptionFactoryManager.java68
4 files changed, 15 insertions, 130 deletions
diff --git a/java/src/Ice/CommunicatorI.java b/java/src/Ice/CommunicatorI.java
index 3c5eb68b315..a6bd96850d3 100644
--- a/java/src/Ice/CommunicatorI.java
+++ b/java/src/Ice/CommunicatorI.java
@@ -151,36 +151,6 @@ final class CommunicatorI extends LocalObjectImpl implements Communicator
return _instance.servantFactoryManager().find(id);
}
- public synchronized void
- addUserExceptionFactory(IceInternal.UserExceptionFactory factory, String id)
- {
- if(_destroyed)
- {
- throw new CommunicatorDestroyedException();
- }
- _instance.userExceptionFactoryManager().add(factory, id);
- }
-
- public synchronized void
- removeUserExceptionFactory(String id)
- {
- if(_destroyed)
- {
- throw new CommunicatorDestroyedException();
- }
- _instance.userExceptionFactoryManager().remove(id);
- }
-
- public synchronized IceInternal.UserExceptionFactory
- findUserExceptionFactory(String id)
- {
- if(_destroyed)
- {
- throw new CommunicatorDestroyedException();
- }
- return _instance.userExceptionFactoryManager().find(id);
- }
-
public synchronized Properties
getProperties()
{
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 93e8ee664e9..4957a27d5d4 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -1792,7 +1792,12 @@ public class BasicStream
private UserExceptionFactory
getUserExceptionFactory(String id)
{
- UserExceptionFactory factory = _instance.userExceptionFactoryManager().find(id);
+ UserExceptionFactory factory = null;
+
+ synchronized(_factoryMutex)
+ {
+ factory = (UserExceptionFactory)_exceptionFactories.get(id);
+ }
if(factory == null)
{
@@ -1826,16 +1831,7 @@ public class BasicStream
int modifiers = c.getModifiers();
if((modifiers & 0x200) == 0 && (modifiers & 0x400) == 0)
{
- DynamicUserExceptionFactory f = new DynamicUserExceptionFactory(c);
- try
- {
- _instance.userExceptionFactoryManager().add(f, id);
- factory = f;
- }
- catch(Ice.AlreadyRegisteredException ex)
- {
- factory = _instance.userExceptionFactoryManager().find(id);
- }
+ factory = new DynamicUserExceptionFactory(c);
}
else
{
@@ -1844,6 +1840,11 @@ public class BasicStream
}
}
+ synchronized(_factoryMutex)
+ {
+ _exceptionFactories.put(id, factory);
+ }
+
return factory;
}
@@ -1922,4 +1923,7 @@ public class BasicStream
SeqData _seqDataStack;
private java.util.ArrayList _objectList;
+
+ private static java.util.HashMap _exceptionFactories = new java.util.HashMap();
+ private static java.lang.Object _factoryMutex = new java.lang.Object(); // Protects _exceptionFactories.
}
diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java
index 640f7519ea6..93208099ca0 100644
--- a/java/src/IceInternal/Instance.java
+++ b/java/src/IceInternal/Instance.java
@@ -152,17 +152,6 @@ public class Instance
return _servantFactoryManager;
}
- public synchronized UserExceptionFactoryManager
- userExceptionFactoryManager()
- {
- if(_destroyed)
- {
- throw new Ice.CommunicatorDestroyedException();
- }
-
- return _userExceptionFactoryManager;
- }
-
public synchronized ObjectAdapterFactory
objectAdapterFactory()
{
@@ -348,8 +337,6 @@ public class Instance
_servantFactoryManager = new ObjectFactoryManager();
- _userExceptionFactoryManager = new UserExceptionFactoryManager();
-
_objectAdapterFactory = new ObjectAdapterFactory(this, communicator);
_bufferManager = new BufferManager(); // Must be created before the ThreadPool
@@ -371,7 +358,6 @@ public class Instance
assert(_outgoingConnectionFactory == null);
assert(_connectionMonitor == null);
assert(_servantFactoryManager == null);
- assert(_userExceptionFactoryManager == null);
assert(_objectAdapterFactory == null);
assert(_clientThreadPool == null);
assert(_serverThreadPool == null);
@@ -487,12 +473,6 @@ public class Instance
_servantFactoryManager = null;
}
- if(_userExceptionFactoryManager != null)
- {
- _userExceptionFactoryManager.destroy();
- _userExceptionFactoryManager = null;
- }
-
if(_referenceFactory != null)
{
_referenceFactory.destroy();
@@ -559,7 +539,6 @@ public class Instance
private OutgoingConnectionFactory _outgoingConnectionFactory;
private ConnectionMonitor _connectionMonitor;
private ObjectFactoryManager _servantFactoryManager;
- private UserExceptionFactoryManager _userExceptionFactoryManager;
private ObjectAdapterFactory _objectAdapterFactory;
private ThreadPool _clientThreadPool;
private ThreadPool _serverThreadPool;
diff --git a/java/src/IceInternal/UserExceptionFactoryManager.java b/java/src/IceInternal/UserExceptionFactoryManager.java
deleted file mode 100644
index 3d3a330cf1d..00000000000
--- a/java/src/IceInternal/UserExceptionFactoryManager.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2004 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-package IceInternal;
-
-public final class UserExceptionFactoryManager
-{
- public synchronized void
- add(UserExceptionFactory factory, String id)
- {
- Object o = _factoryMap.get(id);
- if(o != null)
- {
- Ice.AlreadyRegisteredException ex = new Ice.AlreadyRegisteredException();
- ex.id = id;
- ex.kindOfObject = "user exception factory";
- throw ex;
- }
- _factoryMap.put(id, factory);
- }
-
- public synchronized void
- remove(String id)
- {
- Object o = _factoryMap.get(id);
- if(o == null)
- {
- Ice.NotRegisteredException ex = new Ice.NotRegisteredException();
- ex.id = id;
- ex.kindOfObject = "user exception factory";
- throw ex;
- }
- _factoryMap.remove(id);
- }
-
- public synchronized UserExceptionFactory
- find(String id)
- {
- return (UserExceptionFactory)_factoryMap.get(id);
- }
-
- //
- // Only for use by Instance
- //
- UserExceptionFactoryManager()
- {
- }
-
- void
- destroy()
- {
- java.util.Iterator i = _factoryMap.values().iterator();
- while(i.hasNext())
- {
- UserExceptionFactory factory = (UserExceptionFactory)i.next();
- factory.destroy();
- }
- _factoryMap.clear();
- }
-
- private java.util.HashMap _factoryMap = new java.util.HashMap();
-}