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/12/14 13:03:10 UTC

[50/50] [abbrv] ignite git commit: IGNITE-2100:: Propagate flag form configuration to BinaryClassDescriptor.

IGNITE-2100:: Propagate flag form configuration to BinaryClassDescriptor.


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

Branch: refs/heads/ignite-2100
Commit: 74e478d40ec68147bec15ca646036d46c6af86db
Parents: c482298
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Mon Dec 14 15:03:08 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Dec 14 15:03:08 2015 +0300

----------------------------------------------------------------------
 .../internal/binary/BinaryClassDescriptor.java  |  4 +-
 .../ignite/internal/binary/BinaryContext.java   | 41 +++++++++++++++-----
 2 files changed, 35 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/74e478d4/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 4a93bf6..1c28ab8 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
@@ -128,6 +128,7 @@ public class BinaryClassDescriptor {
      * @param metaDataEnabled Metadata enabled flag.
      * @param registered Whether typeId has been successfully registered by MarshallerContext or not.
      * @param predefined Whether the class is predefined or not.
+     * @param useDfltSerialization Whether to use default configuration.
      * @throws BinaryObjectException In case of error.
      */
     BinaryClassDescriptor(
@@ -141,7 +142,8 @@ public class BinaryClassDescriptor {
         @Nullable BinarySerializer serializer,
         boolean metaDataEnabled,
         boolean registered,
-        boolean predefined
+        boolean predefined,
+        boolean useDfltSerialization
     ) throws BinaryObjectException {
         assert ctx != null;
         assert cls != null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/74e478d4/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 7f9bacf..32e64a2 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
@@ -70,6 +70,7 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -111,6 +112,10 @@ public class BinaryContext implements Externalizable {
     /** */
     private final Map<String, BinaryIdMapper> typeMappers = new ConcurrentHashMap8<>(0);
 
+    /** Default serialization flags. */
+    private final Set<Integer> dfltSerializationFlags =
+        Collections.newSetFromMap(new ConcurrentHashMap<Integer, Boolean>());
+
     /** */
     private BinaryMetadataHandler metaHnd;
 
@@ -298,16 +303,17 @@ public class BinaryContext implements Externalizable {
 
                     for (String clsName0 : classesInPackage(pkgName))
                         descs.add(clsName0, idMapper, serializer, affFields.get(clsName0),
-                            typeCfg.isEnum(), true);
+                            typeCfg.isEnum(), typeCfg.isUseDefaultSerialization(), true);
                 }
                 else
                     descs.add(clsName, idMapper, serializer, affFields.get(clsName),
-                        typeCfg.isEnum(), false);
+                        typeCfg.isEnum(), typeCfg.isUseDefaultSerialization(), false);
             }
         }
 
         for (TypeDescriptor desc : descs.descriptors())
-            registerUserType(desc.clsName, desc.idMapper, desc.serializer, desc.affKeyFieldName, desc.isEnum);
+            registerUserType(desc.clsName, desc.idMapper, desc.serializer, desc.affKeyFieldName, desc.isEnum,
+                desc.useDfltSerialization);
 
         BinaryInternalIdMapper dfltMapper = BinaryInternalIdMapper.create(globalIdMapper);
 
@@ -505,7 +511,8 @@ public class BinaryContext implements Externalizable {
                 null,
                 false,
                 true, /* registered */
-                false /* predefined */
+                false, /* predefined */
+                true /* prefer default serialization */
             );
 
             BinaryClassDescriptor old = descByCls.putIfAbsent(cls, desc);
@@ -553,7 +560,8 @@ public class BinaryContext implements Externalizable {
             null,
             true,
             registered,
-            false /* predefined */
+            false /* predefined */,
+            dfltSerializationFlags.contains(typeId)
         );
 
         if (!deserialize) {
@@ -711,7 +719,8 @@ public class BinaryContext implements Externalizable {
             null,
             false,
             true, /* registered */
-            true /* predefined */
+            true, /* predefined */
+            false /* default serialization */
         );
 
         predefinedTypeNames.put(typeName, id);
@@ -728,6 +737,7 @@ public class BinaryContext implements Externalizable {
      * @param serializer Serializer.
      * @param affKeyFieldName Affinity key field name.
      * @param isEnum If enum.
+     * @param useDfltSerialization Use default serialization flag.
      * @throws BinaryObjectException In case of error.
      */
     @SuppressWarnings("ErrorNotRethrown")
@@ -735,7 +745,8 @@ public class BinaryContext implements Externalizable {
         BinaryIdMapper idMapper,
         @Nullable BinarySerializer serializer,
         @Nullable String affKeyFieldName,
-        boolean isEnum)
+        boolean isEnum,
+        boolean useDfltSerialization)
         throws BinaryObjectException {
         assert idMapper != null;
 
@@ -766,6 +777,9 @@ public class BinaryContext implements Externalizable {
 
         typeMappers.put(typeName, idMapper);
 
+        if (useDfltSerialization)
+            dfltSerializationFlags.add(id);
+
         Map<String, Integer> fieldsMeta = null;
         Collection<BinarySchema> schemas = null;
 
@@ -781,7 +795,8 @@ public class BinaryContext implements Externalizable {
                 serializer,
                 true,
                 true, /* registered */
-                false /* predefined */
+                false, /* predefined */
+                useDfltSerialization
             );
 
             fieldsMeta = desc.fieldsMeta();
@@ -969,6 +984,7 @@ public class BinaryContext implements Externalizable {
          * @param serializer Serializer.
          * @param affKeyFieldName Affinity key field name.
          * @param isEnum Enum flag.
+         * @param useDfltSerialziation Use default serialization flag.
          * @param canOverride Whether this descriptor can be override.
          * @throws BinaryObjectException If failed.
          */
@@ -977,6 +993,7 @@ public class BinaryContext implements Externalizable {
             BinarySerializer serializer,
             String affKeyFieldName,
             boolean isEnum,
+            boolean useDfltSerialziation,
             boolean canOverride)
             throws BinaryObjectException {
             TypeDescriptor desc = new TypeDescriptor(clsName,
@@ -984,6 +1001,7 @@ public class BinaryContext implements Externalizable {
                 serializer,
                 affKeyFieldName,
                 isEnum,
+                useDfltSerialziation,
                 canOverride);
 
             TypeDescriptor oldDesc = descs.get(clsName);
@@ -1023,6 +1041,9 @@ public class BinaryContext implements Externalizable {
         /** Enum flag. */
         private boolean isEnum;
 
+        /** Use default serialization flag. */
+        private boolean useDfltSerialization;
+
         /** Whether this descriptor can be override. */
         private boolean canOverride;
 
@@ -1034,15 +1055,17 @@ public class BinaryContext implements Externalizable {
          * @param serializer Serializer.
          * @param affKeyFieldName Affinity key field name.
          * @param isEnum Enum type.
+         * @param useDfltSerialization Use default serialization flag.
          * @param canOverride Whether this descriptor can be override.
          */
         private TypeDescriptor(String clsName, BinaryIdMapper idMapper, BinarySerializer serializer,
-            String affKeyFieldName, boolean isEnum, boolean canOverride) {
+            String affKeyFieldName, boolean isEnum, boolean useDfltSerialization, boolean canOverride) {
             this.clsName = clsName;
             this.idMapper = idMapper;
             this.serializer = serializer;
             this.affKeyFieldName = affKeyFieldName;
             this.isEnum = isEnum;
+            this.useDfltSerialization = useDfltSerialization;
             this.canOverride = canOverride;
         }