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);