diff options
author | Bernard Normier <bernard@zeroc.com> | 2004-05-20 19:52:04 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2004-05-20 19:52:04 +0000 |
commit | ab6b7d91a0d4f27a9f1a289e7a95f653de03a248 (patch) | |
tree | 27eea95a640587461acd87ef489615e5718a481e /java | |
parent | Fixed strange Sun CC 5.5 release failure (diff) | |
download | ice-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.java | 23 | ||||
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 8 | ||||
-rw-r--r-- | java/src/IceInternal/ServantManager.java | 6 |
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 |