diff options
author | Mark Spruiell <mes@zeroc.com> | 2004-04-13 18:58:58 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2004-04-13 18:58:58 +0000 |
commit | 0fec5927b3ec89549c3e78b935f0f075120037d0 (patch) | |
tree | 4bb9c1b344948a4a16cb058c50760362dab364a1 /java/src/IceInternal/ServantManager.java | |
parent | facet fix (diff) | |
download | ice-0fec5927b3ec89549c3e78b935f0f075120037d0.tar.bz2 ice-0fec5927b3ec89549c3e78b935f0f075120037d0.tar.xz ice-0fec5927b3ec89549c3e78b935f0f075120037d0.zip |
align with C++ facet changes
Diffstat (limited to 'java/src/IceInternal/ServantManager.java')
-rw-r--r-- | java/src/IceInternal/ServantManager.java | 98 |
1 files changed, 79 insertions, 19 deletions
diff --git a/java/src/IceInternal/ServantManager.java b/java/src/IceInternal/ServantManager.java index 55c29f266fe..c08908c5400 100644 --- a/java/src/IceInternal/ServantManager.java +++ b/java/src/IceInternal/ServantManager.java @@ -17,45 +17,105 @@ package IceInternal; public final class ServantManager extends Thread { public synchronized void - addServant(Ice.Object servant, Ice.Identity ident) + addServant(Ice.Object servant, Ice.Identity ident, String facet) { assert(_instance != null); // Must not be called after destruction. - - Ice.Object o = (Ice.Object)_servantMap.get(ident); - if(o != null) - { - Ice.AlreadyRegisteredException ex = new Ice.AlreadyRegisteredException(); - ex.id = Ice.Util.identityToString(ident); - ex.kindOfObject = "servant"; - throw ex; - } - _servantMap.put(ident, servant); + if(facet == null) + { + facet = ""; + } + + java.util.HashMap m = (java.util.HashMap)_servantMap.get(ident); + if(m == null) + { + m = new java.util.HashMap(); + _servantMap.put(ident, m); + } + else + { + if(m.containsKey(facet)) + { + Ice.AlreadyRegisteredException ex = new Ice.AlreadyRegisteredException(); + ex.id = Ice.Util.identityToString(ident); + ex.kindOfObject = "servant"; + if(facet.length() > 0) + { + ex.id += " -f " + IceUtil.StringUtil.escapeString(facet, ""); + } + throw ex; + } + } + + m.put(facet, servant); } public synchronized void - removeServant(Ice.Identity ident) + removeServant(Ice.Identity ident, String facet) { assert(_instance != null); // Must not be called after destruction. - - Ice.Object o = (Ice.Object)_servantMap.get(ident); - if(o == null) + + if(facet == null) + { + facet = ""; + } + + java.util.HashMap m = (java.util.HashMap)_servantMap.get(ident); + Ice.Object obj = null; + if(m == null || (obj = (Ice.Object)m.get(facet)) == null) { Ice.NotRegisteredException ex = new Ice.NotRegisteredException(); ex.id = Ice.Util.identityToString(ident); ex.kindOfObject = "servant"; + if(facet.length() > 0) + { + ex.id += " -f " + IceUtil.StringUtil.escapeString(facet, ""); + } throw ex; } - _servantMap.remove(ident); + m.remove(facet); + if(m.isEmpty()) + { + _servantMap.remove(ident); + } } public synchronized Ice.Object - findServant(Ice.Identity ident) + findServant(Ice.Identity ident, String facet) + { + assert(_instance != null); // Must not be called after destruction. + + if(facet == null) + { + facet = ""; + } + + java.util.HashMap m = (java.util.HashMap)_servantMap.get(ident); + Ice.Object obj = null; + if(m != null) + { + obj = (Ice.Object)m.get(facet); + } + + return obj; + } + + public synchronized boolean + hasServant(Ice.Identity ident) { assert(_instance != null); // Must not be called after destruction. - return (Ice.Object)_servantMap.get(ident); + java.util.HashMap m = (java.util.HashMap)_servantMap.get(ident); + if(m == null) + { + return false; + } + else + { + assert(!m.isEmpty()); + return true; + } } public synchronized void @@ -67,7 +127,7 @@ public final class ServantManager extends Thread if(l != null) { Ice.AlreadyRegisteredException ex = new Ice.AlreadyRegisteredException(); - ex.id = category; + ex.id = IceUtil.StringUtil.escapeString(category, ""); ex.kindOfObject = "servant locator"; throw ex; } |