diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/CommunicatorI.java | 30 | ||||
-rw-r--r-- | java/src/IceInternal/BasicStream.java | 26 | ||||
-rw-r--r-- | java/src/IceInternal/Instance.java | 21 | ||||
-rw-r--r-- | java/src/IceInternal/UserExceptionFactoryManager.java | 68 |
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(); -} |