summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectPrxHelper.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-01-29 06:49:10 +0000
committerMark Spruiell <mes@zeroc.com>2002-01-29 06:49:10 +0000
commit0001dc614d21380fb22a22566a44e6d2eae88542 (patch)
treec2a50cf5bd26da7ce3844146473989ebac902515 /java/src/Ice/ObjectPrxHelper.java
parentadding server (diff)
downloadice-0001dc614d21380fb22a22566a44e6d2eae88542.tar.bz2
ice-0001dc614d21380fb22a22566a44e6d2eae88542.tar.xz
ice-0001dc614d21380fb22a22566a44e6d2eae88542.zip
align with stable_31
Diffstat (limited to 'java/src/Ice/ObjectPrxHelper.java')
-rw-r--r--java/src/Ice/ObjectPrxHelper.java75
1 files changed, 72 insertions, 3 deletions
diff --git a/java/src/Ice/ObjectPrxHelper.java b/java/src/Ice/ObjectPrxHelper.java
index 1019b210cda..93aafe84e7e 100644
--- a/java/src/Ice/ObjectPrxHelper.java
+++ b/java/src/Ice/ObjectPrxHelper.java
@@ -289,6 +289,38 @@ public class ObjectPrxHelper implements ObjectPrx
}
}
+ public final ObjectPrx
+ ice_router(Ice.RouterPrx router)
+ {
+ IceInternal.Reference ref = _reference.changeRouter(router);
+ if (ref.equals(_reference))
+ {
+ return this;
+ }
+ else
+ {
+ ObjectPrxHelper proxy = new ObjectPrxHelper();
+ proxy.setup(ref);
+ return proxy;
+ }
+ }
+
+ public final ObjectPrx
+ ice_default()
+ {
+ IceInternal.Reference ref = _reference.changeDefault();
+ if (ref.equals(_reference))
+ {
+ return this;
+ }
+ else
+ {
+ ObjectPrxHelper proxy = new ObjectPrxHelper();
+ proxy.setup(ref);
+ return proxy;
+ }
+ }
+
public final void
ice_flush()
{
@@ -313,7 +345,34 @@ public class ObjectPrxHelper implements ObjectPrx
__copyFrom(ObjectPrx from)
{
ObjectPrxHelper h = (ObjectPrxHelper)from;
- setup(h.__reference());
+ IceInternal.Reference ref = null;
+ _ObjectDelM delegateM = null;
+
+ synchronized(from)
+ {
+ ref = h._reference;
+ try
+ {
+ delegateM = (_ObjectDelM)h._delegate;
+ }
+ catch (ClassCastException ex)
+ {
+ }
+ }
+
+ //
+ // No need to synchronize "*this", as this operation is only
+ // called upon initialization.
+ //
+
+ _reference = ref;
+
+ if (delegateM != null)
+ {
+ _ObjectDelM delegate = __createDelegateM();
+ delegate.__copyFrom(delegateM);
+ _delegate = delegate;
+ }
}
public final synchronized int
@@ -419,12 +478,12 @@ public class ObjectPrxHelper implements ObjectPrx
*/
}
- protected final synchronized _ObjectDel
+ public final synchronized _ObjectDel
__getDelegate()
{
if (_delegate == null)
{
- /* TODO: Server
+ /* TODO: Collocated
ObjectAdapter adapter = _reference.instance.objectAdapterFactory().
findObjectAdapter(this);
if (adapter != null)
@@ -439,6 +498,16 @@ public class ObjectPrxHelper implements ObjectPrx
_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.
+ //
+ if (_reference.routerInfo != null)
+ {
+ _reference.routerInfo.addProxy(this);
+ }
}
}