summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectAdapterI.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2005-09-19 22:32:11 +0000
committerMatthew Newhook <matthew@zeroc.com>2005-09-19 22:32:11 +0000
commitc3923de822e94b8765c7081081ef5684f92f1c49 (patch)
treeb29ef852397cd34e2c0d325f76d205ddd6949dcc /java/src/Ice/ObjectAdapterI.java
parentFixing some typo bugs in the binary builder script. (diff)
downloadice-c3923de822e94b8765c7081081ef5684f92f1c49.tar.bz2
ice-c3923de822e94b8765c7081081ef5684f92f1c49.tar.xz
ice-c3923de822e94b8765c7081081ef5684f92f1c49.zip
Fixed problem with ObjectAdapter.addRouter not removing duplicate endpoints
correctly.
Diffstat (limited to 'java/src/Ice/ObjectAdapterI.java')
-rw-r--r--java/src/Ice/ObjectAdapterI.java33
1 files changed, 24 insertions, 9 deletions
diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java
index f642d2074fb..09cd32eef9a 100644
--- a/java/src/Ice/ObjectAdapterI.java
+++ b/java/src/Ice/ObjectAdapterI.java
@@ -509,15 +509,23 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
_routerEndpoints.add(endpoints[i]);
}
java.util.Collections.sort(_routerEndpoints); // Must be sorted.
- for(int i = 0; i < _routerEndpoints.size() - 1; ++i)
- {
+ //
+ // Remove duplicate endpoints, so we have a list of unique
+ // endpoints.
+ //
+ for(int i = 0; i < _routerEndpoints.size()-1;)
+ {
java.lang.Object o1 = _routerEndpoints.get(i);
java.lang.Object o2 = _routerEndpoints.get(i + 1);
if(o1.equals(o2))
{
_routerEndpoints.remove(i);
}
- }
+ else
+ {
+ ++i;
+ }
+ }
//
// Associate this object adapter with the router. This way,
@@ -546,9 +554,8 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
//
// Rebuild the router endpoints from our set of router infos.
//
- _routerEndpoints = new java.util.ArrayList();
- java.util.Iterator p = _routerInfos.iterator();
- while(p.hasNext())
+ _routerEndpoints.clear();
+ for(java.util.Iterator p = _routerInfos.iterator(); p.hasNext();)
{
IceInternal.RouterInfo curr = (IceInternal.RouterInfo)p.next();
if(curr == routerInfo)
@@ -565,15 +572,23 @@ public final class ObjectAdapterI extends LocalObjectImpl implements ObjectAdapt
}
java.util.Collections.sort(_routerEndpoints); // Must be sorted.
- for(int i = 0; i < _routerEndpoints.size() - 1; ++i)
- {
+ //
+ // Remove duplicate endpoints, so we have a list of unique
+ // endpoints.
+ //
+ for(int i = 0; i < _routerEndpoints.size()-1;)
+ {
java.lang.Object o1 = _routerEndpoints.get(i);
java.lang.Object o2 = _routerEndpoints.get(i + 1);
if(o1.equals(o2))
{
_routerEndpoints.remove(i);
}
- }
+ else
+ {
+ ++i;
+ }
+ }
//
// Clear this object adapter with the router.