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