summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/LocatorInfo.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-03-31 15:33:52 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-03-31 15:33:52 +0000
commit838347d01ccf547ed7829c7bc9810e9ef47f4c2c (patch)
treee8ceac7a34a721a9f4179fd8ea3617e9ea4446e0 /java/src/IceInternal/LocatorInfo.java
parentmerge from R2_1_branch to get windows installers automation changes (diff)
downloadice-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.java19
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)