diff options
author | Michi Henning <michi@zeroc.com> | 2004-05-14 02:16:38 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2004-05-14 02:16:38 +0000 |
commit | abefe064ba1761a89410a428e27b55ab8cdfcb50 (patch) | |
tree | b379957d4be29976701cabb86f1e3cd3919c3382 /java | |
parent | Added removeAllFacets. Michi, repeat after me: "forgetting to return a (diff) | |
download | ice-abefe064ba1761a89410a428e27b55ab8cdfcb50.tar.bz2 ice-abefe064ba1761a89410a428e27b55ab8cdfcb50.tar.xz ice-abefe064ba1761a89410a428e27b55ab8cdfcb50.zip |
Added ObjectAdapter.removeAllFacets().
Diffstat (limited to 'java')
-rw-r--r-- | java/build.xml | 1 | ||||
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 9 | ||||
-rw-r--r-- | java/src/IceInternal/ServantManager.java | 19 | ||||
-rw-r--r-- | java/test/Ice/facets/AllTests.java | 30 |
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... "); |