Index: ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java (revision 9c6e650b4dfc0adc5b3cdb4ceb4880366e0e39c4) +++ ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java (revision ) @@ -2896,6 +2896,21 @@ } /** + * @throws Exception If failed. + */ + public void testSingleHandle() throws Exception { + SingleHandleA a = new SingleHandleA(new SingleHandleB()); + + BinaryObjectImpl bo = marshal(a, binaryMarshaller()); + + Map map = bo.field("map"); + + BinaryObject innerBo = map.get("key"); + + assertEquals(SingleHandleB.class, innerBo.deserialize().getClass()); + } + + /** * */ private static interface SomeItf { @@ -4847,4 +4862,27 @@ return value; } } + + /** + */ + private static class SingleHandleA { + /** */ + private SingleHandleB b; + + /** */ + private Map map = new HashMap<>(); + + /** + * @param b B. + */ + SingleHandleA(SingleHandleB b) { + this.b = b; + + map.put("key", b); + } + } + + /** + */ + private static class SingleHandleB {} } Index: ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java (revision 9c6e650b4dfc0adc5b3cdb4ceb4880366e0e39c4) +++ ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryReaderHandles.java (revision ) @@ -17,10 +17,9 @@ package org.apache.ignite.internal.binary; -import org.jetbrains.annotations.Nullable; - import java.util.HashMap; import java.util.Map; +import org.jetbrains.annotations.Nullable; /** * Reader handles. @@ -57,7 +56,7 @@ return null; case MODE_SINGLE: - return (T)data; + return pos == singlePos ? (T)data : null; default: assert mode == MODE_MULTIPLE;