summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/CHANGES6
-rw-r--r--java/src/Ice/InputStreamI.java5
-rw-r--r--java/src/Ice/ObjectReader.java4
-rw-r--r--java/src/Ice/ObjectWriter.java4
-rw-r--r--java/src/Ice/OutputStreamI.java11
-rw-r--r--java/src/Ice/UserExceptionWriter.java57
-rw-r--r--java/src/IceInternal/BasicInputStream.java22
-rw-r--r--java/src/IceInternal/BasicOutputStream.java22
-rw-r--r--java/src/IceInternal/BasicStream.java20
9 files changed, 98 insertions, 53 deletions
diff --git a/java/CHANGES b/java/CHANGES
index 7a3c995a098..dfc91dd86bb 100644
--- a/java/CHANGES
+++ b/java/CHANGES
@@ -8,8 +8,11 @@ Changes since version 3.2.X (binary incompatible)
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
@@ -18,7 +21,7 @@ Changes since version 3.2.X (binary incompatible)
- Setting IceBox.ServiceManager.Endpoints is no longer necessary
in order to run the IceBox service. If no endpoints are specified
- the the ServiceManager interface is not created.
+ then the ServiceManager interface is not created.
- The property Ice.Plugin.Logger is now reserved to allow setting
of the communicator's logger from properties. This plugin must
@@ -50,6 +53,7 @@ Changes since version 3.2.X (binary incompatible)
present when the adapter was created.
- Freeze evictor update:
+
- the existing evictor was renamed BackgroundSaveEvictor
- added new TransactionalEvictor
diff --git a/java/src/Ice/InputStreamI.java b/java/src/Ice/InputStreamI.java
index b1b1975811a..4cd30cbd4aa 100644
--- a/java/src/Ice/InputStreamI.java
+++ b/java/src/Ice/InputStreamI.java
@@ -16,7 +16,8 @@ public class InputStreamI implements InputStream
{
_communicator = communicator;
- _is = new IceInternal.BasicInputStream(Util.getInstance(communicator), this);
+ _is = new IceInternal.BasicStream(Util.getInstance(communicator));
+ _is.closure(this);
_is.resize(data.length, true);
java.nio.ByteBuffer buf = _is.prepareRead();
buf.position(0);
@@ -231,5 +232,5 @@ public class InputStreamI implements InputStream
}
private Communicator _communicator;
- private IceInternal.BasicInputStream _is;
+ private IceInternal.BasicStream _is;
}
diff --git a/java/src/Ice/ObjectReader.java b/java/src/Ice/ObjectReader.java
index f63570f138c..a3c564260e1 100644
--- a/java/src/Ice/ObjectReader.java
+++ b/java/src/Ice/ObjectReader.java
@@ -22,7 +22,7 @@ public abstract class ObjectReader extends ObjectImpl
public void
__read(IceInternal.BasicStream is, boolean rid)
{
- IceInternal.BasicInputStream bis = (IceInternal.BasicInputStream)is;
- read(bis._in, rid);
+ InputStream stream = (InputStream)is.closure();
+ read(stream, rid);
}
}
diff --git a/java/src/Ice/ObjectWriter.java b/java/src/Ice/ObjectWriter.java
index fc5afeca4f4..1d8e57fa2d4 100644
--- a/java/src/Ice/ObjectWriter.java
+++ b/java/src/Ice/ObjectWriter.java
@@ -16,8 +16,8 @@ public abstract class ObjectWriter extends ObjectImpl
public void
__write(IceInternal.BasicStream os)
{
- IceInternal.BasicOutputStream bos = (IceInternal.BasicOutputStream)os;
- write(bos._out);
+ OutputStream stream = (OutputStream)os.closure();
+ write(stream);
}
public void
diff --git a/java/src/Ice/OutputStreamI.java b/java/src/Ice/OutputStreamI.java
index 188080d4f9c..2a0884014ef 100644
--- a/java/src/Ice/OutputStreamI.java
+++ b/java/src/Ice/OutputStreamI.java
@@ -14,8 +14,15 @@ public class OutputStreamI implements OutputStream
public
OutputStreamI(Communicator communicator)
{
+ this(communicator, new IceInternal.BasicStream(Util.getInstance(communicator)));
+ }
+
+ public
+ OutputStreamI(Communicator communicator, IceInternal.BasicStream os)
+ {
_communicator = communicator;
- _os = new IceInternal.BasicOutputStream(Util.getInstance(communicator), this);
+ _os = os;
+ _os.closure(this);
}
public Communicator
@@ -200,5 +207,5 @@ public class OutputStreamI implements OutputStream
}
private Communicator _communicator;
- private IceInternal.BasicOutputStream _os;
+ private IceInternal.BasicStream _os;
}
diff --git a/java/src/Ice/UserExceptionWriter.java b/java/src/Ice/UserExceptionWriter.java
new file mode 100644
index 00000000000..a1d57e59573
--- /dev/null
+++ b/java/src/Ice/UserExceptionWriter.java
@@ -0,0 +1,57 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package Ice;
+
+public abstract class UserExceptionWriter extends UserException
+{
+ public UserExceptionWriter(Communicator communicator)
+ {
+ _communicator = communicator;
+ }
+
+ public abstract void
+ write(Ice.OutputStream os);
+
+ public abstract boolean
+ usesClasses();
+
+ public void
+ __write(IceInternal.BasicStream os)
+ {
+ OutputStream stream = new OutputStreamI(_communicator, os);
+ write(stream);
+ }
+
+ public void
+ __read(IceInternal.BasicStream is, boolean rid)
+ {
+ assert(false);
+ }
+
+ public void
+ __write(Ice.OutputStream os)
+ {
+ write(os);
+ }
+
+ public void
+ __read(Ice.InputStream is, boolean rid)
+ {
+ assert(false);
+ }
+
+ public boolean
+ __usesClasses()
+ {
+ return usesClasses();
+ }
+
+ protected Communicator _communicator;
+}
diff --git a/java/src/IceInternal/BasicInputStream.java b/java/src/IceInternal/BasicInputStream.java
deleted file mode 100644
index 188f321fa90..00000000000
--- a/java/src/IceInternal/BasicInputStream.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-package IceInternal;
-
-public class BasicInputStream extends BasicStream
-{
- public
- BasicInputStream(Instance instance, Ice.InputStream in)
- {
- super(instance);
- _in = in;
- }
-
- public Ice.InputStream _in;
-}
diff --git a/java/src/IceInternal/BasicOutputStream.java b/java/src/IceInternal/BasicOutputStream.java
deleted file mode 100644
index a96ec64927b..00000000000
--- a/java/src/IceInternal/BasicOutputStream.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-package IceInternal;
-
-public class BasicOutputStream extends BasicStream
-{
- public
- BasicOutputStream(Instance instance, Ice.OutputStream out)
- {
- super(instance);
- _out = out;
- }
-
- public Ice.OutputStream _out;
-}
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 372b9875f33..2b15bdd6897 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -27,6 +27,7 @@ public class BasicStream
initialize(IceInternal.Instance instance, boolean unlimited)
{
_instance = instance;
+ _closure = null;
_unlimited = unlimited;
allocate(1500);
_capacity = _buf.capacity();
@@ -80,11 +81,29 @@ public class BasicStream
return _instance;
}
+ public Object
+ closure()
+ {
+ return _closure;
+ }
+
+ public Object
+ closure(Object p)
+ {
+ Object prev = _closure;
+ _closure = p;
+ return prev;
+ }
+
public void
swap(BasicStream other)
{
assert(_instance == other._instance);
+ Object tmpClosure = other._closure;
+ other._closure = _closure;
+ _closure = tmpClosure;
+
java.nio.ByteBuffer tmpBuf = other._buf;
other._buf = _buf;
_buf = tmpBuf;
@@ -2294,6 +2313,7 @@ public class BasicStream
}
private IceInternal.Instance _instance;
+ private Object _closure;
private java.nio.ByteBuffer _buf;
private int _capacity; // Cache capacity to avoid excessive method calls.
private int _limit; // Cache limit to avoid excessive method calls.