summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpp/src/slice2javae/Gen.cpp19
-rw-r--r--javae/src/Ice/ObjectPrxHelperBase.java9
-rw-r--r--javae/src/IceInternal/Outgoing.java24
3 files changed, 32 insertions, 20 deletions
diff --git a/cpp/src/slice2javae/Gen.cpp b/cpp/src/slice2javae/Gen.cpp
index 36a91cd5009..ff8dcfcd2a0 100644
--- a/cpp/src/slice2javae/Gen.cpp
+++ b/cpp/src/slice2javae/Gen.cpp
@@ -2175,13 +2175,30 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
{
out << "return ";
}
- out << opName << spar << args << "__defaultContext()" << epar << ';';
+ out << opName << spar << args << "null, false" << epar << ';';
out << eb;
out << sp;
out << nl << "public " << retS << nl << opName << spar << params << "java.util.Hashtable __ctx" << epar;
writeThrowsClause(package, throws);
out << sb;
+ out << nl;
+ if(ret)
+ {
+ out << "return ";
+ }
+ out << opName << spar << args << "__ctx, true" << epar << ';';
+ out << eb;
+
+ out << sp;
+ out << nl << "public " << retS << nl << opName << spar << params
+ << "java.util.Hashtable __ctx, boolean __explicitCtx" << epar;
+ writeThrowsClause(package, throws);
+ out << sb;
+ out << nl << "if(__explicitCtx && __ctx == null)";
+ out << sb;
+ out << nl << "__ctx = _emptyContext;";
+ out << eb;
out << nl << "int __cnt = 0;";
out << nl << "while(true)";
out << sb;
diff --git a/javae/src/Ice/ObjectPrxHelperBase.java b/javae/src/Ice/ObjectPrxHelperBase.java
index b9aea7c6c72..e83fbd9c2ab 100644
--- a/javae/src/Ice/ObjectPrxHelperBase.java
+++ b/javae/src/Ice/ObjectPrxHelperBase.java
@@ -684,12 +684,6 @@ public class ObjectPrxHelperBase implements ObjectPrx
}
}
- protected java.util.Hashtable
- __defaultContext()
- {
- return _reference.getContext();
- }
-
//
// Only for use by IceInternal.ProxyFactory
//
@@ -710,6 +704,9 @@ public class ObjectPrxHelperBase implements ObjectPrx
_reference = ref;
}
+ protected static final java.util.Hashtable _emptyContext = new java.util.Hashtable();
+
protected IceInternal.Reference _reference;
private Connection _connection;
+
}
diff --git a/javae/src/IceInternal/Outgoing.java b/javae/src/IceInternal/Outgoing.java
index 5e7462f975b..b604a61826a 100644
--- a/javae/src/IceInternal/Outgoing.java
+++ b/javae/src/IceInternal/Outgoing.java
@@ -414,22 +414,20 @@ public final class Outgoing
if(context == null)
{
- _stream.writeSize(0);
+ context = _reference.getContext();
}
- else
+
+ final int sz = context.size();
+ _stream.writeSize(sz);
+ if(sz > 0)
{
- final int sz = context.size();
- _stream.writeSize(sz);
- if(sz > 0)
+ java.util.Enumeration e = context.keys();
+ while(e.hasMoreElements())
{
- java.util.Enumeration e = context.keys();
- while(e.hasMoreElements())
- {
- String key = (String)e.nextElement();
- String value = (String)context.get(key);
- _stream.writeString(key);
- _stream.writeString(value);
- }
+ String key = (String)e.nextElement();
+ String value = (String)context.get(key);
+ _stream.writeString(key);
+ _stream.writeString(value);
}
}