summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2004-05-20 19:52:04 +0000
committerBernard Normier <bernard@zeroc.com>2004-05-20 19:52:04 +0000
commitab6b7d91a0d4f27a9f1a289e7a95f653de03a248 (patch)
tree27eea95a640587461acd87ef489615e5718a481e /java
parentFixed strange Sun CC 5.5 release failure (diff)
downloadice-ab6b7d91a0d4f27a9f1a289e7a95f653de03a248.tar.bz2
ice-ab6b7d91a0d4f27a9f1a289e7a95f653de03a248.tar.xz
ice-ab6b7d91a0d4f27a9f1a289e7a95f653de03a248.zip
remove now returns the servant
Diffstat (limited to 'java')
-rw-r--r--java/src/Freeze/EvictorI.java23
-rw-r--r--java/src/Ice/ObjectAdapterI.java8
-rw-r--r--java/src/IceInternal/ServantManager.java6
3 files changed, 18 insertions, 19 deletions
diff --git a/java/src/Freeze/EvictorI.java b/java/src/Freeze/EvictorI.java
index dfb769c98a3..fc995e3a9b5 100644
--- a/java/src/Freeze/EvictorI.java
+++ b/java/src/Freeze/EvictorI.java
@@ -720,13 +720,13 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
}
- public void
+ public Ice.Object
remove(Ice.Identity ident)
{
- removeFacet(ident, "");
+ return removeFacet(ident, "");
}
- public void
+ public Ice.Object
removeFacet(Ice.Identity ident, String facet)
{
checkIdentity(ident);
@@ -752,7 +752,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
try
{
ObjectStore store = findStore(facet);
- boolean notThere = (store == null);
+ Ice.Object servant = null;
if(store != null)
{
@@ -763,11 +763,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
//
EvictorElement element = (EvictorElement) store.cache().pin(ident);
- if(element == null)
- {
- notThere = true;
- }
- else
+ if(element != null)
{
synchronized(this)
{
@@ -786,6 +782,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
{
case EvictorElement.clean:
{
+ servant = element.rec.servant;
element.status = EvictorElement.destroyed;
element.rec.servant = null;
addToModifiedQueue(element);
@@ -793,12 +790,14 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
}
case EvictorElement.created:
{
+ servant = element.rec.servant;
element.status = EvictorElement.dead;
element.rec.servant = null;
break;
}
case EvictorElement.modified:
{
+ servant = element.rec.servant;
element.status = EvictorElement.destroyed;
element.rec.servant = null;
//
@@ -811,7 +810,6 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
case EvictorElement.destroyed:
case EvictorElement.dead:
{
- notThere = true;
break;
}
default:
@@ -824,7 +822,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
if(element. keepCount > 0)
{
- assert notThere == false;
+ assert servant != null;
element.keepCount = 0;
//
@@ -846,7 +844,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
}
}
- if(notThere)
+ if(servant == null)
{
Ice.NotRegisteredException ex = new Ice.NotRegisteredException();
ex.kindOfObject = "servant";
@@ -870,6 +868,7 @@ class EvictorI extends Ice.LocalObjectImpl implements Evictor, Runnable
"Freeze.Evictor",
"removed " + objString);
}
+ return servant;
}
finally
{
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index 6d6512cc201..84ba086ed1c 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -325,19 +325,19 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
return addFacet(object, ident, facet);
}
- public void
+ public Ice.Object
remove(Identity ident)
{
- removeFacet(ident, "");
+ return removeFacet(ident, "");
}
- public synchronized void
+ public synchronized Ice.Object
removeFacet(Identity ident, String facet)
{
checkForDeactivation();
checkIdentity(ident);
- _servantManager.removeServant(ident, facet);
+ return _servantManager.removeServant(ident, facet);
}
public synchronized java.util.Map
diff --git a/java/src/IceInternal/ServantManager.java b/java/src/IceInternal/ServantManager.java
index 77c674756d2..4e89eb4aa9f 100644
--- a/java/src/IceInternal/ServantManager.java
+++ b/java/src/IceInternal/ServantManager.java
@@ -45,7 +45,7 @@ public final class ServantManager extends Thread
m.put(facet, servant);
}
- public synchronized void
+ public synchronized Ice.Object
removeServant(Ice.Identity ident, String facet)
{
assert(_instance != null); // Must not be called after destruction.
@@ -57,7 +57,7 @@ public final class ServantManager extends Thread
java.util.HashMap m = (java.util.HashMap)_servantMapMap.get(ident);
Ice.Object obj = null;
- if(m == null || (obj = (Ice.Object)m.get(facet)) == null)
+ if(m == null || (obj = (Ice.Object)m.remove(facet)) == null)
{
Ice.NotRegisteredException ex = new Ice.NotRegisteredException();
ex.id = Ice.Util.identityToString(ident);
@@ -69,11 +69,11 @@ public final class ServantManager extends Thread
throw ex;
}
- m.remove(facet);
if(m.isEmpty())
{
_servantMapMap.remove(ident);
}
+ return obj;
}
public synchronized java.util.Map