summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectPrxHelperBase.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-02-14 12:06:57 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-02-14 12:06:57 +0000
commit770b66fc97582743bf045f709feac5c468c9d06d (patch)
treede6f5b22ed6c5a22d072337a647c9d3ac626eaa1 /java/src/Ice/ObjectPrxHelperBase.java
parentFixed another race condition in the activator test suite. (diff)
downloadice-770b66fc97582743bf045f709feac5c468c9d06d.tar.bz2
ice-770b66fc97582743bf045f709feac5c468c9d06d.tar.xz
ice-770b66fc97582743bf045f709feac5c468c9d06d.zip
- Added ice_cacheConnection, ice_endpointSelection
- Fixed a bug where connection.close(true) would print a connection warning. - Fixed a bug where ice_newEndpoints would throw a ClassCastException - Added test/Ice/binding test suite.
Diffstat (limited to 'java/src/Ice/ObjectPrxHelperBase.java')
-rw-r--r--java/src/Ice/ObjectPrxHelperBase.java145
1 files changed, 100 insertions, 45 deletions
diff --git a/java/src/Ice/ObjectPrxHelperBase.java b/java/src/Ice/ObjectPrxHelperBase.java
index ea1c40ad67e..125e227438e 100644
--- a/java/src/Ice/ObjectPrxHelperBase.java
+++ b/java/src/Ice/ObjectPrxHelperBase.java
@@ -310,8 +310,10 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
+ IceInternal.EndpointI[] edpts = new IceInternal.EndpointI[newEndpoints.length];
+ edpts = (IceInternal.EndpointI[])java.util.Arrays.asList(newEndpoints).toArray(edpts);
ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeEndpoints((IceInternal.EndpointI[])newEndpoints));
+ proxy.setup(_reference.changeEndpoints(edpts));
return proxy;
}
}
@@ -337,6 +339,48 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
}
+ public final boolean
+ ice_getCacheConnection()
+ {
+ return _reference.getCacheConnection();
+ }
+
+ public final ObjectPrx
+ ice_cacheConnection(boolean newCache)
+ {
+ if(newCache == _reference.getCacheConnection())
+ {
+ return this;
+ }
+ else
+ {
+ ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
+ proxy.setup(_reference.changeCacheConnection(newCache));
+ return proxy;
+ }
+ }
+
+ public final Ice.EndpointSelectionType
+ ice_getEndpointSelection()
+ {
+ return _reference.getEndpointSelection();
+ }
+
+ public final ObjectPrx
+ ice_endpointSelection(Ice.EndpointSelectionType newType)
+ {
+ if(newType == _reference.getEndpointSelection())
+ {
+ return this;
+ }
+ else
+ {
+ ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
+ proxy.setup(_reference.changeEndpointSelection(newType));
+ return proxy;
+ }
+ }
+
public final ObjectPrx
ice_twoway()
{
@@ -636,18 +680,21 @@ public class ObjectPrxHelperBase implements ObjectPrx
_reference = ref;
- if(delegateD != null)
- {
- _ObjectDelD delegate = __createDelegateD();
- delegate.__copyFrom(delegateD);
- _delegate = delegate;
- }
- else if(delegateM != null)
- {
- _ObjectDelM delegate = __createDelegateM();
- delegate.__copyFrom(delegateM);
- _delegate = delegate;
- }
+ if(_reference.getCacheConnection())
+ {
+ if(delegateD != null)
+ {
+ _ObjectDelD delegate = __createDelegateD();
+ delegate.__copyFrom(delegateD);
+ _delegate = delegate;
+ }
+ else if(delegateM != null)
+ {
+ _ObjectDelM delegate = __createDelegateM();
+ delegate.__copyFrom(delegateM);
+ _delegate = delegate;
+ }
+ }
}
public final int
@@ -702,45 +749,53 @@ public class ObjectPrxHelperBase implements ObjectPrx
public final synchronized _ObjectDel
__getDelegate()
{
- if(_delegate == null)
+ if(_delegate != null)
{
- if(_reference.getCollocationOptimization())
+ return _delegate;
+ }
+
+ _ObjectDel delegate = null;
+ if(_reference.getCollocationOptimization())
+ {
+ ObjectAdapter adapter = _reference.getInstance().objectAdapterFactory().findObjectAdapter(this);
+ if(adapter != null)
{
- ObjectAdapter adapter = _reference.getInstance().objectAdapterFactory().findObjectAdapter(this);
- if(adapter != null)
- {
- _ObjectDelD delegate = __createDelegateD();
- delegate.setup(_reference, adapter);
- _delegate = delegate;
- }
+ _ObjectDelD d = __createDelegateD();
+ d.setup(_reference, adapter);
+ delegate = d;
}
+ }
- if(_delegate == null)
- {
- _ObjectDelM delegate = __createDelegateM();
- delegate.setup(_reference);
- _delegate = delegate;
-
- //
- // If this proxy is for a non-local object, and we are
- // using a router, then add this proxy to the router info
- // object.
- //
- try
- {
- IceInternal.RoutableReference rr = (IceInternal.RoutableReference)_reference;
- if(rr != null && rr.getRouterInfo() != null)
- {
- rr.getRouterInfo().addProxy(this);
- }
- }
- catch(ClassCastException e)
+ if(delegate == null)
+ {
+ _ObjectDelM d = __createDelegateM();
+ d.setup(_reference);
+ delegate = d;
+
+ //
+ // If this proxy is for a non-local object, and we are
+ // using a router, then add this proxy to the router info
+ // object.
+ //
+ try
+ {
+ IceInternal.RoutableReference rr = (IceInternal.RoutableReference)_reference;
+ if(rr != null && rr.getRouterInfo() != null)
{
+ rr.getRouterInfo().addProxy(this);
}
- }
- }
+ }
+ catch(ClassCastException e)
+ {
+ }
+ }
+
+ if(_reference.getCacheConnection())
+ {
+ _delegate = delegate;
+ }
- return _delegate;
+ return delegate;
}
protected _ObjectDelM