summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/CHANGES8
-rw-r--r--java/demo/Ice/hello/Client.java24
-rw-r--r--java/src/Ice/ObjectPrxHelperBase.java111
3 files changed, 68 insertions, 75 deletions
diff --git a/java/CHANGES b/java/CHANGES
index 8dc2ae5b724..7fcb083a8f3 100644
--- a/java/CHANGES
+++ b/java/CHANGES
@@ -1,6 +1,14 @@
Changes since version 3.2.X (binary incompatible)
-------------------------------------------------
+- A number of proxy methods (ice_timeout(), ice_oneway() etc.) now
+ return a proxy of the same type as the target. This allows you to
+ cast the return proxy instead using uncheckedCast on the Helper.
+ For example, you can now write:
+ hello = (HelloPrx)hello.ice_oneway();
+ instead of:
+ hello = HelloPrxHelper.uncheckedCast(hello.ice_oneway());
+
- Added support for a password callback in IceSSL. Also added new
properties for specifying the name of a password callback class or
certificate verifier class. See manual for more details.
diff --git a/java/demo/Ice/hello/Client.java b/java/demo/Ice/hello/Client.java
index cb8f29a5e68..47ab65ea2a6 100644
--- a/java/demo/Ice/hello/Client.java
+++ b/java/demo/Ice/hello/Client.java
@@ -69,10 +69,10 @@ public class Client extends Ice.Application
System.err.println("invalid proxy");
return 1;
}
- HelloPrx oneway = HelloPrxHelper.uncheckedCast(twoway.ice_oneway());
- HelloPrx batchOneway = HelloPrxHelper.uncheckedCast(twoway.ice_batchOneway());
- HelloPrx datagram = HelloPrxHelper.uncheckedCast(twoway.ice_datagram());
- HelloPrx batchDatagram = HelloPrxHelper.uncheckedCast(twoway.ice_batchDatagram());
+ HelloPrx oneway = (HelloPrx)twoway.ice_oneway();
+ HelloPrx batchOneway = (HelloPrx)twoway.ice_batchOneway();
+ HelloPrx datagram = (HelloPrx)twoway.ice_datagram();
+ HelloPrx batchDatagram = (HelloPrx)twoway.ice_batchDatagram();
boolean secure = false;
int timeout = -1;
@@ -143,9 +143,9 @@ public class Client extends Ice.Application
timeout = -1;
}
- twoway = HelloPrxHelper.uncheckedCast(twoway.ice_timeout(timeout));
- oneway = HelloPrxHelper.uncheckedCast(oneway.ice_timeout(timeout));
- batchOneway = HelloPrxHelper.uncheckedCast(batchOneway.ice_timeout(timeout));
+ twoway = (HelloPrx)twoway.ice_timeout(timeout);
+ oneway = (HelloPrx)oneway.ice_timeout(timeout);
+ batchOneway = (HelloPrx)batchOneway.ice_timeout(timeout);
if(timeout == -1)
{
@@ -180,11 +180,11 @@ public class Client extends Ice.Application
{
secure = !secure;
- twoway = HelloPrxHelper.uncheckedCast(twoway.ice_secure(secure));
- oneway = HelloPrxHelper.uncheckedCast(oneway.ice_secure(secure));
- batchOneway = HelloPrxHelper.uncheckedCast(batchOneway.ice_secure(secure));
- datagram = HelloPrxHelper.uncheckedCast(datagram.ice_secure(secure));
- batchDatagram = HelloPrxHelper.uncheckedCast(batchDatagram.ice_secure(secure));
+ twoway = (HelloPrx)twoway.ice_secure(secure);
+ oneway = (HelloPrx)oneway.ice_secure(secure);
+ batchOneway = (HelloPrx)batchOneway.ice_secure(secure);
+ datagram = (HelloPrx)datagram.ice_secure(secure);
+ batchDatagram = (HelloPrx)batchDatagram.ice_secure(secure);
if(secure)
{
diff --git a/java/src/Ice/ObjectPrxHelperBase.java b/java/src/Ice/ObjectPrxHelperBase.java
index 3bcc8527cb3..72df0844773 100644
--- a/java/src/Ice/ObjectPrxHelperBase.java
+++ b/java/src/Ice/ObjectPrxHelperBase.java
@@ -330,9 +330,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
public final ObjectPrx
ice_context(java.util.Map newContext)
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeContext(newContext));
- return proxy;
+ return newInstance(_reference.changeContext(newContext));
}
/**
@@ -350,9 +348,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
public final ObjectPrx
ice_defaultContext()
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.defaultContext());
- return proxy;
+ return newInstance(_reference.defaultContext());
}
public final String
@@ -410,9 +406,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeAdapterId(newAdapterId));
- return proxy;
+ return newInstance(_reference.changeAdapterId(newAdapterId));
}
}
@@ -442,9 +436,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
{
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(edpts));
- return proxy;
+ return newInstance(_reference.changeEndpoints(edpts));
}
}
@@ -472,9 +464,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeLocatorCacheTimeout(newTimeout));
- return proxy;
+ return newInstance(_reference.changeLocatorCacheTimeout(newTimeout));
}
}
@@ -493,9 +483,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeCacheConnection(newCache));
- return proxy;
+ return newInstance(_reference.changeCacheConnection(newCache));
}
}
@@ -514,9 +502,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeEndpointSelection(newType));
- return proxy;
+ return newInstance(_reference.changeEndpointSelection(newType));
}
}
@@ -535,9 +521,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeSecure(b));
- return proxy;
+ return newInstance(_reference.changeSecure(b));
}
}
@@ -556,9 +540,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changePreferSecure(b));
- return proxy;
+ return newInstance(_reference.changePreferSecure(b));
}
}
@@ -579,9 +561,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -602,9 +582,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -632,9 +610,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeCollocationOptimization(b));
- return proxy;
+ return newInstance(_reference.changeCollocationOptimization(b));
}
}
@@ -647,9 +623,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeMode(IceInternal.Reference.ModeTwoway));
- return proxy;
+ return newInstance(_reference.changeMode(IceInternal.Reference.ModeTwoway));
}
}
@@ -668,9 +642,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeMode(IceInternal.Reference.ModeOneway));
- return proxy;
+ return newInstance(_reference.changeMode(IceInternal.Reference.ModeOneway));
}
}
@@ -689,9 +661,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeMode(IceInternal.Reference.ModeBatchOneway));
- return proxy;
+ return newInstance(_reference.changeMode(IceInternal.Reference.ModeBatchOneway));
}
}
@@ -710,9 +680,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeMode(IceInternal.Reference.ModeDatagram));
- return proxy;
+ return newInstance(_reference.changeMode(IceInternal.Reference.ModeDatagram));
}
}
@@ -731,9 +699,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(_reference.changeMode(IceInternal.Reference.ModeBatchDatagram));
- return proxy;
+ return newInstance(_reference.changeMode(IceInternal.Reference.ModeBatchDatagram));
}
}
@@ -753,9 +719,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -769,9 +733,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -785,9 +747,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -807,9 +767,7 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
else
{
- ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
- proxy.setup(ref);
- return proxy;
+ return newInstance(ref);
}
}
@@ -1109,6 +1067,33 @@ public class ObjectPrxHelperBase implements ObjectPrx
_reference = ref;
}
+ private final ObjectPrxHelperBase
+ newInstance(IceInternal.Reference ref)
+ {
+ try
+ {
+ ObjectPrxHelperBase proxy = (ObjectPrxHelperBase)getClass().newInstance();
+ proxy.setup(ref);
+ return proxy;
+ }
+ catch(InstantiationException e)
+ {
+ //
+ // Impossible
+ //
+ assert false;
+ return null;
+ }
+ catch(IllegalAccessException e)
+ {
+ //
+ // Impossible
+ //
+ assert false;
+ return null;
+ }
+ }
+
protected static final java.util.Map _emptyContext = new java.util.HashMap();
private IceInternal.Reference _reference;