diff options
26 files changed, 119 insertions, 108 deletions
diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp index 01fa8eac7a7..3fb9e387e67 100644 --- a/cpp/src/Ice/CommunicatorI.cpp +++ b/cpp/src/Ice/CommunicatorI.cpp @@ -134,24 +134,13 @@ Ice::CommunicatorI::proxyToString(const ObjectPrx& proxy) const ObjectAdapterPtr Ice::CommunicatorI::createObjectAdapter(const string& name) { - return _instance->objectAdapterFactory()->createObjectAdapter(name); + return createObjectAdapterWithEndpoints(name, getProperties()->getProperty(name + ".Endpoints")); } ObjectAdapterPtr Ice::CommunicatorI::createObjectAdapterWithEndpoints(const string& name, const string& endpoints) { - const string propertyKey = name + ".Endpoints"; - const string originalValue = getProperties()->getProperty(propertyKey); - try - { - getProperties()->setProperty(propertyKey, endpoints); - return createObjectAdapter(name); - } - catch(const AlreadyRegisteredException&) - { - getProperties()->setProperty(propertyKey, originalValue); - throw; - } + return _instance->objectAdapterFactory()->createObjectAdapter(name, endpoints); } void diff --git a/cpp/src/Ice/ObjectAdapterFactory.cpp b/cpp/src/Ice/ObjectAdapterFactory.cpp index 9bcd0e6580b..e61834a856f 100644 --- a/cpp/src/Ice/ObjectAdapterFactory.cpp +++ b/cpp/src/Ice/ObjectAdapterFactory.cpp @@ -100,7 +100,7 @@ IceInternal::ObjectAdapterFactory::waitForShutdown() } ObjectAdapterPtr -IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name) +IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name, const string& endpoints) { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); @@ -115,7 +115,7 @@ IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name) throw AlreadyRegisteredException(__FILE__, __LINE__, "object adapter", name); } - ObjectAdapterIPtr adapter = new ObjectAdapterI(_instance, _communicator, name); + ObjectAdapterIPtr adapter = new ObjectAdapterI(_instance, _communicator, name, endpoints); _adapters.insert(make_pair(name, adapter)); return adapter; } diff --git a/cpp/src/Ice/ObjectAdapterFactory.h b/cpp/src/Ice/ObjectAdapterFactory.h index f74c2a5d38a..18c419cab6f 100644 --- a/cpp/src/Ice/ObjectAdapterFactory.h +++ b/cpp/src/Ice/ObjectAdapterFactory.h @@ -24,7 +24,7 @@ public: void shutdown(); void waitForShutdown(); - ::Ice::ObjectAdapterPtr createObjectAdapter(const std::string&); + ::Ice::ObjectAdapterPtr createObjectAdapter(const std::string&, const std::string&); ::Ice::ObjectAdapterPtr findObjectAdapter(const ::Ice::ObjectPrx&); void flushBatchRequests() const; diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index d5a041cbefb..c00e7d28f91 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -680,7 +680,7 @@ Ice::ObjectAdapterI::getServantManager() const } Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const CommunicatorPtr& communicator, - const string& name) : + const string& name, const string& endpointInfo) : _deactivated(false), _instance(instance), _communicator(communicator), @@ -699,8 +699,7 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica // The connection factory might change it, for example, to // fill in the real port number. // - string endpts = _instance->properties()->getProperty(name + ".Endpoints"); - vector<EndpointPtr> endpoints = parseEndpoints(endpts); + vector<EndpointPtr> endpoints = parseEndpoints(endpointInfo); for(vector<EndpointPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p) { _incomingConnectionFactories.push_back(new IncomingConnectionFactory(instance, *p, this)); @@ -710,7 +709,7 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica // Parse published endpoints. These are used in proxies // instead of the connection factory endpoints. // - endpts = _instance->properties()->getProperty(name + ".PublishedEndpoints"); + string endpts = _instance->properties()->getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); string router = _instance->properties()->getProperty(_name + ".Router"); diff --git a/cpp/src/Ice/ObjectAdapterI.h b/cpp/src/Ice/ObjectAdapterI.h index c6ca6b87de7..984ea7888af 100644 --- a/cpp/src/Ice/ObjectAdapterI.h +++ b/cpp/src/Ice/ObjectAdapterI.h @@ -84,7 +84,7 @@ public: private: - ObjectAdapterI(const IceInternal::InstancePtr&, const CommunicatorPtr&, const std::string&); + ObjectAdapterI(const IceInternal::InstancePtr&, const CommunicatorPtr&, const std::string&, const std::string&); virtual ~ObjectAdapterI(); friend class IceInternal::ObjectAdapterFactory; diff --git a/cpp/test/Ice/exceptions/AllTests.cpp b/cpp/test/Ice/exceptions/AllTests.cpp index 2b8eacbdca4..c4ed6ef4887 100644 --- a/cpp/test/Ice/exceptions/AllTests.cpp +++ b/cpp/test/Ice/exceptions/AllTests.cpp @@ -573,6 +573,22 @@ allTests(const Ice::CommunicatorPtr& communicator, bool collocated) { // Expected } + + communicator->getProperties()->setProperty("TestAdapter0.Endpoints", ""); + try + { + Ice::ObjectAdapterPtr second = + communicator->createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12346 -t 10000"); + test(false); + } + catch(const Ice::AlreadyRegisteredException&) + { + // Expected. + } + // + // Properties must remain unaffected if an exception occurs. + // + test(communicator->getProperties()->getProperty("TestAdapter0.Endpoints") == ""); first->deactivate(); } cout << "ok" << endl; diff --git a/cppe/include/IceE/ObjectAdapter.h b/cppe/include/IceE/ObjectAdapter.h index 7d2c0ca6a62..1e7b1411ec7 100755 --- a/cppe/include/IceE/ObjectAdapter.h +++ b/cppe/include/IceE/ObjectAdapter.h @@ -88,7 +88,7 @@ public: private:
- ObjectAdapter(const IceInternal::InstancePtr&, const CommunicatorPtr&, const std::string&);
+ ObjectAdapter(const IceInternal::InstancePtr&, const CommunicatorPtr&, const std::string&, const std::string&);
~ObjectAdapter();
friend class IceInternal::ObjectAdapterFactory;
diff --git a/cppe/src/IceE/Communicator.cpp b/cppe/src/IceE/Communicator.cpp index 62cae3c1256..3042bbf89aa 100755 --- a/cppe/src/IceE/Communicator.cpp +++ b/cppe/src/IceE/Communicator.cpp @@ -73,24 +73,13 @@ Ice::Communicator::proxyToString(const ObjectPrx& proxy) const ObjectAdapterPtr Ice::Communicator::createObjectAdapter(const string& name) { - return _instance->objectAdapterFactory()->createObjectAdapter(name); + return createObjectAdapterWithEndpoints(name, getProperties()->getProperty(name + ".Endpoints")); } ObjectAdapterPtr Ice::Communicator::createObjectAdapterWithEndpoints(const string& name, const string& endpoints) { - const string propertyKey = name + ".Endpoints"; - const string originalValue = getProperties()->getProperty(propertyKey); - try - { - getProperties()->setProperty(propertyKey, endpoints); - return createObjectAdapter(name); - } - catch(const AlreadyRegisteredException&) - { - getProperties()->setProperty(propertyKey, originalValue); - throw; - } + return _instance->objectAdapterFactory()->createObjectAdapter(name, endpoints); } #endif diff --git a/cppe/src/IceE/ObjectAdapter.cpp b/cppe/src/IceE/ObjectAdapter.cpp index 93068218ff5..724a7f2737e 100644 --- a/cppe/src/IceE/ObjectAdapter.cpp +++ b/cppe/src/IceE/ObjectAdapter.cpp @@ -604,7 +604,7 @@ Ice::ObjectAdapter::getServantManager() const } Ice::ObjectAdapter::ObjectAdapter(const InstancePtr& instance, const CommunicatorPtr& communicator, - const string& name) : + const string& name, const string& endpointInfo) : _deactivated(false), _instance(instance), _communicator(communicator), @@ -623,8 +623,7 @@ Ice::ObjectAdapter::ObjectAdapter(const InstancePtr& instance, const Communicato // The connection factory might change it, for example, to // fill in the real port number. // - string endpts = _instance->properties()->getProperty(name + ".Endpoints"); - vector<EndpointPtr> endpoints = parseEndpoints(endpts); + vector<EndpointPtr> endpoints = parseEndpoints(endpointInfo); for(vector<EndpointPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p) { _incomingConnectionFactories.push_back(new IncomingConnectionFactory(_instance, *p, this)); @@ -634,7 +633,7 @@ Ice::ObjectAdapter::ObjectAdapter(const InstancePtr& instance, const Communicato // Parse published endpoints. These are used in proxies // instead of the connection factory endpoints. // - endpts = _instance->properties()->getProperty(name + ".PublishedEndpoints"); + string endpts = _instance->properties()->getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); #ifdef ICEE_HAS_ROUTER diff --git a/cppe/src/IceE/ObjectAdapterFactory.cpp b/cppe/src/IceE/ObjectAdapterFactory.cpp index 3788e09e322..61ccf92ae83 100644 --- a/cppe/src/IceE/ObjectAdapterFactory.cpp +++ b/cppe/src/IceE/ObjectAdapterFactory.cpp @@ -109,7 +109,7 @@ IceInternal::ObjectAdapterFactory::waitForShutdown() } ObjectAdapterPtr -IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name) +IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name, const string& endpoints) { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); @@ -124,7 +124,7 @@ IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name) throw AlreadyRegisteredException(__FILE__, __LINE__, "object adapter", name); } - ObjectAdapterPtr adapter = new ObjectAdapter(_instance, _communicator, name); + ObjectAdapterPtr adapter = new ObjectAdapter(_instance, _communicator, name, endpoints); _adapters.insert(make_pair(name, adapter)); return adapter; } diff --git a/cppe/src/IceE/ObjectAdapterFactory.h b/cppe/src/IceE/ObjectAdapterFactory.h index eb91ec4ed9e..258976b6bb2 100644 --- a/cppe/src/IceE/ObjectAdapterFactory.h +++ b/cppe/src/IceE/ObjectAdapterFactory.h @@ -29,7 +29,7 @@ public: void shutdown(); void waitForShutdown(); - ::Ice::ObjectAdapterPtr createObjectAdapter(const std::string&); + ::Ice::ObjectAdapterPtr createObjectAdapter(const std::string&, const std::string&); ::Ice::ObjectAdapterPtr findObjectAdapter(const ::Ice::ObjectPrx&); void flushBatchRequests() const; diff --git a/cppe/test/IceE/exceptions/AllTests.cpp b/cppe/test/IceE/exceptions/AllTests.cpp index 75b2361105a..0411979a650 100644 --- a/cppe/test/IceE/exceptions/AllTests.cpp +++ b/cppe/test/IceE/exceptions/AllTests.cpp @@ -75,6 +75,22 @@ allTests(const Ice::CommunicatorPtr& communicator) { // Expected } + + communicator->getProperties()->setProperty("TestAdapter0.Endpoints", ""); + try + { + Ice::ObjectAdapterPtr second = + communicator->createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12346 -t 10000"); + test(false); + } + catch(const Ice::AlreadyRegisteredException&) + { + // Expected. + } + // + // Properties must remain unaffected if an exception occurs. + // + test(communicator->getProperties()->getProperty("TestAdapter0.Endpoints") == ""); first->deactivate(); } tprintf("ok\n"); diff --git a/cs/src/Ice/CommunicatorI.cs b/cs/src/Ice/CommunicatorI.cs index 77ded6554c7..22128e75313 100755 --- a/cs/src/Ice/CommunicatorI.cs +++ b/cs/src/Ice/CommunicatorI.cs @@ -39,23 +39,12 @@ namespace Ice public ObjectAdapter createObjectAdapter(string name) { - return _instance.objectAdapterFactory().createObjectAdapter(name); + return createObjectAdapterWithEndpoints(name, getProperties().getProperty(name + ".Endpoints")); } public ObjectAdapter createObjectAdapterWithEndpoints(string name, string endpoints) { - string propertyKey = name + ".Endpoints"; - string originalValue = getProperties().getProperty(propertyKey); - try - { - getProperties().setProperty(propertyKey, endpoints); - return createObjectAdapter(name); - } - catch(AlreadyRegisteredException ex) - { - getProperties().setProperty(propertyKey, originalValue); - throw ex; - } + return _instance.objectAdapterFactory().createObjectAdapter(name, endpoints); } public void addObjectFactory(ObjectFactory factory, string id) diff --git a/cs/src/Ice/ObjectAdapterFactory.cs b/cs/src/Ice/ObjectAdapterFactory.cs index a9a99f353cb..0b5a4418474 100755 --- a/cs/src/Ice/ObjectAdapterFactory.cs +++ b/cs/src/Ice/ObjectAdapterFactory.cs @@ -101,7 +101,7 @@ namespace IceInternal } } - public Ice.ObjectAdapter createObjectAdapter(string name) + public Ice.ObjectAdapter createObjectAdapter(string name, string endpoints) { lock(this) { @@ -119,7 +119,7 @@ namespace IceInternal throw ex; } - adapter = new Ice.ObjectAdapterI(_instance, _communicator, name); + adapter = new Ice.ObjectAdapterI(_instance, _communicator, name, endpoints); _adapters[name] = adapter; return adapter; } diff --git a/cs/src/Ice/ObjectAdapterI.cs b/cs/src/Ice/ObjectAdapterI.cs index aa00d680721..2c7118b4234 100755 --- a/cs/src/Ice/ObjectAdapterI.cs +++ b/cs/src/Ice/ObjectAdapterI.cs @@ -717,7 +717,8 @@ namespace Ice // // Only for use by IceInternal.ObjectAdapterFactory // - public ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, string name) + public ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, string name, + string endpointInfo) { _deactivated = false; _instance = instance; @@ -738,8 +739,7 @@ namespace Ice // The connection factory might change it, for example, to // fill in the real port number. // - string endpts = _instance.properties().getProperty(name + ".Endpoints"); - ArrayList endpoints = parseEndpoints(endpts); + ArrayList endpoints = parseEndpoints(endpointInfo); for(int i = 0; i < endpoints.Count; ++i) { IceInternal.Endpoint endp = (IceInternal.Endpoint)endpoints[i]; @@ -750,7 +750,7 @@ namespace Ice // Parse published endpoints. These are used in proxies // instead of the connection factory endpoints. // - endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); + string endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); string router = _instance.properties().getProperty(name + ".Router"); diff --git a/cs/test/Ice/exceptions/AllTests.cs b/cs/test/Ice/exceptions/AllTests.cs index e60f0f9ff10..cf85e711a12 100755 --- a/cs/test/Ice/exceptions/AllTests.cs +++ b/cs/test/Ice/exceptions/AllTests.cs @@ -674,8 +674,20 @@ public class AllTests { // Expected. } + + communicator.getProperties().setProperty("TestAdapter0.Endpoints", ""); + try + { + Ice.ObjectAdapter second = + communicator.createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12346 -t 10000"); + test(false); + } + catch(Ice.AlreadyRegisteredException) + { + // Expected + } + test(communicator.getProperties().getProperty("TestAdapter0.Endpoints").Equals("")); first.deactivate(); - Console.WriteLine("ok"); } diff --git a/java/demo/Ice/callback/config b/java/demo/Ice/callback/config index 0e18ea2f749..53a7ad10215 100644 --- a/java/demo/Ice/callback/config +++ b/java/demo/Ice/callback/config @@ -1,10 +1,10 @@ -Callback.Client.CallbackServer=callback:tcp -p 10000:udp -p 10000:ssl -p 10001 +Callback.Client.CallbackServer=callback:tcp -p 12000 Callback.Client.Endpoints=tcp:udp:ssl -Callback.Server.Endpoints=tcp -p 10000:udp -p 10000:ssl -p 10001 +Callback.Server.Endpoints=tcp -p 12000 -#Ice.Trace.Network=1 -#Ice.Trace.Protocol=1 -Ice.Warn.Connections=1 +Ice.Trace.Network=3 +Ice.Trace.Protocol=3 +Ice.Warn.Connections=3 # # SSL Configuration diff --git a/java/demo/Ice/hello/config b/java/demo/Ice/hello/config index ea81f74af15..449556359f1 100644 --- a/java/demo/Ice/hello/config +++ b/java/demo/Ice/hello/config @@ -14,7 +14,7 @@ Hello.Endpoints=tcp -p 10000:udp -p 10000:ssl -p 10001 # # Warn about connection exceptions # -Ice.Warn.Connections=1 +Ice.Warn.Connections=2 # # We want a faster ACM for this demo. @@ -30,7 +30,7 @@ Ice.ACM.Server=10 # 2 = like 1, but more detailed # 3 = like 2, but also trace data transfer # -Ice.Trace.Network=0 +Ice.Trace.Network=3 # # Protocol Tracing @@ -38,7 +38,7 @@ Ice.Trace.Network=0 # 0 = no protocol tracing # 1 = trace protocol messages # -Ice.Trace.Protocol=0 +Ice.Trace.Protocol=3 # # Security Tracing diff --git a/java/src/Ice/CommunicatorI.java b/java/src/Ice/CommunicatorI.java index d8d3c1c20a5..fddeecf9588 100644 --- a/java/src/Ice/CommunicatorI.java +++ b/java/src/Ice/CommunicatorI.java @@ -44,24 +44,13 @@ public final class CommunicatorI extends LocalObjectImpl implements Communicator public ObjectAdapter createObjectAdapter(String name) { - return _instance.objectAdapterFactory().createObjectAdapter(name); + return createObjectAdapterWithEndpoints(name, getProperties().getProperty(name + ".Endpoints")); } public ObjectAdapter createObjectAdapterWithEndpoints(String name, String endpoints) { - final String propertyKey = new String(name + ".Endpoints"); - final String originalValue = getProperties().getProperty(propertyKey); - try - { - getProperties().setProperty(propertyKey, endpoints); - return createObjectAdapter(name); - } - catch(AlreadyRegisteredException ex) - { - getProperties().setProperty(propertyKey, originalValue); - throw ex; - } + return _instance.objectAdapterFactory().createObjectAdapter(name, endpoints); } public void diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index 227255d1def..79edfa2c418 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -692,7 +692,7 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt // Only for use by IceInternal.ObjectAdapterFactory // public - ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, String name) + ObjectAdapterI(IceInternal.Instance instance, Communicator communicator, String name, String endpointInfo) { _deactivated = false; _instance = instance; @@ -711,8 +711,7 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt // The connection factory might change it, for example, to // fill in the real port number. // - String endpts = _instance.properties().getProperty(name + ".Endpoints"); - java.util.ArrayList endpoints = parseEndpoints(endpts); + java.util.ArrayList endpoints = parseEndpoints(endpointInfo); for(int i = 0; i < endpoints.size(); ++i) { IceInternal.Endpoint endp = (IceInternal.Endpoint)endpoints.get(i); @@ -723,7 +722,7 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt // Parse published endpoints. These are used in proxies // instead of the connection factory endpoints. // - endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); + String endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); String router = _instance.properties().getProperty(name + ".Router"); diff --git a/java/src/IceInternal/ObjectAdapterFactory.java b/java/src/IceInternal/ObjectAdapterFactory.java index e31442cd122..743718ff61f 100644 --- a/java/src/IceInternal/ObjectAdapterFactory.java +++ b/java/src/IceInternal/ObjectAdapterFactory.java @@ -114,7 +114,7 @@ public final class ObjectAdapterFactory } public synchronized Ice.ObjectAdapter - createObjectAdapter(String name) + createObjectAdapter(String name, String endpoints) { if(_instance == null) { @@ -127,7 +127,7 @@ public final class ObjectAdapterFactory throw new Ice.AlreadyRegisteredException("object adapter", name); } - adapter = new Ice.ObjectAdapterI(_instance, _communicator, name); + adapter = new Ice.ObjectAdapterI(_instance, _communicator, name, endpoints); _adapters.put(name, adapter); return adapter; } diff --git a/java/test/Ice/exceptions/AllTests.java b/java/test/Ice/exceptions/AllTests.java index a222f8669f8..1b23f7637d5 100644 --- a/java/test/Ice/exceptions/AllTests.java +++ b/java/test/Ice/exceptions/AllTests.java @@ -698,6 +698,19 @@ public class AllTests { // Expected } + + communicator.getProperties().setProperty("TestAdapter0.Endpoints", ""); + try + { + Ice.ObjectAdapter second = + communicator.createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12346 -t 10000"); + test(false); + } + catch(Ice.AlreadyRegisteredException ex) + { + // Expected + } + test(communicator.getProperties().getProperty("TestAdapter0.Endpoints").equals("")); first.deactivate(); System.out.println("ok"); } diff --git a/javae/src/Ice/Communicator.java b/javae/src/Ice/Communicator.java index 4e3656cb9d0..bc08ec4ee92 100644 --- a/javae/src/Ice/Communicator.java +++ b/javae/src/Ice/Communicator.java @@ -44,24 +44,13 @@ public final class Communicator public ObjectAdapter createObjectAdapter(String name) { - return _instance.objectAdapterFactory().createObjectAdapter(name); + return createObjectAdapterWithEndpoints(name, getProperties().getProperty(name + ".Endpoints")); } public ObjectAdapter createObjectAdapterWithEndpoints(String name, String endpoints) { - final String propertyKey = new String(name + ".Endpoints"); - final String originalValue = getProperties().getProperty(propertyKey); - try - { - getProperties().setProperty(propertyKey, endpoints); - return createObjectAdapter(name); - } - catch(AlreadyRegisteredException ex) - { - getProperties().setProperty(propertyKey, originalValue); - throw ex; - } + return _instance.objectAdapterFactory().createObjectAdapter(name, endpoints); } public Properties diff --git a/javae/src/Ice/ObjectAdapter.java b/javae/src/Ice/ObjectAdapter.java index 00b85caa571..bdc19d1dd8a 100644 --- a/javae/src/Ice/ObjectAdapter.java +++ b/javae/src/Ice/ObjectAdapter.java @@ -626,7 +626,7 @@ public final class ObjectAdapter // Only for use by IceInternal.ObjectAdapterFactory // public - ObjectAdapter(IceInternal.Instance instance, Communicator communicator, String name) + ObjectAdapter(IceInternal.Instance instance, Communicator communicator, String name, String endpointInfo) { _deactivated = false; _instance = instance; @@ -645,8 +645,7 @@ public final class ObjectAdapter // The connection factory might change it, for example, to // fill in the real port number. // - String endpts = _instance.properties().getProperty(name + ".Endpoints"); - java.util.Vector endpoints = parseEndpoints(endpts); + java.util.Vector endpoints = parseEndpoints(endpointInfo); for(int i = 0; i < endpoints.size(); ++i) { IceInternal.Endpoint endp = (IceInternal.Endpoint)endpoints.elementAt(i); @@ -658,7 +657,7 @@ public final class ObjectAdapter // Parse published endpoints. These are used in proxies // instead of the connection factory endpoints. // - endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); + String endpts = _instance.properties().getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); String router = _instance.properties().getProperty(name + ".Router"); diff --git a/javae/src/IceInternal/ObjectAdapterFactory.java b/javae/src/IceInternal/ObjectAdapterFactory.java index f0af2d93718..cdcf60140b4 100644 --- a/javae/src/IceInternal/ObjectAdapterFactory.java +++ b/javae/src/IceInternal/ObjectAdapterFactory.java @@ -116,7 +116,7 @@ public final class ObjectAdapterFactory } public synchronized Ice.ObjectAdapter - createObjectAdapter(String name) + createObjectAdapter(String name, String endpoints) { if(_instance == null) { @@ -129,7 +129,7 @@ public final class ObjectAdapterFactory throw new Ice.AlreadyRegisteredException("object adapter", name); } - adapter = new Ice.ObjectAdapter(_instance, _communicator, name); + adapter = new Ice.ObjectAdapter(_instance, _communicator, name, endpoints); _adapters.put(name, adapter); return adapter; } diff --git a/javae/test/IceE/exceptions/AllTests.java b/javae/test/IceE/exceptions/AllTests.java index 5f01ed70c4d..3967192b737 100644 --- a/javae/test/IceE/exceptions/AllTests.java +++ b/javae/test/IceE/exceptions/AllTests.java @@ -77,6 +77,19 @@ public class AllTests { // Expected } + + communicator.getProperties().setProperty("TestAdapter0.Endpoints", ""); + try + { + Ice.ObjectAdapter second = + communicator.createObjectAdapterWithEndpoints("TestAdapter0", "ssl -h foo -p 12346 -t 10000"); + test(false); + } + catch(Ice.AlreadyRegisteredException ex) + { + // Expected + } + test(communicator.getProperties().getProperty("TestAdapter0.Endpoints").equals("")); first.deactivate(); out.println("ok"); } |