diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-01-29 06:49:10 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-01-29 06:49:10 +0000 |
commit | 0001dc614d21380fb22a22566a44e6d2eae88542 (patch) | |
tree | c2a50cf5bd26da7ce3844146473989ebac902515 /java/src/Ice/ObjectPrxHelper.java | |
parent | adding server (diff) | |
download | ice-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.java | 75 |
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); + } } } |