You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/11/25 14:50:00 UTC

ignite git commit: IGNITE-1956: Fixed builder metadata propagation.

Repository: ignite
Updated Branches:
  refs/heads/ignite-1956 d623ed3f8 -> d44f68dd8


IGNITE-1956: Fixed builder metadata propagation.


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

Branch: refs/heads/ignite-1956
Commit: d44f68dd8aee512e04f99c9d3c55bed23aa8fe3d
Parents: d623ed3
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Nov 25 16:49:58 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Nov 25 16:49:58 2015 +0300

----------------------------------------------------------------------
 .../builder/PortableBuilderSerializer.java      | 10 ++-
 .../internal/portable/BinaryEnumsSelfTest.java  | 65 ++++++++++++--------
 2 files changed, 48 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d44f68dd/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
index 0e8eaa4..bb7da19 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderSerializer.java
@@ -18,8 +18,10 @@
 package org.apache.ignite.internal.portable.builder;
 
 import org.apache.ignite.binary.BinaryObject;
+import org.apache.ignite.internal.portable.BinaryMetadata;
 import org.apache.ignite.internal.portable.GridPortableMarshaller;
 import org.apache.ignite.internal.portable.BinaryObjectEx;
+import org.apache.ignite.internal.portable.PortableContext;
 import org.apache.ignite.internal.portable.PortableUtils;
 import org.apache.ignite.internal.portable.BinaryWriterExImpl;
 import org.apache.ignite.internal.util.*;
@@ -97,8 +99,14 @@ class PortableBuilderSerializer {
         }
 
         if (val.getClass().isEnum()) {
+            String typeName = PortableContext.typeName(val.getClass().getName());
+            int typeId = writer.context().typeId(typeName);
+
+            BinaryMetadata meta = new BinaryMetadata(typeId, typeName, null, null, null, true);
+            writer.context().updateMetadata(typeId, meta);
+
             writer.writeByte(GridPortableMarshaller.ENUM);
-            writer.writeInt(writer.context().typeId(val.getClass().getName()));
+            writer.writeInt(typeId);
             writer.writeInt(((Enum)val).ordinal());
 
             return;

http://git-wip-us.apache.org/repos/asf/ignite/blob/d44f68dd/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryEnumsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryEnumsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryEnumsSelfTest.java
index 203f723..ad1d40b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryEnumsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/BinaryEnumsSelfTest.java
@@ -196,7 +196,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         cache1.put(1, EnumType.ONE);
 
-        validateSimple(1, EnumType.ONE);
+        validateSimple(1, EnumType.ONE, registered);
     }
 
     /**
@@ -210,7 +210,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         cache1.put(1, new EnumHolder(EnumType.ONE));
 
-        validateNested(1, EnumType.ONE);
+        validateNested(1, EnumType.ONE, registered);
     }
 
     /**
@@ -224,16 +224,19 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         BinaryObject obj = node1.binary().builder("EnumHolder").setField("val", EnumType.ONE).build();
 
+        assert node1.binary().metadata("EnumHolder") != null;
+        assert node1.binary().metadata("EnumType") != null;
+
         cacheBinary1.put(1, obj);
 
-        validateNested(1, EnumType.ONE);
+        validateNested(1, EnumType.ONE, registered);
 
         obj = (BinaryObject)cacheBinary1.get(1);
         obj = node1.binary().builder(obj).setField("val", EnumType.TWO).build();
 
         cacheBinary1.put(1, obj);
 
-        validateNested(1, EnumType.TWO);
+        validateNested(1, EnumType.TWO, registered);
     }
 
     /**
@@ -241,14 +244,17 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
      *
      * @param key Key.
      * @param val Value.
+     * @param registered Registered flag.
      * @throws Exception If failed.
      */
-    private void validateNested(int key, EnumType val) throws Exception {
-        EnumHolder res1 = (EnumHolder)cache1.get(key);
-        EnumHolder res2 = (EnumHolder)cache2.get(key);
+    private void validateNested(int key, EnumType val, boolean registered) throws Exception {
+        if (registered) {
+            EnumHolder res1 = (EnumHolder) cache1.get(key);
+            EnumHolder res2 = (EnumHolder) cache2.get(key);
 
-        assertEquals(val, res1.val);
-        assertEquals(val, res2.val);
+            assertEquals(val, res1.val);
+            assertEquals(val, res2.val);
+        }
 
         BinaryObject resBinary1 = (BinaryObject)cacheBinary1.get(key);
         BinaryObject resBinary2 = (BinaryObject)cacheBinary2.get(key);
@@ -270,7 +276,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         cacheBinary1.put(1, binary);
 
-        validateSimple(1, EnumType.ONE);
+        validateSimple(1, EnumType.ONE, registered);
     }
 
     /**
@@ -320,7 +326,7 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         cache1.put(1, new EnumType[] { EnumType.ONE, EnumType.TWO });
 
-        validateSimpleArray();
+        validateSimpleArray(registered);
     }
 
     /**
@@ -337,30 +343,34 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
 
         cacheBinary1.put(1, new BinaryObject[] { binaryOne, binaryTwo });
 
-        validateSimpleArray();
+        validateSimpleArray(registered);
     }
 
     /**
      * Validate simple array.
+     *
+     * @param registered Registered flag.
      */
-    private void validateSimpleArray() {
-        Object[] arr1 = (Object[])cache1.get(1);
-        Object[] arr2 = (Object[])cache2.get(1);
+    private void validateSimpleArray(boolean registered) {
+        if (registered) {
+            Object[] arr1 = (Object[])cache1.get(1);
+            Object[] arr2 = (Object[])cache2.get(1);
 
-        assertEquals(2, arr1.length);
-        assertEquals(2, arr2.length);
+            assertEquals(2, arr1.length);
+            assertEquals(2, arr2.length);
 
-        assertEquals(EnumType.ONE, arr1[0]);
-        assertEquals(EnumType.TWO, arr1[1]);
+            assertEquals(EnumType.ONE, arr1[0]);
+            assertEquals(EnumType.TWO, arr1[1]);
 
-        assertEquals(EnumType.ONE, arr2[0]);
-        assertEquals(EnumType.TWO, arr2[1]);
+            assertEquals(EnumType.ONE, arr2[0]);
+            assertEquals(EnumType.TWO, arr2[1]);
+        }
 
         Object[] arrBinary1 = (Object[])cacheBinary1.get(1);
         Object[] arrBinary2 = (Object[])cacheBinary2.get(1);
 
-        assertEquals(2, arr1.length);
-        assertEquals(2, arr2.length);
+        assertEquals(2, arrBinary1.length);
+        assertEquals(2, arrBinary2.length);
 
         validate((BinaryObject) arrBinary1[0], EnumType.ONE);
         validate((BinaryObject) arrBinary1[1], EnumType.TWO);
@@ -374,11 +384,14 @@ public class BinaryEnumsSelfTest extends GridCommonAbstractTest {
      *
      * @param key Key.
      * @param val Value.
+     * @param registered Registered flag.
      * @throws Exception If failed.
      */
-    private void validateSimple(int key, EnumType val) throws Exception {
-        assertEquals(val, cache1.get(key));
-        assertEquals(val, cache2.get(key));
+    private void validateSimple(int key, EnumType val, boolean registered) throws Exception {
+        if (registered) {
+            assertEquals(val, cache1.get(key));
+            assertEquals(val, cache2.get(key));
+        }
 
         validate((BinaryObject) cacheBinary1.get(key), val);
         validate((BinaryObject) cacheBinary2.get(key), val);