IGNITE-1816: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/93f12f76 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/93f12f76 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/93f12f76 Branch: refs/heads/ignite-1816 Commit: 93f12f76681f7c5fbde257ab3be5b37c8a35c2a7 Parents: ab427d3 Author: vozerov-gridgain <[email protected]> Authored: Thu Nov 12 17:24:04 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Thu Nov 12 17:24:04 2015 +0300 ---------------------------------------------------------------------- .../internal/portable/BinaryMetadataCollector.java | 17 ++++++++--------- .../internal/portable/PortableClassDescriptor.java | 6 +++++- .../portable/builder/BinaryObjectBuilderImpl.java | 11 +++++++++-- .../cache/portable/CacheObjectBinaryProcessor.java | 2 +- .../portable/CacheObjectBinaryProcessorImpl.java | 2 +- .../processors/platform/PlatformContextImpl.java | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryMetadataCollector.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryMetadataCollector.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryMetadataCollector.java index ab2fbce..28eb1d0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryMetadataCollector.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/BinaryMetadataCollector.java @@ -17,24 +17,23 @@ package org.apache.ignite.internal.portable; +import org.apache.ignite.binary.BinaryIdMapper; +import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.binary.BinaryRawWriter; +import org.apache.ignite.binary.BinaryWriter; +import org.jetbrains.annotations.Nullable; + import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.UUID; -import org.apache.ignite.binary.BinaryIdMapper; -import org.apache.ignite.binary.BinaryObjectException; -import org.apache.ignite.binary.BinaryRawWriter; -import org.apache.ignite.binary.BinaryWriter; -import org.jetbrains.annotations.Nullable; - /** * Writer for meta data collection. */ @@ -77,8 +76,8 @@ class BinaryMetadataCollector implements BinaryWriter { /** * @return Schemas. */ - Collection<PortableSchema> schemas() { - return Collections.singleton(schemaBuilder.build()); + PortableSchema schema() { + return schemaBuilder.build(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/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 d2b5327..8543ce6 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 @@ -583,10 +583,14 @@ public class PortableClassDescriptor { else ((Binarylizable)obj).writeBinary(collector); + PortableSchema newSchema = collector.schema(); + BinaryMetadata meta = new BinaryMetadata(typeId, typeName, collector.meta(), - affKeyFieldName, collector.schemas()); + affKeyFieldName, Collections.singleton(newSchema)); ctx.updateMetadata(typeId, meta); + + schemaReg.addSchema(newSchema.schemaId(), newSchema); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java index 7697c91..dfc2330 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/BinaryObjectBuilderImpl.java @@ -29,6 +29,7 @@ import org.apache.ignite.internal.portable.BinaryWriterExImpl; import org.apache.ignite.internal.portable.GridPortableMarshaller; import org.apache.ignite.internal.portable.PortableContext; import org.apache.ignite.internal.portable.PortableSchema; +import org.apache.ignite.internal.portable.PortableSchemaRegistry; import org.apache.ignite.internal.portable.PortableUtils; import org.apache.ignite.internal.util.GridArgumentCheck; import org.apache.ignite.internal.util.typedef.F; @@ -365,7 +366,9 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { // Update metadata if needed. int schemaId = writer.schemaId(); - if (ctx.schemaRegistry(typeId).schema(schemaId) == null) { + PortableSchemaRegistry schemaReg = ctx.schemaRegistry(typeId); + + if (schemaReg.schema(schemaId) == null) { String typeName = this.typeName; if (typeName == null) { @@ -374,8 +377,12 @@ public class BinaryObjectBuilderImpl implements BinaryObjectBuilder { typeName = meta.typeName(); } + PortableSchema curSchema = writer.currentSchema(); + ctx.updateMetadata(typeId, new BinaryMetadata(typeId, typeName, fieldsMeta, - ctx.affinityKeyFieldName(typeId), Collections.singleton(writer.currentSchema()))); + ctx.affinityKeyFieldName(typeId), Collections.singleton(curSchema))); + + schemaReg.addSchema(curSchema.schemaId(), curSchema); } } finally { http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessor.java index cac0dcf..e4db77c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessor.java @@ -59,7 +59,7 @@ public interface CacheObjectBinaryProcessor extends IgniteCacheObjectProcessor { * @param fieldTypeIds Fields map. * @throws IgniteException In case of error. */ - public void updateMetaData(int typeId, String typeName, @Nullable String affKeyFieldName, + public void updateMetadata(int typeId, String typeName, @Nullable String affKeyFieldName, Map<String, Integer> fieldTypeIds) throws IgniteException; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessorImpl.java index eb51d13..acd926f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/portable/CacheObjectBinaryProcessorImpl.java @@ -440,7 +440,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm } /** {@inheritDoc} */ - @Override public void updateMetaData(int typeId, String typeName, @Nullable String affKeyFieldName, + @Override public void updateMetadata(int typeId, String typeName, @Nullable String affKeyFieldName, Map<String, Integer> fieldTypeIds) throws BinaryObjectException { portableCtx.updateMetadata(typeId, new BinaryMetadata(typeId, typeName, fieldTypeIds, affKeyFieldName, null)); } http://git-wip-us.apache.org/repos/asf/ignite/blob/93f12f76/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java index 05d3515..41598bc 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformContextImpl.java @@ -359,7 +359,7 @@ public class PlatformContextImpl implements PlatformContext { ); for (T4<Integer, String, String, Map<String, Integer>> meta : metas) - cacheObjProc.updateMetaData(meta.get1(), meta.get2(), meta.get3(), meta.get4()); + cacheObjProc.updateMetadata(meta.get1(), meta.get2(), meta.get3(), meta.get4()); } /** {@inheritDoc} */
