diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-03-31 15:33:52 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-03-31 15:33:52 +0000 |
commit | 838347d01ccf547ed7829c7bc9810e9ef47f4c2c (patch) | |
tree | e8ceac7a34a721a9f4179fd8ea3617e9ea4446e0 /java/src/IceInternal/LocatorInfo.java | |
parent | merge from R2_1_branch to get windows installers automation changes (diff) | |
download | ice-838347d01ccf547ed7829c7bc9810e9ef47f4c2c.tar.bz2 ice-838347d01ccf547ed7829c7bc9810e9ef47f4c2c.tar.xz ice-838347d01ccf547ed7829c7bc9810e9ef47f4c2c.zip |
ObjectNotExistException are now always retried.
Diffstat (limited to 'java/src/IceInternal/LocatorInfo.java')
-rw-r--r-- | java/src/IceInternal/LocatorInfo.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/java/src/IceInternal/LocatorInfo.java b/java/src/IceInternal/LocatorInfo.java index 5e77ee05907..35b096b15b9 100644 --- a/java/src/IceInternal/LocatorInfo.java +++ b/java/src/IceInternal/LocatorInfo.java @@ -111,19 +111,22 @@ public final class LocatorInfo } else { + boolean objectCached = true; object = _table.getProxy(identity); if(object == null) { - cached.value = false; + objectCached = false; object = _locator.findObjectById(identity); } - + + boolean endpointsCached = true; if(object != null) { Reference r = ((Ice.ObjectPrxHelperBase)object).__reference(); if(r instanceof DirectReference) { + endpointsCached = false; DirectReference odr = (DirectReference)r; endpoints = odr.getEndpoints(); } @@ -132,15 +135,19 @@ public final class LocatorInfo IndirectReference oir = (IndirectReference)r; if(oir.getAdapterId().length() > 0) { - endpoints = getEndpoints(oir, cached); + Ice.BooleanHolder c = new Ice.BooleanHolder(); + endpoints = getEndpoints(oir, c); + endpointsCached = c.value; } } } - if(!cached.value && endpoints != null && endpoints.length > 0) + if(!objectCached && endpoints != null && endpoints.length > 0) { _table.addProxy(identity, object); } + + cached.value = objectCached || endpointsCached; } } catch(Ice.AdapterNotFoundException ex) @@ -204,7 +211,7 @@ public final class LocatorInfo Ice.ObjectPrx object = _table.removeProxy(ref.getIdentity()); if(object != null) { - if(object instanceof IndirectReference) + if(((Ice.ObjectPrxHelperBase)object).__reference() instanceof IndirectReference) { IndirectReference oir = (IndirectReference)((Ice.ObjectPrxHelperBase)object).__reference(); if(oir.getAdapterId().length() > 0) @@ -241,7 +248,7 @@ public final class LocatorInfo Ice.ObjectPrx object = _table.removeProxy(ref.getIdentity()); if(object != null) { - if(object instanceof IndirectReference) + if(((Ice.ObjectPrxHelperBase)object).__reference() instanceof IndirectReference) { IndirectReference oir = (IndirectReference)((Ice.ObjectPrxHelperBase)object).__reference(); if(oir.getAdapterId().length() > 0) |