summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/RoutableReference.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/RoutableReference.java')
-rw-r--r--java/src/IceInternal/RoutableReference.java41
1 files changed, 34 insertions, 7 deletions
diff --git a/java/src/IceInternal/RoutableReference.java b/java/src/IceInternal/RoutableReference.java
index bcd79b01591..a98d561e2a3 100644
--- a/java/src/IceInternal/RoutableReference.java
+++ b/java/src/IceInternal/RoutableReference.java
@@ -33,29 +33,50 @@ public abstract class RoutableReference extends Reference
}
public final boolean
+ getSecure()
+ {
+ return _secure;
+ }
+
+ public final boolean
getCollocationOptimization()
{
return _collocationOptimization;
}
public Reference
- changeRouter(Ice.RouterPrx newRouter)
+ changeDefault()
{
- RouterInfo newRouterInfo = getInstance().routerManager().get(newRouter);
- if(newRouterInfo == _routerInfo)
+ RoutableReference r = (RoutableReference)super.changeDefault();
+ r._secure = false;
+ r._routerInfo = getInstance().routerManager().get(getInstance().referenceFactory().getDefaultRouter());
+ r._collocationOptimization = false;
+ return r;
+ }
+
+ public Reference
+ changeSecure(boolean newSecure)
+ {
+ if(newSecure == _secure)
{
return this;
}
RoutableReference r = (RoutableReference)getInstance().referenceFactory().copy(this);
- r._routerInfo = newRouterInfo;
+ r._secure = newSecure;
return r;
}
public Reference
- changeDefault()
+ changeRouter(Ice.RouterPrx newRouter)
{
+ RouterInfo newRouterInfo = getInstance().routerManager().get(newRouter);
+ if((newRouterInfo == _routerInfo) ||
+ (newRouterInfo != null && _routerInfo != null && newRouterInfo.equals(_routerInfo)))
+ {
+ return this;
+ }
RoutableReference r = (RoutableReference)getInstance().referenceFactory().copy(this);
- r._routerInfo = getInstance().routerManager().get(getInstance().referenceFactory().getDefaultRouter());
+ r._routerInfo = newRouterInfo;
return r;
}
@@ -83,6 +104,10 @@ public abstract class RoutableReference extends Reference
return false;
}
RoutableReference rhs = (RoutableReference)obj; // Guaranteed to succeed.
+ if(_secure != rhs._secure)
+ {
+ return false;
+ }
if(_collocationOptimization != rhs._collocationOptimization)
{
return false;
@@ -100,11 +125,13 @@ public abstract class RoutableReference extends Reference
RouterInfo rtrInfo,
boolean collocationOpt)
{
- super(inst, ident, ctx, fac, md, sec);
+ super(inst, ident, ctx, fac, md);
+ _secure = sec;
_routerInfo = rtrInfo;
_collocationOptimization = collocationOpt;
}
+ private boolean _secure;
private RouterInfo _routerInfo; // Null if no router is used.
private boolean _collocationOptimization;
}