Repository: ignite Updated Branches: refs/heads/ignite-2100 060e09498 -> 972d5a9bd
IGNITE-2100: Fix to AffinityKey class. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/972d5a9b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/972d5a9b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/972d5a9b Branch: refs/heads/ignite-2100 Commit: 972d5a9bd978bc1410c1a40c43e7fecab5f9b8f4 Parents: 060e094 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Mon Dec 14 16:57:40 2015 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Mon Dec 14 16:57:40 2015 +0300 ---------------------------------------------------------------------- .../ignite/cache/affinity/AffinityKey.java | 2 +- .../ignite/internal/binary/BinaryContext.java | 21 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/972d5a9b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java index ee6321c..c745ed8 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKey.java @@ -64,6 +64,7 @@ public class AffinityKey<K> implements Externalizable { private K key; /** Affinity key. */ + @AffinityKeyMapped @GridToStringInclude private Object affKey; @@ -126,7 +127,6 @@ public class AffinityKey<K> implements Externalizable { * * @return Affinity key to use for affinity mapping. */ - @AffinityKeyMapped @SuppressWarnings({"unchecked"}) public <T> T affinityKey() { A.notNull(key, "key"); http://git-wip-us.apache.org/repos/asf/ignite/blob/972d5a9b/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 9cd8a94..f227238 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 @@ -26,6 +26,7 @@ import org.apache.ignite.binary.BinarySerializer; import org.apache.ignite.binary.BinaryType; import org.apache.ignite.binary.BinaryTypeConfiguration; import org.apache.ignite.cache.CacheKeyConfiguration; +import org.apache.ignite.cache.affinity.AffinityKey; import org.apache.ignite.cache.affinity.AffinityKeyMapped; import org.apache.ignite.configuration.BinaryConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; @@ -205,14 +206,17 @@ public class BinaryContext implements Externalizable { registerPredefinedType(Timestamp[].class, GridBinaryMarshaller.TIMESTAMP_ARR); registerPredefinedType(Object[].class, GridBinaryMarshaller.OBJ_ARR); + // Special collections. registerPredefinedType(ArrayList.class, 0); registerPredefinedType(LinkedList.class, 0); registerPredefinedType(HashSet.class, 0); registerPredefinedType(LinkedHashSet.class, 0); - registerPredefinedType(HashMap.class, 0); registerPredefinedType(LinkedHashMap.class, 0); + // Classes with overriden default serialziation flag. + registerPredefinedType(AffinityKey.class, 0, false); + registerPredefinedType(GridMapEntry.class, 60); registerPredefinedType(IgniteBiTuple.class, 61); registerPredefinedType(T2.class, 62); @@ -719,8 +723,21 @@ public class BinaryContext implements Externalizable { * @return GridBinaryClassDescriptor. */ public BinaryClassDescriptor registerPredefinedType(Class<?> cls, int id) { + return registerPredefinedType(cls, id, true); + } + + /** + * @param cls Class. + * @param id Type ID. + * @param useDfltSerialization Use default serialization flag. + * @return GridBinaryClassDescriptor. + */ + public BinaryClassDescriptor registerPredefinedType(Class<?> cls, int id, boolean useDfltSerialization) { String typeName = typeName(cls.getName()); + if (id == 0) + id = BinaryInternalIdMapper.defaultInstance().typeId(typeName); + BinaryClassDescriptor desc = new BinaryClassDescriptor( this, cls, @@ -733,7 +750,7 @@ public class BinaryContext implements Externalizable { false, true, /* registered */ true, /* predefined */ - true /* default serialization */ + useDfltSerialization /* default serialization */ ); predefinedTypeNames.put(typeName, id);