summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/Ice/CommunicatorI.cpp15
-rw-r--r--cpp/src/Ice/ObjectAdapterFactory.cpp4
-rw-r--r--cpp/src/Ice/ObjectAdapterFactory.h2
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp7
-rw-r--r--cpp/src/Ice/ObjectAdapterI.h2
-rw-r--r--cpp/test/Ice/exceptions/AllTests.cpp16
-rwxr-xr-xcppe/include/IceE/ObjectAdapter.h2
-rwxr-xr-xcppe/src/IceE/Communicator.cpp15
-rw-r--r--cppe/src/IceE/ObjectAdapter.cpp7
-rw-r--r--cppe/src/IceE/ObjectAdapterFactory.cpp4
-rw-r--r--cppe/src/IceE/ObjectAdapterFactory.h2
-rw-r--r--cppe/test/IceE/exceptions/AllTests.cpp16
-rwxr-xr-xcs/src/Ice/CommunicatorI.cs15
-rwxr-xr-xcs/src/Ice/ObjectAdapterFactory.cs4
-rwxr-xr-xcs/src/Ice/ObjectAdapterI.cs8
-rwxr-xr-xcs/test/Ice/exceptions/AllTests.cs14
-rw-r--r--java/demo/Ice/callback/config10
-rw-r--r--java/demo/Ice/hello/config6
-rw-r--r--java/src/Ice/CommunicatorI.java15
-rw-r--r--java/src/Ice/ObjectAdapterI.java7
-rw-r--r--java/src/IceInternal/ObjectAdapterFactory.java4
-rw-r--r--java/test/Ice/exceptions/AllTests.java13
-rw-r--r--javae/src/Ice/Communicator.java15
-rw-r--r--javae/src/Ice/ObjectAdapter.java7
-rw-r--r--javae/src/IceInternal/ObjectAdapterFactory.java4
-rw-r--r--javae/test/IceE/exceptions/AllTests.java13
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");
}