Repository: ignite Updated Branches: refs/heads/ignite-2100 e92fb51c7 -> 705349fdf
IGNITE-2100:: Fixed marshalling. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/705349fd Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/705349fd Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/705349fd Branch: refs/heads/ignite-2100 Commit: 705349fdfa9494fda622052995ed643b33baafc6 Parents: e92fb51 Author: vozerov-gridgain <[email protected]> Authored: Mon Dec 14 15:30:59 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Mon Dec 14 15:30:59 2015 +0300 ---------------------------------------------------------------------- .../internal/binary/BinaryClassDescriptor.java | 39 +++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/705349fd/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java index 1c28ab8..84836bd 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java @@ -163,17 +163,27 @@ public class BinaryClassDescriptor { excluded = MarshallerExclusions.isExcluded(cls); - useOptMarshaller = !predefined && initUseOptimizedMarshallerFlag(); + useOptMarshaller = !predefined && useDfltSerialization && initUseOptimizedMarshallerFlag(); + + BinaryWriteMode mode0; if (excluded) - mode = BinaryWriteMode.EXCLUSION; + mode0 = BinaryWriteMode.EXCLUSION; else { if (cls == BinaryEnumObjectImpl.class) - mode = BinaryWriteMode.BINARY_ENUM; + mode0 = BinaryWriteMode.BINARY_ENUM; else - mode = serializer != null ? BinaryWriteMode.BINARY : BinaryUtils.mode(cls); + mode0 = serializer != null ? BinaryWriteMode.BINARY : BinaryUtils.mode(cls); + } + + if (!useDfltSerialization && mode0 == BinaryWriteMode.EXTERNALIZABLE) { + mode0 = BinaryWriteMode.OBJECT; + + // TODO: Warning. } + mode = mode0; + switch (mode) { case P_BYTE: case P_BOOLEAN: @@ -288,8 +298,25 @@ public class BinaryClassDescriptor { if (mode == BinaryWriteMode.BINARY || mode == BinaryWriteMode.EXTERNALIZABLE || mode == BinaryWriteMode.OBJECT) { - readResolveMtd = U.findNonPublicMethod(cls, "readResolve"); - writeReplaceMtd = U.findNonPublicMethod(cls, "writeReplace"); + Method readResolveMtd0 = U.findNonPublicMethod(cls, "readResolve"); + Method writeReplaceMtd0 = U.findNonPublicMethod(cls, "writeReplace"); + + if (useDfltSerialization) { + readResolveMtd = readResolveMtd0; + writeReplaceMtd = writeReplaceMtd0; + } + else { + if (readResolveMtd0 != null) { + // TODO: WARN + } + + if (writeReplaceMtd0 != null) { + // TODO: WARN + } + + readResolveMtd = null; + writeReplaceMtd = null; + } } else { readResolveMtd = null;
