summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/ServantManager.java
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2009-03-26 11:34:24 -0230
committerDwayne Boone <dwayne@zeroc.com>2009-03-26 11:34:24 -0230
commit0de45cd71fa21bcb20b8a3f754ff20cdf329ff23 (patch)
tree06c0fd3304362d39a56df0a234e90b3f84687edc /java/src/IceInternal/ServantManager.java
parentMore fixes to FixUtil.py (diff)
downloadice-0de45cd71fa21bcb20b8a3f754ff20cdf329ff23.tar.bz2
ice-0de45cd71fa21bcb20b8a3f754ff20cdf329ff23.tar.xz
ice-0de45cd71fa21bcb20b8a3f754ff20cdf329ff23.zip
Bug 2511 - add default servants
Diffstat (limited to 'java/src/IceInternal/ServantManager.java')
-rw-r--r--java/src/IceInternal/ServantManager.java54
1 files changed, 53 insertions, 1 deletions
diff --git a/java/src/IceInternal/ServantManager.java b/java/src/IceInternal/ServantManager.java
index 83652e87882..7fe206c0d14 100644
--- a/java/src/IceInternal/ServantManager.java
+++ b/java/src/IceInternal/ServantManager.java
@@ -45,6 +45,23 @@ public final class ServantManager
m.put(facet, servant);
}
+ public synchronized void
+ addDefaultServant(Ice.Object servant, String category)
+ {
+ assert(_instance != null); // Must not be called after destruction
+
+ Ice.Object obj = _defaultServantMap.get(category);
+ if(obj != null)
+ {
+ Ice.AlreadyRegisteredException ex = new Ice.AlreadyRegisteredException();
+ ex.kindOfObject = "default servant";
+ ex.id = category;
+ throw ex;
+ }
+
+ _defaultServantMap.put(category, servant);
+ }
+
public synchronized Ice.Object
removeServant(Ice.Identity ident, String facet)
{
@@ -76,6 +93,24 @@ public final class ServantManager
return obj;
}
+ public synchronized Ice.Object
+ removeDefaultServant(String category)
+ {
+ assert(_instance != null); // Must not be called after destruction.
+
+ Ice.Object obj = _defaultServantMap.get(category);
+ if(obj == null)
+ {
+ Ice.NotRegisteredException ex = new Ice.NotRegisteredException();
+ ex.kindOfObject = "default servant";
+ ex.id = category;
+ throw ex;
+ }
+
+ _defaultServantMap.remove(category);
+ return obj;
+ }
+
public synchronized java.util.Map<String, Ice.Object>
removeAllFacets(Ice.Identity ident)
{
@@ -113,7 +148,15 @@ public final class ServantManager
java.util.Map<String, Ice.Object> m = _servantMapMap.get(ident);
Ice.Object obj = null;
- if(m != null)
+ if(m == null)
+ {
+ obj = _defaultServantMap.get(ident.category);
+ if(obj == null)
+ {
+ obj = _defaultServantMap.get("");
+ }
+ }
+ else
{
obj = m.get(facet);
}
@@ -121,6 +164,14 @@ public final class ServantManager
return obj;
}
+ public synchronized Ice.Object
+ findDefaultServant(String category)
+ {
+ assert(_instance != null); // Must not be called after destruction.
+
+ return _defaultServantMap.get(category);
+ }
+
public synchronized java.util.Map<String, Ice.Object>
findAllFacets(Ice.Identity ident)
{
@@ -253,5 +304,6 @@ public final class ServantManager
final private String _adapterName;
private java.util.Map<Ice.Identity, java.util.Map<String, Ice.Object> > _servantMapMap =
new java.util.HashMap<Ice.Identity, java.util.Map<String, Ice.Object> >();
+ private java.util.Map<String, Ice.Object> _defaultServantMap = new java.util.HashMap<String, Ice.Object>();
private java.util.Map<String, Ice.ServantLocator> _locatorMap = new java.util.HashMap<String, Ice.ServantLocator>();
}