IGNITE-2100: Removed dedicated Externalizable support.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2e2d4748
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2e2d4748
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2e2d4748

Branch: refs/heads/ignite-2100
Commit: 2e2d474840d453638248124220083bff5f486bfd
Parents: 6a038cb
Author: vozerov-gridgain <[email protected]>
Authored: Tue Dec 15 13:21:36 2015 +0300
Committer: vozerov-gridgain <[email protected]>
Committed: Tue Dec 15 13:21:36 2015 +0300

----------------------------------------------------------------------
 .../internal/binary/BinaryClassDescriptor.java  | 84 ++++----------------
 .../ignite/internal/binary/BinaryContext.java   |  4 +-
 .../internal/binary/BinaryFieldAccessor.java    |  3 -
 .../ignite/internal/binary/BinaryUtils.java     |  3 -
 .../ignite/internal/binary/BinaryWriteMode.java |  3 -
 .../binary/BinaryMarshallerSelfTest.java        | 31 ++++----
 6 files changed, 32 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/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 88147a5..d348942 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
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.binary;
 
 import java.io.Externalizable;
-import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.lang.reflect.Constructor;
@@ -165,26 +164,22 @@ public class BinaryClassDescriptor {
 
         useOptMarshaller = !predefined && useDfltSerialization && 
initUseOptimizedMarshallerFlag();
 
-        BinaryWriteMode mode0;
-
         if (excluded)
-            mode0 = BinaryWriteMode.EXCLUSION;
+            mode = BinaryWriteMode.EXCLUSION;
         else {
             if (cls == BinaryEnumObjectImpl.class)
-                mode0 = BinaryWriteMode.BINARY_ENUM;
+                mode = BinaryWriteMode.BINARY_ENUM;
             else
-                mode0 = serializer != null ? BinaryWriteMode.BINARY : 
BinaryUtils.mode(cls);
+                mode = serializer != null ? BinaryWriteMode.BINARY : 
BinaryUtils.mode(cls);
         }
 
-        if (!useDfltSerialization && mode0 == BinaryWriteMode.EXTERNALIZABLE) {
-            mode0 = BinaryWriteMode.OBJECT;
+        if (useOptMarshaller) {
+            // TODO: IGNITE-2100: Correct warning.
 
             U.warn(ctx.log(), "Ignored \"Externalizable\" interface for class 
(use " +
                 "BinaryTypeConfiguration.setUseDefaultSerialization(true) to 
enable it): " + cls.getName());
         }
 
-        mode = mode0;
-
         switch (mode) {
             case P_BYTE:
             case P_BOOLEAN:
@@ -237,7 +232,6 @@ public class BinaryClassDescriptor {
                 break;
 
             case BINARY:
-            case EXTERNALIZABLE:
                 ctor = constructor(cls);
                 fields = null;
                 stableFieldsMeta = null;
@@ -280,8 +274,11 @@ public class BinaryClassDescriptor {
 
                             schemaBuilder.addField(fieldId);
 
-                            if (metaDataEnabled)
+                            if (metaDataEnabled) {
+                                assert stableFieldsMeta != null;
+
                                 stableFieldsMeta.put(name, 
fieldInfo.mode().typeId());
+                            }
                         }
                     }
                 }
@@ -297,29 +294,9 @@ public class BinaryClassDescriptor {
                 throw new BinaryObjectException("Invalid mode: " + mode);
         }
 
-        if (mode == BinaryWriteMode.BINARY || mode == 
BinaryWriteMode.EXTERNALIZABLE ||
-            mode == BinaryWriteMode.OBJECT) {
-            Method readResolveMtd0 = U.findNonPublicMethod(cls, "readResolve");
-            Method writeReplaceMtd0 = U.findNonPublicMethod(cls, 
"writeReplace");
-
-            if (useDfltSerialization) {
-                readResolveMtd = readResolveMtd0;
-                writeReplaceMtd = writeReplaceMtd0;
-            }
-            else {
-                if (readResolveMtd0 != null) {
-                    U.warn(ctx.log(), "Ignored \"readResolve()\" method for 
class (use " +
-                        
"BinaryTypeConfiguration.setUseDefaultSerialization(true) to enable it): " + 
cls.getName());
-                }
-
-                if (writeReplaceMtd0 != null) {
-                    U.warn(ctx.log(), "Ignored \"writeReplace()\" method for 
class (use " +
-                        
"BinaryTypeConfiguration.setUseDefaultSerialization(true) to enable it): " + 
cls.getName());
-                }
-
-                readResolveMtd = null;
-                writeReplaceMtd = null;
-            }
+        if (mode == BinaryWriteMode.BINARY || mode == BinaryWriteMode.OBJECT) {
+            readResolveMtd = U.findNonPublicMethod(cls, "readResolve");
+            writeReplaceMtd = U.findNonPublicMethod(cls, "writeReplace");
         }
         else {
             readResolveMtd = null;
@@ -640,25 +617,6 @@ public class BinaryClassDescriptor {
 
                 break;
 
-            case EXTERNALIZABLE:
-                if (preWrite(writer, obj)) {
-                    writer.rawWriter();
-
-                    try {
-                        ((Externalizable)obj).writeExternal(writer);
-
-                        postWrite(writer, obj);
-                    }
-                    catch (IOException e) {
-                        throw new BinaryObjectException("Failed to write 
Externalizable object: " + obj, e);
-                    }
-                    finally {
-                        writer.popSchema();
-                    }
-                }
-
-                break;
-
             case OBJECT:
                 if (preWrite(writer, obj)) {
                     try {
@@ -704,21 +662,6 @@ public class BinaryClassDescriptor {
 
                 break;
 
-            case EXTERNALIZABLE:
-                res = newInstance();
-
-                reader.setHandle(res);
-
-                try {
-                    ((Externalizable)res).readExternal(reader);
-                }
-                catch (IOException | ClassNotFoundException e) {
-                    throw new BinaryObjectException("Failed to read 
Externalizable object: " +
-                        res.getClass().getName(), e);
-                }
-
-                break;
-
             case OBJECT:
                 res = newInstance();
 
@@ -827,6 +770,9 @@ public class BinaryClassDescriptor {
     @SuppressWarnings("unchecked")
     private boolean initUseOptimizedMarshallerFlag() {
         for (Class c = cls; c != null && !c.equals(Object.class); c = 
c.getSuperclass()) {
+            if (Externalizable.class.isAssignableFrom(c))
+                return true;
+
             try {
                 Method writeObj = c.getDeclaredMethod("writeObject", 
ObjectOutputStream.class);
                 Method readObj = c.getDeclaredMethod("readObject", 
ObjectInputStream.class);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index f227238..73fc71d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -137,7 +137,7 @@ public class BinaryContext implements Externalizable {
     private IgniteLogger log;
 
     /** */
-    private final OptimizedMarshaller optmMarsh = new OptimizedMarshaller();
+    private final OptimizedMarshaller optmMarsh = new 
OptimizedMarshaller(false);
 
     /** Compact footer flag. */
     private boolean compactFooter;
@@ -216,6 +216,8 @@ public class BinaryContext implements Externalizable {
 
         // Classes with overriden default serialziation flag.
         registerPredefinedType(AffinityKey.class, 0, false);
+        registerPredefinedType(BinaryObjectImpl.class, 0, false);
+        registerPredefinedType(BinaryObjectOffheapImpl.class, 0, false);
 
         registerPredefinedType(GridMapEntry.class, 60);
         registerPredefinedType(IgniteBiTuple.class, 61);

http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
index 8050edd..2d69cbd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryFieldAccessor.java
@@ -105,7 +105,6 @@ public abstract class BinaryFieldAccessor {
             case OBJECT_ARR:
             case BINARY_OBJ:
             case BINARY:
-            case EXTERNALIZABLE:
                 return new DefaultFinalClassAccessor(field, id, mode, false);
 
             default:
@@ -624,7 +623,6 @@ public abstract class BinaryFieldAccessor {
                     break;
 
                 case BINARY:
-                case EXTERNALIZABLE:
                 case OBJECT:
                     writer.writeObjectField(val);
 
@@ -825,7 +823,6 @@ public abstract class BinaryFieldAccessor {
                     break;
 
                 case BINARY:
-                case EXTERNALIZABLE:
                 case OBJECT:
                     val = reader.readObject(id);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index 9e5260b..c999657 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -33,7 +33,6 @@ import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
 
 import java.io.ByteArrayInputStream;
-import java.io.Externalizable;
 import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -952,8 +951,6 @@ public class BinaryUtils {
             return BinaryWriteMode.BINARY_OBJ;
         else if (Binarylizable.class.isAssignableFrom(cls))
             return BinaryWriteMode.BINARY;
-        else if (Externalizable.class.isAssignableFrom(cls))
-            return BinaryWriteMode.EXTERNALIZABLE;
         else if (isSpecialCollection(cls))
             return BinaryWriteMode.COL;
         else if (isSpecialMap(cls))

http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
index 90127f4..30e0458 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriteMode.java
@@ -151,9 +151,6 @@ public enum BinaryWriteMode {
     BINARY(GridBinaryMarshaller.BINARY_OBJ),
 
     /** */
-    EXTERNALIZABLE(GridBinaryMarshaller.OBJ),
-
-    /** */
     OBJECT(GridBinaryMarshaller.OBJ),
 
     /** */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2e2d4748/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index 496d072..fcd511b 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -436,23 +436,6 @@ public class BinaryMarshallerSelfTest extends 
GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
-    public void testExternalizableHashCode() throws Exception {
-        SimpleExternalizable sim1 = new SimpleExternalizable("Simple");
-        SimpleExternalizable sim2 = new SimpleExternalizable("Simple");
-
-        BinaryMarshaller marsh = binaryMarshaller();
-
-        BinaryObjectImpl sim1Binary = marshal(sim1, marsh);
-        BinaryObjectImpl sim2Binary = marshal(sim2, marsh);
-
-        assertEquals(sim1.hashCode(), sim2.hashCode());
-        assertEquals(sim1.hashCode(), sim1Binary.hashCode());
-        assertEquals(sim2.hashCode(), sim2Binary.hashCode());
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
     public void testExternalizableInEnclosing() throws Exception {
         SimpleEnclosingObject obj = new SimpleEnclosingObject();
         obj.simpl = new SimpleExternalizable("field");
@@ -798,6 +781,13 @@ public class BinaryMarshallerSelfTest extends 
GridCommonAbstractTest {
         private String name;
 
         /**
+         * {@link Externalizable} support.
+         */
+        public TestQueue() {
+            // No-op.
+        }
+
+        /**
          * @param name Name.
          */
         public TestQueue(String name) {
@@ -4068,6 +4058,13 @@ public class BinaryMarshallerSelfTest extends 
GridCommonAbstractTest {
         private String field;
 
         /**
+         * {@link Externalizable} support.
+         */
+        public SimpleExternalizable() {
+            // No-op.
+        }
+
+        /**
          * @param field Field.
          */
         public SimpleExternalizable(String field) {

Reply via email to