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 <[email protected]> Authored: Mon Dec 14 15:03:08 2015 +0300 Committer: vozerov-gridgain <[email protected]> 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; }
