summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--javae/src/Ice/Connection.java2
-rw-r--r--javae/src/Ice/ObjectAdapter.java7
-rw-r--r--javae/src/Ice/ObjectPrx.java3
-rw-r--r--javae/src/Ice/ObjectPrxHelperBase.java26
-rw-r--r--javae/src/IceInternal/DirectReference.java26
-rw-r--r--javae/src/IceInternal/FixedReference.java15
-rw-r--r--javae/src/IceInternal/IndirectReference.java15
-rw-r--r--javae/src/IceInternal/Reference.java5
-rw-r--r--javae/src/IceInternal/ReferenceFactory.java20
-rw-r--r--javae/src/IceInternal/RoutableReference.java3
10 files changed, 104 insertions, 18 deletions
diff --git a/javae/src/Ice/Connection.java b/javae/src/Ice/Connection.java
index 202677185c0..4e600fa3d5a 100644
--- a/javae/src/Ice/Connection.java
+++ b/javae/src/Ice/Connection.java
@@ -907,7 +907,7 @@ public final class Connection
Connection[] connections = new Connection[1];
connections[0] = this;
IceInternal.Reference ref =
- _instance.referenceFactory().create(ident, "", IceInternal.Reference.ModeTwoway, connections);
+ _instance.referenceFactory().create(ident, null, "", IceInternal.Reference.ModeTwoway, connections);
return _instance.proxyFactory().referenceToProxy(ref);
}
diff --git a/javae/src/Ice/ObjectAdapter.java b/javae/src/Ice/ObjectAdapter.java
index 13d45152e29..5c6c1e78e60 100644
--- a/javae/src/Ice/ObjectAdapter.java
+++ b/javae/src/Ice/ObjectAdapter.java
@@ -535,7 +535,7 @@ public final class ObjectAdapter
Connection[] arr = new Connection[connections.size()];
connections.copyInto( arr);
IceInternal.Reference ref =
- _instance.referenceFactory().create(ident, "", IceInternal.Reference.ModeTwoway, arr);
+ _instance.referenceFactory().create(ident, null, "", IceInternal.Reference.ModeTwoway, arr);
return _instance.proxyFactory().referenceToProxy(ref);
}
@@ -830,7 +830,8 @@ public final class ObjectAdapter
//
Connection[] connections = new Connection[0];
IceInternal.Reference reference =
- _instance.referenceFactory().create(ident, facet, IceInternal.Reference.ModeTwoway, false, endpoints, null);
+ _instance.referenceFactory().create(ident, null, facet, IceInternal.Reference.ModeTwoway, false, endpoints,
+ null);
return _instance.proxyFactory().referenceToProxy(reference);
}
@@ -844,7 +845,7 @@ public final class ObjectAdapter
IceInternal.Endpoint[] endpoints = new IceInternal.Endpoint[0];
Connection[] connections = new Connection[0];
IceInternal.Reference reference =
- _instance.referenceFactory().create(ident, facet, IceInternal.Reference.ModeTwoway, false, id, null,
+ _instance.referenceFactory().create(ident, null, facet, IceInternal.Reference.ModeTwoway, false, id, null,
_locatorInfo);
return _instance.proxyFactory().referenceToProxy(reference);
}
diff --git a/javae/src/Ice/ObjectPrx.java b/javae/src/Ice/ObjectPrx.java
index b858e738de5..cea1f22f5eb 100644
--- a/javae/src/Ice/ObjectPrx.java
+++ b/javae/src/Ice/ObjectPrx.java
@@ -58,6 +58,9 @@ public interface ObjectPrx
ObjectPrx ice_newFacet(String newFacet);
ObjectPrx ice_facet(String newFacet);
+ String ice_getAdapterId();
+ ObjectPrx ice_adapterId(String newAdapterId);
+
ObjectPrx ice_router(Ice.RouterPrx router);
Ice.RouterPrx ice_getRouter();
diff --git a/javae/src/Ice/ObjectPrxHelperBase.java b/javae/src/Ice/ObjectPrxHelperBase.java
index e83fbd9c2ab..8ec714a9371 100644
--- a/javae/src/Ice/ObjectPrxHelperBase.java
+++ b/javae/src/Ice/ObjectPrxHelperBase.java
@@ -391,6 +391,32 @@ public class ObjectPrxHelperBase implements ObjectPrx
return ice_facet(newFacet);
}
+ public final String
+ ice_getAdapterId()
+ {
+ return _reference.getAdapterId();
+ }
+
+ public final ObjectPrx
+ ice_adapterId(String newAdapterId)
+ {
+ if(newAdapterId == null)
+ {
+ newAdapterId = "";
+ }
+
+ if(newAdapterId.equals(_reference.getAdapterId()))
+ {
+ return this;
+ }
+ else
+ {
+ ObjectPrxHelperBase proxy = new ObjectPrxHelperBase();
+ proxy.setup(_reference.changeAdapterId(newAdapterId));
+ return proxy;
+ }
+ }
+
public final Ice.RouterPrx
ice_getRouter()
{
diff --git a/javae/src/IceInternal/DirectReference.java b/javae/src/IceInternal/DirectReference.java
index 3886708e4cb..68aad8e3bf8 100644
--- a/javae/src/IceInternal/DirectReference.java
+++ b/javae/src/IceInternal/DirectReference.java
@@ -15,21 +15,43 @@ public class DirectReference extends RoutableReference
DirectReference(Instance inst,
Ice.Communicator com,
Ice.Identity ident,
+ java.util.Hashtable context,
String fs,
int md,
boolean sec,
Endpoint[] endpts,
RouterInfo rtrInfo)
{
- super(inst, com, ident, fs, md, sec, rtrInfo);
+ super(inst, com, ident, context, fs, md, sec, rtrInfo);
_endpoints = endpts;
}
- public Endpoint[] getEndpoints()
+ public Endpoint[]
+ getEndpoints()
{
return _endpoints;
}
+ public String
+ getAdapterId()
+ {
+ return "";
+ }
+
+ public Reference
+ changeAdapterId(String newAdapterId)
+ {
+ if(newAdapterId == null || newAdapterId.length() == 0)
+ {
+ return this;
+ }
+ LocatorInfo locatorInfo =
+ getInstance().locatorManager().get(getInstance().referenceFactory().getDefaultLocator());
+ return getInstance().referenceFactory().create(getIdentity(), getContext(), getFacet(), getMode(),
+ getSecure(), newAdapterId, getRouterInfo(),
+ locatorInfo);
+ }
+
public Reference
changeLocator(Ice.LocatorPrx newLocator)
{
diff --git a/javae/src/IceInternal/FixedReference.java b/javae/src/IceInternal/FixedReference.java
index deed94588b6..740187391e3 100644
--- a/javae/src/IceInternal/FixedReference.java
+++ b/javae/src/IceInternal/FixedReference.java
@@ -15,11 +15,12 @@ public class FixedReference extends Reference
FixedReference(Instance inst,
Ice.Communicator com,
Ice.Identity ident,
+ java.util.Hashtable context,
String fs,
int md,
Ice.Connection[] fixedConns)
{
- super(inst, com, ident, fs, md, false);
+ super(inst, com, ident, context, fs, md, false);
_fixedConnections = fixedConns;
}
@@ -29,6 +30,18 @@ public class FixedReference extends Reference
return new Endpoint[0];
}
+ public String
+ getAdapterId()
+ {
+ return "";
+ }
+
+ public Reference
+ changeAdapterId(String newAdapterId)
+ {
+ throw new Ice.FixedProxyException();
+ }
+
public Reference
changeRouter(Ice.RouterPrx newRouter)
{
diff --git a/javae/src/IceInternal/IndirectReference.java b/javae/src/IceInternal/IndirectReference.java
index d7437e92b2a..17b7061540c 100644
--- a/javae/src/IceInternal/IndirectReference.java
+++ b/javae/src/IceInternal/IndirectReference.java
@@ -15,6 +15,7 @@ public class IndirectReference extends RoutableReference
IndirectReference(Instance inst,
Ice.Communicator com,
Ice.Identity ident,
+ java.util.Hashtable context,
String fs,
int md,
boolean sec,
@@ -22,7 +23,7 @@ public class IndirectReference extends RoutableReference
RouterInfo rtrInfo,
LocatorInfo locInfo)
{
- super(inst, com, ident, fs, md, sec, rtrInfo);
+ super(inst, com, ident, context, fs, md, sec, rtrInfo);
_adapterId = adptid;
_locatorInfo = locInfo;
}
@@ -46,6 +47,18 @@ public class IndirectReference extends RoutableReference
}
public Reference
+ changeAdapterId(String newAdapterId)
+ {
+ if(_adapterId.equals(newAdapterId))
+ {
+ return this;
+ }
+ IndirectReference r = (IndirectReference)getInstance().referenceFactory().copy(this);
+ r._adapterId = newAdapterId;
+ return r;
+ }
+
+ public Reference
changeLocator(Ice.LocatorPrx newLocator)
{
LocatorInfo newLocatorInfo = getInstance().locatorManager().get(newLocator);
diff --git a/javae/src/IceInternal/Reference.java b/javae/src/IceInternal/Reference.java
index ac4aa96742f..25e85ee4f4c 100644
--- a/javae/src/IceInternal/Reference.java
+++ b/javae/src/IceInternal/Reference.java
@@ -72,6 +72,7 @@ public abstract class Reference
}
public abstract Endpoint[] getEndpoints();
+ public abstract String getAdapterId();
//
// The change* methods (here and in derived classes) create
@@ -163,6 +164,7 @@ public abstract class Reference
return r;
}
+ public abstract Reference changeAdapterId(String newAdapterId);
public abstract Reference changeRouter(Ice.RouterPrx newRouter);
public abstract Reference changeLocator(Ice.LocatorPrx newLocator);
@@ -434,6 +436,7 @@ public abstract class Reference
Reference(Instance inst,
Ice.Communicator com,
Ice.Identity ident,
+ java.util.Hashtable context,
String fac,
int md,
boolean sec)
@@ -453,7 +456,7 @@ public abstract class Reference
_mode = md;
_secure = sec;
_identity = ident;
- _context = _emptyContext;
+ _context = context == null ? _emptyContext : context;
_facet = fac;
_overrideTimeout = false;
_timeout = -1;
diff --git a/javae/src/IceInternal/ReferenceFactory.java b/javae/src/IceInternal/ReferenceFactory.java
index 7f941e22555..2bfd3e0d507 100644
--- a/javae/src/IceInternal/ReferenceFactory.java
+++ b/javae/src/IceInternal/ReferenceFactory.java
@@ -13,6 +13,7 @@ public final class ReferenceFactory
{
public synchronized Reference
create(Ice.Identity ident,
+ java.util.Hashtable context,
String facet,
int mode,
boolean secure,
@@ -32,11 +33,13 @@ public final class ReferenceFactory
//
// Create new reference
//
- return new DirectReference(_instance, _communicator, ident, facet, mode, secure, endpoints, routerInfo);
+ return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, endpoints,
+ routerInfo);
}
public synchronized Reference
create(Ice.Identity ident,
+ java.util.Hashtable context,
String facet,
int mode,
boolean secure,
@@ -57,12 +60,13 @@ public final class ReferenceFactory
//
// Create new reference
//
- return new IndirectReference(_instance, _communicator, ident, facet, mode, secure, adapterId,
+ return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, adapterId,
routerInfo, locatorInfo);
}
public synchronized Reference
create(Ice.Identity ident,
+ java.util.Hashtable context,
String facet,
int mode,
Ice.Connection[] fixedConnections)
@@ -80,7 +84,7 @@ public final class ReferenceFactory
//
// Create new reference
//
- return new FixedReference(_instance, _communicator, ident, facet, mode, fixedConnections);
+ return new FixedReference(_instance, _communicator, ident, context, facet, mode, fixedConnections);
}
public synchronized Reference
@@ -379,7 +383,7 @@ public final class ReferenceFactory
if(beg == -1)
{
- return create(ident, facet, mode, secure, "", routerInfo, locatorInfo);
+ return create(ident, null, facet, mode, secure, "", routerInfo, locatorInfo);
}
java.util.Vector endpoints = new java.util.Vector();
@@ -430,7 +434,7 @@ public final class ReferenceFactory
Endpoint[] endp = new Endpoint[endpoints.size()];
endpoints.copyInto(endp);
- return create(ident, facet, mode, secure, endp, routerInfo);
+ return create(ident, null, facet, mode, secure, endp, routerInfo);
}
else if(s.charAt(beg) == '@')
{
@@ -470,7 +474,7 @@ public final class ReferenceFactory
throw e;
}
adapter = token.value;
- return create(ident, facet, mode, secure, adapter, routerInfo, locatorInfo);
+ return create(ident, null, facet, mode, secure, adapter, routerInfo, locatorInfo);
}
Ice.ProxyParseException ex = new Ice.ProxyParseException();
@@ -531,13 +535,13 @@ public final class ReferenceFactory
{
endpoints[i] = _instance.endpointFactory().read(s);
}
- return create(ident, facet, mode, secure, endpoints, routerInfo);
+ return create(ident, null, facet, mode, secure, endpoints, routerInfo);
}
else
{
endpoints = new Endpoint[0];
adapterId = s.readString();
- return create(ident, facet, mode, secure, adapterId, routerInfo, locatorInfo);
+ return create(ident, null, facet, mode, secure, adapterId, routerInfo, locatorInfo);
}
}
diff --git a/javae/src/IceInternal/RoutableReference.java b/javae/src/IceInternal/RoutableReference.java
index ddc6beceddf..c675731a5ad 100644
--- a/javae/src/IceInternal/RoutableReference.java
+++ b/javae/src/IceInternal/RoutableReference.java
@@ -84,12 +84,13 @@ public abstract class RoutableReference extends Reference
RoutableReference(Instance inst,
Ice.Communicator com,
Ice.Identity ident,
+ java.util.Hashtable context,
String fac,
int md,
boolean secure,
RouterInfo rtrInfo)
{
- super(inst, com, ident, fac, md, secure);
+ super(inst, com, ident, context, fac, md, secure);
_routerInfo = rtrInfo;
}