summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/Ice/ObjectAdapterI.java9
-rw-r--r--java/src/IceInternal/ServantManager.java19
2 files changed, 28 insertions, 0 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 563ab0c3ed1..57cdcb4e59f 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -345,6 +345,15 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
_servantManager.removeServant(ident, facet);
}
+ public synchronized java.util.Map
+ removeAllFacets(Identity ident)
+ {
+ checkForDeactivation();
+ checkIdentity(ident);
+
+ return _servantManager.removeAllFacets(ident);
+ }
+
public Ice.Object
find(Identity ident)
{
diff --git a/java/src/IceInternal/ServantManager.java b/java/src/IceInternal/ServantManager.java
index 43265bcb96e..e2b18635e30 100644
--- a/java/src/IceInternal/ServantManager.java
+++ b/java/src/IceInternal/ServantManager.java
@@ -81,6 +81,25 @@ public final class ServantManager extends Thread
}
}
+ public synchronized java.util.Map
+ removeAllFacets(Ice.Identity ident)
+ {
+ assert(_instance != null); // Must not be called after destruction.
+
+ java.util.HashMap m = (java.util.HashMap)_servantMap.get(ident);
+ if(m == null)
+ {
+ Ice.NotRegisteredException ex = new Ice.NotRegisteredException();
+ ex.id = Ice.Util.identityToString(ident);
+ ex.kindOfObject = "servant";
+ throw ex;
+ }
+
+ _servantMap.remove(ident);
+
+ return m;
+ }
+
public synchronized Ice.Object
findServant(Ice.Identity ident, String facet)
{