You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/09/03 12:54:29 UTC
[1/5] ignite git commit: Merge remote-tracking branch
'remotes/apache-git/master' into ignite-1353
Repository: ignite
Updated Branches:
refs/heads/ignite-1353 51257da41 -> 74be071bf
Merge remote-tracking branch 'remotes/apache-git/master' into ignite-1353
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9e5708e6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9e5708e6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9e5708e6
Branch: refs/heads/ignite-1353
Commit: 9e5708e643ddb594d1f38f20b5c889c572309738
Parents: c1d60ad 6ac9557
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Sep 3 11:30:43 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Sep 3 11:30:43 2015 +0300
----------------------------------------------------------------------
modules/aop/pom.xml | 1 +
modules/apache-license-gen/pom.xml | 1 +
modules/aws/pom.xml | 1 +
modules/clients/pom.xml | 1 +
modules/cloud/pom.xml | 1 +
modules/codegen/pom.xml | 1 +
modules/core/pom.xml | 1 +
.../configuration/PlatformConfiguration.java | 2 +-
.../apache/ignite/internal/IgniteKernal.java | 14 +-
.../portable/GridPortableMarshaller.java | 44 +-
.../portable/PortableAbstractLazyValue.java | 57 --
.../internal/portable/PortableBuilderEnum.java | 114 ---
.../internal/portable/PortableBuilderImpl.java | 531 ------------
.../portable/PortableBuilderReader.java | 776 ------------------
.../PortableBuilderSerializationAware.java | 29 -
.../portable/PortableBuilderSerializer.java | 211 -----
.../portable/PortableClassDescriptor.java | 57 +-
.../internal/portable/PortableContext.java | 6 +-
.../portable/PortableEnumArrayLazyValue.java | 112 ---
.../portable/PortableLazyArrayList.java | 159 ----
.../portable/PortableLazyLinkedList.java | 215 -----
.../internal/portable/PortableLazyMap.java | 218 -----
.../internal/portable/PortableLazyMapEntry.java | 66 --
.../internal/portable/PortableLazySet.java | 89 ---
.../internal/portable/PortableLazyValue.java | 28 -
.../portable/PortableObjectArrayLazyValue.java | 89 ---
.../portable/PortablePlainLazyValue.java | 47 --
.../portable/PortablePlainPortableObject.java | 50 --
.../internal/portable/PortableReaderExImpl.java | 154 +++-
.../ignite/internal/portable/PortableUtils.java | 11 +
.../portable/PortableValueWithType.java | 74 --
.../internal/portable/PortableWriterExImpl.java | 159 +++-
.../builder/PortableAbstractLazyValue.java | 57 ++
.../portable/builder/PortableBuilderEnum.java | 116 +++
.../portable/builder/PortableBuilderImpl.java | 537 +++++++++++++
.../portable/builder/PortableBuilderReader.java | 800 +++++++++++++++++++
.../PortableBuilderSerializationAware.java | 31 +
.../builder/PortableBuilderSerializer.java | 214 +++++
.../builder/PortableEnumArrayLazyValue.java | 114 +++
.../portable/builder/PortableLazyArrayList.java | 166 ++++
.../builder/PortableLazyLinkedList.java | 217 +++++
.../portable/builder/PortableLazyMap.java | 220 +++++
.../portable/builder/PortableLazyMapEntry.java | 68 ++
.../portable/builder/PortableLazySet.java | 92 +++
.../portable/builder/PortableLazyValue.java | 28 +
.../builder/PortableModifiableLazyValue.java | 52 ++
.../builder/PortableObjectArrayLazyValue.java | 91 +++
.../builder/PortablePlainLazyValue.java | 49 ++
.../builder/PortablePlainPortableObject.java | 53 ++
.../portable/builder/PortableValueWithType.java | 75 ++
.../internal/portable/builder/package-info.java | 22 +
.../CacheObjectPortableProcessorImpl.java | 2 +-
.../cache/store/CacheOsStoreManager.java | 32 +-
.../cache/store/CacheStoreManager.java | 10 +
.../store/GridCacheStoreManagerAdapter.java | 5 -
.../platform/PlatformNoopProcessor.java | 11 +-
.../processors/platform/PlatformProcessor.java | 10 +
.../cache/store/PlatformCacheStore.java | 25 +
.../resources/META-INF/classnames.properties | 2 +-
.../GridPortableBuilderAdditionalSelfTest.java | 232 +++++-
.../portable/GridPortableBuilderSelfTest.java | 1 +
.../GridPortableMarshallerSelfTest.java | 61 ++
.../GridPortableMetaDataDisabledSelfTest.java | 17 +
.../portable/GridPortableMetaDataSelfTest.java | 17 +
.../mutabletest/GridPortableTestClasses.java | 38 +-
...ClientNodePortableMetadataMultinodeTest.java | 11 +
modules/gce/pom.xml | 1 +
modules/geospatial/pom.xml | 1 +
modules/hadoop/pom.xml | 1 +
modules/hibernate/pom.xml | 1 +
modules/indexing/pom.xml | 1 +
modules/jcl/pom.xml | 1 +
modules/jms11/pom.xml | 1 +
modules/jta/pom.xml | 1 +
modules/kafka/pom.xml | 1 +
modules/log4j/pom.xml | 1 +
modules/log4j2/pom.xml | 1 +
modules/mesos/pom.xml | 1 +
modules/platform/pom.xml | 1 +
...processors.platform.PlatformBootstrapFactory | 2 +
.../PlatformAbstractConfigurationClosure.java | 61 ++
.../platform/PlatformConfigurationEx.java | 48 ++
.../platform/PlatformProcessorImpl.java | 360 +++++++++
.../platform/cache/PlatformCache.java | 2 +-
.../cache/store/PlatformCacheStore.java | 25 -
.../platform/cpp/PlatformCppBootstrap.java | 31 +
.../cpp/PlatformCppBootstrapFactory.java | 39 +
.../cpp/PlatformCppConfigurationClosure.java | 99 +++
.../cpp/PlatformCppConfigurationEx.java | 82 ++
.../dotnet/PlatformDotNetBootstrap.java | 31 +
.../dotnet/PlatformDotNetBootstrapFactory.java | 39 +
.../dotnet/PlatformDotNetCacheStore.java | 497 ++++++++++++
.../PlatformDotNetConfigurationClosure.java | 255 ++++++
.../dotnet/PlatformDotNetConfigurationEx.java | 91 +++
.../platform/utils/PlatformUtils.java | 14 +
.../platform/cpp/PlatformCppConfiguration.java | 47 ++
.../dotnet/PlatformDotNetCacheStoreFactory.java | 139 ++++
.../dotnet/PlatformDotNetConfiguration.java | 119 +++
.../dotnet/PlatformDotNetLifecycleBean.java | 109 +++
.../PlatformDotNetPortableConfiguration.java | 228 ++++++
...PlatformDotNetPortableTypeConfiguration.java | 248 ++++++
modules/rest-http/pom.xml | 1 +
modules/scalar-2.10/pom.xml | 1 +
modules/scalar/pom.xml | 1 +
modules/schedule/pom.xml | 1 +
modules/schema-import/pom.xml | 1 +
modules/slf4j/pom.xml | 1 +
modules/spark-2.10/pom.xml | 1 +
modules/spark/pom.xml | 1 +
modules/spring/pom.xml | 1 +
modules/ssh/pom.xml | 1 +
modules/tools/pom.xml | 1 +
modules/urideploy/pom.xml | 1 +
modules/visor-console-2.10/pom.xml | 1 +
modules/visor-console/pom.xml | 1 +
modules/visor-plugins/pom.xml | 1 +
modules/web/pom.xml | 1 +
modules/yardstick/pom.xml | 1 +
modules/yarn/pom.xml | 1 +
modules/zookeeper/pom.xml | 1 +
parent/pom.xml | 2 +
121 files changed, 6357 insertions(+), 3038 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9e5708e6/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9e5708e6/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9e5708e6/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
index 5d186c8,c8287a0..7378c22
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
@@@ -2244,29 -2243,51 +2245,76 @@@ public class GridPortableMarshallerSelf
/**
* @throws Exception If failed.
*/
+ public void testPredefinedTypeIds() throws Exception {
+ PortableMarshaller marsh = new PortableMarshaller();
+
+ PortableContext pCtx = initPortableContext(marsh);
+
+ Field field = pCtx.getClass().getDeclaredField("predefinedClasses");
+
+ field.setAccessible(true);
+
+ Set<Class> value = (Set<Class>)field.get(pCtx);
+
+ assertTrue(value.size() > 0);
+
+ for (Class pCls : value) {
+ PortableClassDescriptor desc = pCtx.descriptorForClass(pCls);
+
+ assertEquals(desc.typeId(), pCtx.typeId(pCls).id());
+ assertEquals(desc.typeId(), pCtx.typeId(pCls.getName()));
+ assertEquals(desc.typeId(), pCtx.typeId(pCtx.typeName(pCls.getName())));
+ }
+ }
+
+ /**
++ * @throws Exception If failed.
++ */
+ public void testCyclicReferencesMarshalling() throws Exception {
+ PortableMarshaller marsh = new PortableMarshaller();
+
+ SimpleObject obj = simpleObject();
+
+ obj.bArr = obj.inner.bArr;
+ obj.cArr = obj.inner.cArr;
+ obj.boolArr = obj.inner.boolArr;
+ obj.sArr = obj.inner.sArr;
+ obj.strArr = obj.inner.strArr;
+ obj.iArr = obj.inner.iArr;
+ obj.lArr = obj.inner.lArr;
+ obj.fArr = obj.inner.fArr;
+ obj.dArr = obj.inner.dArr;
+ obj.dateArr = obj.inner.dateArr;
+ obj.uuidArr = obj.inner.uuidArr;
+ obj.objArr = obj.inner.objArr;
+ obj.bdArr = obj.inner.bdArr;
+ obj.map = obj.inner.map;
+ obj.col = obj.inner.col;
+ obj.mEntry = obj.inner.mEntry;
+
+ SimpleObject res = (SimpleObject)marshalUnmarshal(obj, marsh);
+
+ assertEquals(obj, res);
+
+ assertTrue(res.bArr == res.inner.bArr);
+ assertTrue(res.cArr == res.inner.cArr);
+ assertTrue(res.boolArr == res.inner.boolArr);
+ assertTrue(res.sArr == res.inner.sArr);
+ assertTrue(res.strArr == res.inner.strArr);
+ assertTrue(res.iArr == res.inner.iArr);
+ assertTrue(res.lArr == res.inner.lArr);
+ assertTrue(res.fArr == res.inner.fArr);
+ assertTrue(res.dArr == res.inner.dArr);
+ assertTrue(res.dateArr == res.inner.dateArr);
+ assertTrue(res.uuidArr == res.inner.uuidArr);
+ assertTrue(res.objArr == res.inner.objArr);
+ assertTrue(res.bdArr == res.inner.bdArr);
+ assertTrue(res.map == res.inner.map);
+ assertTrue(res.col == res.inner.col);
+ assertTrue(res.mEntry == res.inner.mEntry);
+ }
+
+ /**
*
*/
private static class ObjectWithClassFields {
[5/5] ignite git commit: Merge remote-tracking branch
'remotes/origin/ignite-1353' into ignite-1353-main
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-1353' into ignite-1353-main
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/74be071b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/74be071b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/74be071b
Branch: refs/heads/ignite-1353
Commit: 74be071bf5d057c7956b6dce098b32cc19b61432
Parents: 51257da 3bbd238
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Sep 3 13:54:02 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Sep 3 13:54:02 2015 +0300
----------------------------------------------------------------------
.../internal/portable/GridPortableMarshallerSelfTest.java | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
[2/5] ignite git commit: Merge remote-tracking branch
'remotes/apache-git/master' into ignite-1353
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/apache-git/master' into ignite-1353
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/abadcf2b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/abadcf2b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/abadcf2b
Branch: refs/heads/ignite-1353
Commit: abadcf2b2122893bca52c97e60ca05e59edc37dd
Parents: 9e5708e
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Sep 3 11:31:22 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Sep 3 11:31:22 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/GridPortableMarshallerSelfTest.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/abadcf2b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
index 7378c22..5f2b8d1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
@@ -71,7 +71,6 @@ import sun.misc.Unsafe;
import static org.apache.ignite.internal.portable.PortableThreadLocalMemoryAllocator.THREAD_LOCAL_ALLOC;
import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertTrue;
/**
* Portable marshaller tests.
[3/5] ignite git commit: ignite-1353: removed redundant sets and maps
from portable API implementation
Posted by sb...@apache.org.
ignite-1353: removed redundant sets and maps from portable API implementation
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e77e1c74
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e77e1c74
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e77e1c74
Branch: refs/heads/ignite-1353
Commit: e77e1c743ee5e6618767b636b920d7043b4898f0
Parents: abadcf2
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Sep 3 11:34:16 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Sep 3 11:34:16 2015 +0300
----------------------------------------------------------------------
.../portable/PortableClassDescriptor.java | 77 +++++++++-------
.../internal/portable/PortableContext.java | 79 ++++++-----------
.../internal/portable/PortableWriterExImpl.java | 92 ++++++--------------
.../GridPortableMarshallerSelfTest.java | 15 ++--
4 files changed, 104 insertions(+), 159 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/e77e1c74/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 b75e3c9..a2b4b74 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
@@ -19,10 +19,13 @@ package org.apache.ignite.internal.portable;
import java.io.Externalizable;
import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -36,6 +39,8 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerExclusions;
+import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.marshaller.portable.PortableMarshaller;
import org.apache.ignite.portable.PortableException;
import org.apache.ignite.portable.PortableIdMapper;
import org.apache.ignite.portable.PortableMarshalAware;
@@ -95,36 +100,10 @@ public class PortableClassDescriptor {
private final boolean registered;
/** */
- private final boolean excluded;
+ private final boolean useOptMarshaller;
- /**
- * @param ctx Context.
- * @param cls Class.
- * @param userType User type flag.
- * @param typeId Type ID.
- * @param typeName Type name.
- * @param idMapper ID mapper.
- * @param serializer Serializer.
- * @param useTs Use timestamp flag.
- * @param metaDataEnabled Metadata enabled flag.
- * @param keepDeserialized Keep deserialized flag.
- * @throws PortableException In case of error.
- */
- PortableClassDescriptor(
- PortableContext ctx,
- Class<?> cls,
- boolean userType,
- int typeId,
- String typeName,
- @Nullable PortableIdMapper idMapper,
- @Nullable PortableSerializer serializer,
- boolean useTs,
- boolean metaDataEnabled,
- boolean keepDeserialized
- ) throws PortableException {
- this(ctx, cls, userType, typeId, typeName, idMapper, serializer, useTs, metaDataEnabled, keepDeserialized,
- true);
- }
+ /** */
+ private final boolean excluded;
/**
* @param ctx Context.
@@ -138,6 +117,7 @@ public class PortableClassDescriptor {
* @param metaDataEnabled Metadata enabled flag.
* @param keepDeserialized Keep deserialized flag.
* @param registered Whether typeId has been successfully registered by MarshallerContext or not.
+ * @param predefined Whether the class is predefined or not.
* @throws PortableException In case of error.
*/
PortableClassDescriptor(
@@ -151,7 +131,8 @@ public class PortableClassDescriptor {
boolean useTs,
boolean metaDataEnabled,
boolean keepDeserialized,
- boolean registered
+ boolean registered,
+ boolean predefined
) throws PortableException {
assert ctx != null;
assert cls != null;
@@ -168,6 +149,8 @@ public class PortableClassDescriptor {
excluded = MarshallerExclusions.isExcluded(cls);
+ useOptMarshaller = !predefined && initUseOptimizedMarshallerFlag();
+
if (excluded)
mode = Mode.EXCLUSION;
else
@@ -318,6 +301,14 @@ public class PortableClassDescriptor {
}
/**
+ * @return {@code true} if {@link OptimizedMarshaller} must be used instead of {@link PortableMarshaller}
+ * for object serialization and deserialization.
+ */
+ public boolean useOptimizedMarshaller() {
+ return useOptMarshaller;
+ }
+
+ /**
* Checks whether the class values are explicitly excluded from marshalling.
*
* @return {@code true} if excluded, {@code false} otherwise.
@@ -720,6 +711,32 @@ public class PortableClassDescriptor {
}
/**
+ * Determines whether to use {@link OptimizedMarshaller} for serialization or
+ * not.
+ *
+ * @return {@code true} if to use, {@code false} otherwise.
+ */
+ private boolean initUseOptimizedMarshallerFlag() {
+ boolean use;
+
+ try {
+ Method writeObj = cls.getDeclaredMethod("writeObject", ObjectOutputStream.class);
+ Method readObj = cls.getDeclaredMethod("readObject", ObjectInputStream.class);
+
+ if (!Modifier.isStatic(writeObj.getModifiers()) && !Modifier.isStatic(readObj.getModifiers()) &&
+ writeObj.getReturnType() == void.class && readObj.getReturnType() == void.class)
+ use = true;
+ else
+ use = false;
+ }
+ catch (NoSuchMethodException e) {
+ use = false;
+ }
+
+ return use;
+ }
+
+ /**
* @param cls Class.
* @return Mode.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/e77e1c74/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 29c635e..24c39b7 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
@@ -112,9 +112,6 @@ public class PortableContext implements Externalizable {
private final Map<Integer, PortableClassDescriptor> predefinedTypes = new HashMap<>();
/** */
- private final Set<Class> predefinedClasses = new HashSet<>();
-
- /** */
private final Map<String, Integer> predefinedTypeNames = new HashMap<>();
/** */
@@ -221,18 +218,18 @@ public class PortableContext implements Externalizable {
registerPredefinedType(Date[].class, GridPortableMarshaller.DATE_ARR);
registerPredefinedType(Object[].class, GridPortableMarshaller.OBJ_ARR);
- registerPredefinedType(ArrayList.class, 0);
- registerPredefinedType(LinkedList.class, 0);
- registerPredefinedType(HashSet.class, 0);
- registerPredefinedType(LinkedHashSet.class, 0);
- registerPredefinedType(TreeSet.class, 0);
- registerPredefinedType(ConcurrentSkipListSet.class, 0);
+ registerPredefinedType(ArrayList.class, GridPortableMarshaller.ARR_LIST);
+ registerPredefinedType(LinkedList.class, GridPortableMarshaller.LINKED_LIST);
+ registerPredefinedType(HashSet.class, GridPortableMarshaller.HASH_SET);
+ registerPredefinedType(LinkedHashSet.class, GridPortableMarshaller.LINKED_HASH_SET);
+ registerPredefinedType(TreeSet.class, GridPortableMarshaller.TREE_SET);
+ registerPredefinedType(ConcurrentSkipListSet.class, GridPortableMarshaller.CONC_SKIP_LIST_SET);
- registerPredefinedType(HashMap.class, 0);
- registerPredefinedType(LinkedHashMap.class, 0);
- registerPredefinedType(TreeMap.class, 0);
- registerPredefinedType(ConcurrentHashMap.class, 0);
- registerPredefinedType(ConcurrentHashMap8.class, 0);
+ registerPredefinedType(HashMap.class, GridPortableMarshaller.HASH_MAP);
+ registerPredefinedType(LinkedHashMap.class, GridPortableMarshaller.LINKED_HASH_MAP);
+ registerPredefinedType(TreeMap.class, GridPortableMarshaller.TREE_MAP);
+ registerPredefinedType(ConcurrentHashMap.class, GridPortableMarshaller.CONC_HASH_MAP);
+ registerPredefinedType(ConcurrentHashMap8.class, GridPortableMarshaller.CONC_HASH_MAP);
registerPredefinedType(GridMapEntry.class, 60);
registerPredefinedType(IgniteBiTuple.class, 61);
@@ -508,7 +505,10 @@ public class PortableContext implements Externalizable {
null,
useTs,
metaDataEnabled,
- keepDeserialized);
+ keepDeserialized,
+ true, /* registered */
+ false /* predefined */
+ );
PortableClassDescriptor old = descByCls.putIfAbsent(cls, desc);
@@ -556,7 +556,9 @@ public class PortableContext implements Externalizable {
useTs,
metaDataEnabled,
keepDeserialized,
- registered);
+ registered,
+ false /* predefined */
+ );
// perform put() instead of putIfAbsent() because "registered" flag may have been changed.
userTypes.put(typeId, desc);
@@ -611,31 +613,6 @@ public class PortableContext implements Externalizable {
}
/**
- * @param cls Class.
- * @return Type ID.
- * @throws PortableException In case of error.
- */
- public Type typeId(Class cls) throws PortableException {
- String clsName = cls.getName();
-
- if (predefinedClasses.contains(cls))
- return new Type(descByCls.get(cls).typeId(), true);
-
- if (marshCtx.isSystemType(clsName))
- return new Type(clsName.hashCode(), true);
-
- PortableClassDescriptor desc = descByCls.get(cls);
-
- boolean registered = desc != null && desc.registered();
-
- if (!registered)
- // forces to register the class and fill up all required data structures
- desc = registerUserClassDescriptor(cls);
-
- return new Type(desc.typeId(), desc.registered());
- }
-
- /**
* @param typeId Type ID.
* @param fieldName Field name.
* @return Field ID.
@@ -716,10 +693,11 @@ public class PortableContext implements Externalizable {
null,
false,
false,
- false
+ false,
+ true, /* registered */
+ true /* predefined */
);
- predefinedClasses.add(cls);
predefinedTypeNames.put(typeName, id);
predefinedTypes.put(id, desc);
@@ -789,7 +767,10 @@ public class PortableContext implements Externalizable {
serializer,
useTs,
metaDataEnabled,
- keepDeserialized);
+ keepDeserialized,
+ true, /* registered */
+ false /* predefined */
+ );
fieldsMeta = desc.fieldsMeta();
@@ -882,16 +863,6 @@ public class PortableContext implements Externalizable {
}
/**
- * Returns whether {@code cls} is predefined in the context or not.
- *
- * @param cls Class.
- * @return {@code true} if predefined, {@code false} otherwise.
- */
- public boolean isPredefinedClass(Class<?> cls) {
- return predefinedClasses.contains(cls);
- }
-
- /**
* Returns instance of {@link OptimizedMarshaller}.
*
* @return Optimized marshaller.
http://git-wip-us.apache.org/repos/asf/ignite/blob/e77e1c74/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 364d5f8..3152c4b 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
@@ -93,9 +93,6 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
private static final int INIT_CAP = 1024;
/** */
- private static final ConcurrentHashMap<Class<?>, Boolean> useOptMarshCache = new ConcurrentHashMap<>();
-
- /** */
private final PortableContext ctx;
/** */
@@ -197,7 +194,19 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
void marshal(Object obj, boolean detached) throws PortableException {
assert obj != null;
- if (useOptimizedMarshaller(obj)) {
+ cls = obj.getClass();
+
+ PortableClassDescriptor desc = ctx.descriptorForClass(cls);
+
+ if (desc == null)
+ throw new PortableException("Object is not portable: [class=" + cls + ']');
+
+ if (desc.excluded()) {
+ doWriteByte(NULL);
+ return;
+ }
+
+ if (desc.useOptimizedMarshaller()) {
writeByte(OPTM_MARSH);
try {
@@ -214,18 +223,6 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
return;
}
- cls = obj.getClass();
-
- PortableClassDescriptor desc = ctx.descriptorForClass(cls);
-
- if (desc == null)
- throw new PortableException("Object is not portable: [class=" + cls + ']');
-
- if (desc.excluded()) {
- doWriteByte(NULL);
- return;
- }
-
if (desc.getWriteReplaceMethod() != null) {
Object replace;
@@ -269,44 +266,6 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
desc.write(obj, this);
}
- /**
- * Determines whether to use {@link org.apache.ignite.marshaller.optimized.OptimizedMarshaller} for serialization
- * or not.
- *
- * @param obj Object to serialize.
- * @return {@code true} if to use, {@code false} otherwise.
- */
- private boolean useOptimizedMarshaller(Object obj) {
- Class<?> cls = obj.getClass();
-
- Boolean use = useOptMarshCache.get(cls);
-
- if (use != null)
- return use;
-
- if (ctx.isPredefinedClass(cls))
- use = false;
- else {
- try {
- Method writeObj = cls.getDeclaredMethod("writeObject", ObjectOutputStream.class);
- Method readObj = cls.getDeclaredMethod("readObject", ObjectInputStream.class);
-
- if (!Modifier.isStatic(writeObj.getModifiers()) && !Modifier.isStatic(readObj.getModifiers()) &&
- writeObj.getReturnType() == void.class && readObj.getReturnType() == void.class)
- use = true;
- else
- use = false;
-
- } catch (NoSuchMethodException e) {
- use = false;
- }
- }
-
- useOptMarshCache.putIfAbsent(cls, use);
-
- return use;
- }
-
/**
* @param obj Object.
* @return Handle.
@@ -803,12 +762,12 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
if (tryWriteAsHandle(val))
return;
- PortableContext.Type type = ctx.typeId(val.getClass().getComponentType());
+ PortableClassDescriptor desc = ctx.descriptorForClass(val.getClass().getComponentType());
doWriteByte(OBJ_ARR);
- if (type.registered())
- doWriteInt(type.id());
+ if (desc.registered())
+ doWriteInt(desc.typeId());
else {
doWriteInt(UNREGISTERED_TYPE_ID);
doWriteString(val.getClass().getComponentType().getName());
@@ -887,12 +846,12 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
if (val == null)
doWriteByte(NULL);
else {
- PortableContext.Type type = ctx.typeId(val.getClass());
+ PortableClassDescriptor desc = ctx.descriptorForClass(val.getClass());
doWriteByte(ENUM);
- if (type.registered())
- doWriteInt(type.id());
+ if (desc.registered())
+ doWriteInt(desc.typeId());
else {
doWriteInt(UNREGISTERED_TYPE_ID);
doWriteString(val.getClass().getName());
@@ -911,12 +870,11 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
if (val == null)
doWriteByte(NULL);
else {
- PortableContext.Type type = ctx.typeId(val.getClass().getComponentType());
-
+ PortableClassDescriptor desc = ctx.descriptorForClass(val.getClass().getComponentType());
doWriteByte(ENUM_ARR);
- if (type.registered())
- doWriteInt(type.id());
+ if (desc.registered())
+ doWriteInt(desc.typeId());
else {
doWriteInt(UNREGISTERED_TYPE_ID);
doWriteString(val.getClass().getComponentType().getName());
@@ -937,12 +895,12 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
if (val == null)
doWriteByte(NULL);
else {
- PortableContext.Type type = ctx.typeId(val);
+ PortableClassDescriptor desc = ctx.descriptorForClass(val);
doWriteByte(CLASS);
- if (type.registered())
- doWriteInt(type.id());
+ if (desc.registered())
+ doWriteInt(desc.typeId());
else {
doWriteInt(UNREGISTERED_TYPE_ID);
doWriteString(val.getClass().getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/e77e1c74/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
index 5f2b8d1..332a605 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
@@ -2249,20 +2249,19 @@ public class GridPortableMarshallerSelfTest extends GridCommonAbstractTest {
PortableContext pCtx = initPortableContext(marsh);
- Field field = pCtx.getClass().getDeclaredField("predefinedClasses");
+ Field field = pCtx.getClass().getDeclaredField("predefinedTypeNames");
field.setAccessible(true);
- Set<Class> value = (Set<Class>)field.get(pCtx);
+ Map<String, Integer> map = (Map<String, Integer>)field.get(pCtx);
- assertTrue(value.size() > 0);
+ assertTrue(map.size() > 0);
- for (Class pCls : value) {
- PortableClassDescriptor desc = pCtx.descriptorForClass(pCls);
+ for (Map.Entry<String, Integer> entry : map.entrySet()) {
+ PortableClassDescriptor desc = pCtx.descriptorForTypeId(false, entry.getValue(), null);
- assertEquals(desc.typeId(), pCtx.typeId(pCls).id());
- assertEquals(desc.typeId(), pCtx.typeId(pCls.getName()));
- assertEquals(desc.typeId(), pCtx.typeId(pCtx.typeName(pCls.getName())));
+ assertEquals(desc.typeId(), pCtx.typeId(desc.describedClass().getName()));
+ assertEquals(desc.typeId(), pCtx.typeId(pCtx.typeName(desc.describedClass().getName())));
}
}
[4/5] ignite git commit: ignite-1353: reverted changes related to the
registration of maps and collections in portable context
Posted by sb...@apache.org.
ignite-1353: reverted changes related to the registration of maps and collections in portable context
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3bbd2380
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3bbd2380
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3bbd2380
Branch: refs/heads/ignite-1353
Commit: 3bbd23804aa641181d51e28e80d97ad31743f18b
Parents: e77e1c7
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Sep 3 13:52:05 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Sep 3 13:52:05 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableContext.java | 24 ++++++++++----------
.../GridPortableMarshallerSelfTest.java | 5 ++++
2 files changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3bbd2380/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 24c39b7..326d187 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
@@ -218,18 +218,18 @@ public class PortableContext implements Externalizable {
registerPredefinedType(Date[].class, GridPortableMarshaller.DATE_ARR);
registerPredefinedType(Object[].class, GridPortableMarshaller.OBJ_ARR);
- registerPredefinedType(ArrayList.class, GridPortableMarshaller.ARR_LIST);
- registerPredefinedType(LinkedList.class, GridPortableMarshaller.LINKED_LIST);
- registerPredefinedType(HashSet.class, GridPortableMarshaller.HASH_SET);
- registerPredefinedType(LinkedHashSet.class, GridPortableMarshaller.LINKED_HASH_SET);
- registerPredefinedType(TreeSet.class, GridPortableMarshaller.TREE_SET);
- registerPredefinedType(ConcurrentSkipListSet.class, GridPortableMarshaller.CONC_SKIP_LIST_SET);
-
- registerPredefinedType(HashMap.class, GridPortableMarshaller.HASH_MAP);
- registerPredefinedType(LinkedHashMap.class, GridPortableMarshaller.LINKED_HASH_MAP);
- registerPredefinedType(TreeMap.class, GridPortableMarshaller.TREE_MAP);
- registerPredefinedType(ConcurrentHashMap.class, GridPortableMarshaller.CONC_HASH_MAP);
- registerPredefinedType(ConcurrentHashMap8.class, GridPortableMarshaller.CONC_HASH_MAP);
+ registerPredefinedType(ArrayList.class, 0);
+ registerPredefinedType(LinkedList.class, 0);
+ registerPredefinedType(HashSet.class, 0);
+ registerPredefinedType(LinkedHashSet.class, 0);
+ registerPredefinedType(TreeSet.class, 0);
+ registerPredefinedType(ConcurrentSkipListSet.class, 0);
+
+ registerPredefinedType(HashMap.class, 0);
+ registerPredefinedType(LinkedHashMap.class, 0);
+ registerPredefinedType(TreeMap.class, 0);
+ registerPredefinedType(ConcurrentHashMap.class, 0);
+ registerPredefinedType(ConcurrentHashMap8.class, 0);
registerPredefinedType(GridMapEntry.class, 60);
registerPredefinedType(IgniteBiTuple.class, 61);
http://git-wip-us.apache.org/repos/asf/ignite/blob/3bbd2380/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
index 332a605..4545a58 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/portable/GridPortableMarshallerSelfTest.java
@@ -2258,6 +2258,11 @@ public class GridPortableMarshallerSelfTest extends GridCommonAbstractTest {
assertTrue(map.size() > 0);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
+ int id = entry.getValue();
+
+ if (id == GridPortableMarshaller.UNREGISTERED_TYPE_ID)
+ continue;
+
PortableClassDescriptor desc = pCtx.descriptorForTypeId(false, entry.getValue(), null);
assertEquals(desc.typeId(), pCtx.typeId(desc.describedClass().getName()));