summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2017-07-05 12:10:49 +0200
committerBenoit Foucher <benoit@zeroc.com>2017-07-05 12:10:49 +0200
commite706fb2ceb23b1ee3c225f6d9569c58359b4ee72 (patch)
tree56d6d90d0a079d89ee7b2ab1c1013055cdca6e29 /java
parentICE-8218 - Windows OpenSSL test build failure with parallel builds (diff)
downloadice-e706fb2ceb23b1ee3c225f6d9569c58359b4ee72.tar.bz2
ice-e706fb2ceb23b1ee3c225f6d9569c58359b4ee72.tar.xz
ice-e706fb2ceb23b1ee3c225f6d9569c58359b4ee72.zip
Fixed ICE-8217 - added ice_getSlicedData method to Ice values and Ice::SlicedData::clear method to break cyclic references
Diffstat (limited to 'java')
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/UnknownSlicedValue.java12
-rw-r--r--java/src/Ice/src/main/java/com/zeroc/Ice/Value.java11
-rw-r--r--java/test/src/main/java/test/Ice/slicing/objects/AllTests.java9
3 files changed, 32 insertions, 0 deletions
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/UnknownSlicedValue.java b/java/src/Ice/src/main/java/com/zeroc/Ice/UnknownSlicedValue.java
index 151e255614a..41ce5a574e4 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/UnknownSlicedValue.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/UnknownSlicedValue.java
@@ -34,6 +34,18 @@ public final class UnknownSlicedValue extends Value
return _unknownTypeId;
}
+ /**
+ * Returns the sliced data if the value has a preserved-slice base class and has been sliced during
+ * un-marshaling of the value, null is returned otherwise.
+ *
+ * @return The sliced data or null.
+ **/
+ @Override
+ public SlicedData ice_getSlicedData()
+ {
+ return _slicedData;
+ }
+
@Override
public void _iceWrite(OutputStream ostr)
{
diff --git a/java/src/Ice/src/main/java/com/zeroc/Ice/Value.java b/java/src/Ice/src/main/java/com/zeroc/Ice/Value.java
index 2fe1b212abe..f2602fc258d 100644
--- a/java/src/Ice/src/main/java/com/zeroc/Ice/Value.java
+++ b/java/src/Ice/src/main/java/com/zeroc/Ice/Value.java
@@ -62,6 +62,17 @@ public abstract class Value implements java.lang.Cloneable, java.io.Serializable
return ice_staticId();
}
+ /**
+ * Returns the sliced data if the value has a preserved-slice base class and has been sliced during
+ * un-marshaling of the value, null is returned otherwise.
+ *
+ * @return The sliced data or null.
+ **/
+ public SlicedData ice_getSlicedData()
+ {
+ return null;
+ }
+
public static String ice_staticId()
{
return "::Ice::Object";
diff --git a/java/test/src/main/java/test/Ice/slicing/objects/AllTests.java b/java/test/src/main/java/test/Ice/slicing/objects/AllTests.java
index a95fca02f66..30c55660224 100644
--- a/java/test/src/main/java/test/Ice/slicing/objects/AllTests.java
+++ b/java/test/src/main/java/test/Ice/slicing/objects/AllTests.java
@@ -378,6 +378,7 @@ public class AllTests
test(!test.ice_getEncodingVersion().equals(Util.Encoding_1_0));
test(o instanceof com.zeroc.Ice.UnknownSlicedValue);
test(((com.zeroc.Ice.UnknownSlicedValue)o).getUnknownTypeId().equals("::Test::SUnknown"));
+ test(((com.zeroc.Ice.UnknownSlicedValue)o).ice_getSlicedData() != null);
test.checkSUnknown(o);
}
catch(com.zeroc.Ice.NoValueFactoryException ex)
@@ -2003,8 +2004,16 @@ public class AllTests
test.checkPBSUnknown(p);
if(!test.ice_getEncodingVersion().equals(Util.Encoding_1_0))
{
+ com.zeroc.Ice.SlicedData slicedData = p.ice_getSlicedData();
+ test(slicedData != null);
+ test(slicedData.slices.length == 1);
+ test(slicedData.slices[0].typeId.equals("::Test::PSUnknown"));
test.ice_encodingVersion(Util.Encoding_1_0).checkPBSUnknown(p);
}
+ else
+ {
+ test(p.ice_getSlicedData() == null);
+ }
}
catch(com.zeroc.Ice.OperationNotExistException ex)
{