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()));