IGNITE-1819: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/fceec8fc Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/fceec8fc Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/fceec8fc Branch: refs/heads/ignite-1819 Commit: fceec8fcf208466714f9a3710407021caf4fa83e Parents: 47d2589 Author: vozerov-gridgain <[email protected]> Authored: Thu Nov 5 13:57:26 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Thu Nov 5 13:57:26 2015 +0300 ---------------------------------------------------------------------- .../portable/PortableClassDescriptor.java | 7 +++ .../internal/portable/PortableContext.java | 8 --- .../internal/portable/PortableWriterExImpl.java | 3 +- .../portable/builder/PortableBuilderImpl.java | 61 +++++++++----------- 4 files changed, 35 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/fceec8fc/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java index aa72017..ba85f8c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java @@ -274,6 +274,13 @@ public class PortableClassDescriptor { } /** + * @return User type flag. + */ + public boolean userType() { + return userType; + } + + /** * @return Fields meta data. */ Map<String, String> fieldsMeta() { http://git-wip-us.apache.org/repos/asf/ignite/blob/fceec8fc/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java index fddca6f..1986625 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java @@ -783,14 +783,6 @@ public class PortableContext implements Externalizable { /** * @param typeId Type ID. - * @return Whether meta data is enabled. - */ - public boolean isMetaDataEnabled(int typeId) { - return true; - } - - /** - * @param typeId Type ID. * @param metaHashSum Meta data hash sum. * @return Whether meta is changed. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/fceec8fc/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java index 542c897..30e3465 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java @@ -272,8 +272,7 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx } typeId = desc.typeId(); - - metaEnabled = ctx.isMetaDataEnabled(typeId); + metaEnabled = desc.userType(); desc.write(obj, this); } http://git-wip-us.apache.org/repos/asf/ignite/blob/fceec8fc/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java index 89bb3ff..2f7c9be 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java @@ -291,12 +291,7 @@ public class PortableBuilderImpl implements PortableBuilder { } if (assignedVals != null && (remainsFlds == null || !remainsFlds.isEmpty())) { - boolean metadataEnabled = ctx.isMetaDataEnabled(typeId); - - PortableMetadata metadata = null; - - if (metadataEnabled) - metadata = ctx.metaData(typeId); + PortableMetadata metadata = ctx.metaData(typeId); Map<String, String> newFldsMetadata = null; @@ -317,40 +312,38 @@ public class PortableBuilderImpl implements PortableBuilder { serializer.writeValue(writer, val); - if (metadataEnabled) { - String oldFldTypeName = metadata == null ? null : metadata.fieldTypeName(name); + String oldFldTypeName = metadata == null ? null : metadata.fieldTypeName(name); - String newFldTypeName; + String newFldTypeName; - if (val instanceof PortableValueWithType) - newFldTypeName = ((PortableValueWithType) val).typeName(); - else { - byte type = PortableUtils.typeByClass(val.getClass()); + if (val instanceof PortableValueWithType) + newFldTypeName = ((PortableValueWithType) val).typeName(); + else { + byte type = PortableUtils.typeByClass(val.getClass()); - newFldTypeName = CacheObjectPortableProcessorImpl.fieldTypeName(type); - } + newFldTypeName = CacheObjectPortableProcessorImpl.fieldTypeName(type); + } - if (oldFldTypeName == null) { - // It's a new field, we have to add it to metadata. + if (oldFldTypeName == null) { + // It's a new field, we have to add it to metadata. - if (newFldsMetadata == null) - newFldsMetadata = new HashMap<>(); + if (newFldsMetadata == null) + newFldsMetadata = new HashMap<>(); - newFldsMetadata.put(name, newFldTypeName); - } - else { - String objTypeName = - CacheObjectPortableProcessorImpl.FIELD_TYPE_NAMES[GridPortableMarshaller.OBJ]; - - if (!objTypeName.equals(oldFldTypeName) && !oldFldTypeName.equals(newFldTypeName)) { - throw new PortableException( - "Wrong value has been set [" + - "typeName=" + (typeName == null ? metadata.typeName() : typeName) + - ", fieldName=" + name + - ", fieldType=" + oldFldTypeName + - ", assignedValueType=" + newFldTypeName + ']' - ); - } + newFldsMetadata.put(name, newFldTypeName); + } + else { + String objTypeName = + CacheObjectPortableProcessorImpl.FIELD_TYPE_NAMES[GridPortableMarshaller.OBJ]; + + if (!objTypeName.equals(oldFldTypeName) && !oldFldTypeName.equals(newFldTypeName)) { + throw new PortableException( + "Wrong value has been set [" + + "typeName=" + (typeName == null ? metadata.typeName() : typeName) + + ", fieldName=" + name + + ", fieldType=" + oldFldTypeName + + ", assignedValueType=" + newFldTypeName + ']' + ); } } }
