summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2004-05-14 02:16:38 +0000
committerMichi Henning <michi@zeroc.com>2004-05-14 02:16:38 +0000
commitabefe064ba1761a89410a428e27b55ab8cdfcb50 (patch)
treeb379957d4be29976701cabb86f1e3cd3919c3382 /java
parentAdded removeAllFacets. Michi, repeat after me: "forgetting to return a (diff)
downloadice-abefe064ba1761a89410a428e27b55ab8cdfcb50.tar.bz2
ice-abefe064ba1761a89410a428e27b55ab8cdfcb50.tar.xz
ice-abefe064ba1761a89410a428e27b55ab8cdfcb50.zip
Added ObjectAdapter.removeAllFacets().
Diffstat (limited to 'java')
-rw-r--r--java/build.xml1
-rw-r--r--java/src/Ice/ObjectAdapterI.java9
-rw-r--r--java/src/IceInternal/ServantManager.java19
-rw-r--r--java/test/Ice/facets/AllTests.java30
4 files changed, 59 insertions, 0 deletions
diff --git a/java/build.xml b/java/build.xml
index 368df5e6a7c..25c76d0e61f 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -75,6 +75,7 @@
<include name="Router.ice" />
<include name="ServantLocator.ice" />
<include name="Locator.ice" />
+ <include name="FacetMap.ice" />
</fileset>
<fileset dir="${slice.dir}/Glacier">
<include name="Router.ice" />
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)
{
diff --git a/java/test/Ice/facets/AllTests.java b/java/test/Ice/facets/AllTests.java
index 0162c73ed01..7b4fdaf9fda 100644
--- a/java/test/Ice/facets/AllTests.java
+++ b/java/test/Ice/facets/AllTests.java
@@ -54,6 +54,36 @@ public class AllTests
test(gotException);
System.out.println("ok");
+ System.out.print("testing removeAllFacets... ");
+ Ice.Object obj1 = new EmptyI();
+ Ice.Object obj2 = new EmptyI();
+ adapter.addFacet(obj1, Ice.Util.stringToIdentity("id1"), "f1");
+ adapter.addFacet(obj2, Ice.Util.stringToIdentity("id1"), "f2");
+ Ice.Object obj3 = new EmptyI();
+ adapter.addFacet(obj1, Ice.Util.stringToIdentity("id2"), "f1");
+ adapter.addFacet(obj2, Ice.Util.stringToIdentity("id2"), "f2");
+ adapter.addFacet(obj3, Ice.Util.stringToIdentity("id2"), "");
+ java.util.Map fm = adapter.removeAllFacets(Ice.Util.stringToIdentity("id1"));
+ test(fm.size() == 2);
+ test(fm.get("f1") == obj1);
+ test(fm.get("f2") == obj2);
+ gotException = false;
+ try
+ {
+ adapter.removeAllFacets(Ice.Util.stringToIdentity("id1"));
+ }
+ catch(Ice.NotRegisteredException ex)
+ {
+ gotException = true;
+ }
+ test(gotException);
+ fm = adapter.removeAllFacets(Ice.Util.stringToIdentity("id2"));
+ test(fm.size() == 3);
+ test(fm.get("f1") == obj1);
+ test(fm.get("f2") == obj2);
+ test(fm.get("") == obj3);
+ System.out.println("ok");
+
adapter.deactivate();
System.out.print("testing stringToProxy... ");