summaryrefslogtreecommitdiff
path: root/java-compat/src
diff options
context:
space:
mode:
Diffstat (limited to 'java-compat/src')
-rw-r--r--java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java10
-rw-r--r--java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java10
2 files changed, 16 insertions, 4 deletions
diff --git a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
index bd8f1007fe5..748a2ae83a8 100644
--- a/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
+++ b/java-compat/src/IceDiscovery/src/main/java/IceDiscovery/PluginI.java
@@ -102,7 +102,8 @@ public class PluginI implements Ice.Plugin
//
Ice.ObjectPrx locator = _locatorAdapter.addWithUUID(new LocatorI(lookup, locatorRegistryPrx));
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(locator));
+ _locator = Ice.LocatorPrxHelper.uncheckedCast(locator);
+ _communicator.setDefaultLocator(_locator);
_multicastAdapter.activate();
_replyAdapter.activate();
@@ -116,12 +117,17 @@ public class PluginI implements Ice.Plugin
_multicastAdapter.destroy();
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locator))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
private Ice.Communicator _communicator;
private Ice.ObjectAdapter _multicastAdapter;
private Ice.ObjectAdapter _replyAdapter;
private Ice.ObjectAdapter _locatorAdapter;
+ private Ice.LocatorPrx _locator;
private Ice.LocatorPrx _defaultLocator;
}
diff --git a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
index 2ee4d3b1d1d..2b49d63747d 100644
--- a/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
+++ b/java-compat/src/IceLocatorDiscovery/src/main/java/IceLocatorDiscovery/PluginI.java
@@ -562,7 +562,8 @@ class PluginI implements Plugin
id.category = !instanceName.isEmpty() ? instanceName : java.util.UUID.randomUUID().toString();
_locator = new LocatorI(_name, LookupPrxHelper.uncheckedCast(lookupPrx), properties, instanceName, voidLoc);
_defaultLocator = _communicator.getDefaultLocator();
- _communicator.setDefaultLocator(Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator)));
+ _locatorPrx = Ice.LocatorPrxHelper.uncheckedCast(_locatorAdapter.addWithUUID(_locator));
+ _communicator.setDefaultLocator(_locatorPrx);
Ice.ObjectPrx lookupReply = _replyAdapter.addWithUUID(new LookupReplyI(_locator)).ice_datagram();
_locator.setLookupReply(LookupReplyPrxHelper.uncheckedCast(lookupReply));
@@ -577,7 +578,11 @@ class PluginI implements Plugin
{
_replyAdapter.destroy();
_locatorAdapter.destroy();
- _communicator.setDefaultLocator(_defaultLocator);
+ // Restore original default locator proxy, if the user didn't change it in the meantime
+ if(_communicator.getDefaultLocator().equals(_locatorPrx))
+ {
+ _communicator.setDefaultLocator(_defaultLocator);
+ }
}
@Override
@@ -592,5 +597,6 @@ class PluginI implements Plugin
private Ice.ObjectAdapter _locatorAdapter;
private Ice.ObjectAdapter _replyAdapter;
private LocatorI _locator;
+ private Ice.LocatorPrx _locatorPrx;
private Ice.LocatorPrx _defaultLocator;
}