diff options
author | Benoit Foucher <benoit@zeroc.com> | 2017-07-05 12:10:49 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2017-07-05 12:10:49 +0200 |
commit | e706fb2ceb23b1ee3c225f6d9569c58359b4ee72 (patch) | |
tree | 56d6d90d0a079d89ee7b2ab1c1013055cdca6e29 /java | |
parent | ICE-8218 - Windows OpenSSL test build failure with parallel builds (diff) | |
download | ice-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')
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) { |