You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/14 15:08:40 UTC
[01/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Repository: ignite
Updated Branches:
refs/heads/ignite-4938 [created] c89cc392f
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml b/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
index 9b76344..f6d5bab 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
@@ -53,7 +53,7 @@
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-primary.xml b/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
index 0268cff..c1c41b4 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
@@ -55,7 +55,7 @@
<property name="gridName" value="test-IGFS-cli"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml b/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
index f4f794f..bd4b215 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
@@ -53,7 +53,7 @@
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
index ff4ccea..bc07c04 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
@@ -70,6 +70,7 @@ import org.apache.ignite.igfs.IgfsIpcEndpointConfiguration;
import org.apache.ignite.igfs.IgfsIpcEndpointType;
import org.apache.ignite.igfs.IgfsMode;
import org.apache.ignite.igfs.IgfsPath;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.igfs.IgfsCommonAbstractTest;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -77,7 +78,6 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
index 48d624d..4fa73b5 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
@@ -27,7 +27,7 @@ import org.apache.ignite.cache.QueryIndex;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
index 8974116..b385738 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
@@ -37,8 +37,8 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -76,7 +76,7 @@ public abstract class AbstractH2CompareQueryTest extends GridCommonAbstractTest
c.setDiscoverySpi(disco);
- c.setMarshaller(new OptimizedMarshaller(true));
+ c.setMarshaller(new BinaryMarshaller());
c.setCacheConfiguration(cacheConfigurations());
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java b/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
index 91d0c0b..bbc9762 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
@@ -34,7 +34,7 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
/**
* SQL query stress test.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml
index c680314..248578d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml
@@ -25,7 +25,7 @@
<property name="connectorConfiguration"><null/></property>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller" />
+ <bean class="OptimizedMarshaller" />
</property>
<property name="discoverySpi">
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java b/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
index 390a528..a7bfc58 100644
--- a/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
+++ b/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
@@ -19,10 +19,10 @@ package org.apache.ignite.internal;
import org.apache.ignite.IgniteSpringBean;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
----------------------------------------------------------------------
diff --git a/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml b/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
index 53848fe..e504fe7 100644
--- a/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
+++ b/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
@@ -42,7 +42,7 @@
Configure optimized marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<!--
For better performance set this property to true in case
all marshalled classes implement java.io.Serializable.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-offheap-config.xml b/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
index 86e9656..5f30e86 100644
--- a/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
@@ -29,7 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-onheap-config.xml b/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
index 65f51b9..4638651 100644
--- a/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
@@ -29,7 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/yardstick/config/ignite-int-max-values-swap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-swap-config.xml b/modules/yardstick/config/ignite-int-max-values-swap-config.xml
index edb15d3..b19e097 100644
--- a/modules/yardstick/config/ignite-int-max-values-swap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-swap-config.xml
@@ -29,7 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/yardstick/config/ignite-jdbc-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-jdbc-config.xml b/modules/yardstick/config/ignite-jdbc-config.xml
index 9428858..b944a6b 100644
--- a/modules/yardstick/config/ignite-jdbc-config.xml
+++ b/modules/yardstick/config/ignite-jdbc-config.xml
@@ -33,7 +33,7 @@
<property name="localHost" value="127.0.0.1"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
[11/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 2
Posted by ag...@apache.org.
IGNITE-4938 De-pub of OptimizedMarshaller - take 2
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7942d585
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7942d585
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7942d585
Branch: refs/heads/ignite-4938
Commit: 7942d585fde3fd11964f479b0442caa2ba0459d1
Parents: a3686db
Author: Alexander Paschenko <al...@gmail.com>
Authored: Tue Apr 11 19:10:37 2017 +0300
Committer: Alexander Paschenko <al...@gmail.com>
Committed: Tue Apr 11 19:10:37 2017 +0300
----------------------------------------------------------------------
modules/core/src/test/config/igfs-loopback.xml | 15 ++-------
modules/core/src/test/config/igfs-shmem.xml | 15 ++-------
.../src/test/config/spring-start-nodes-attr.xml | 4 +--
.../core/src/test/config/spring-start-nodes.xml | 4 +--
.../IgniteExternalizableAbstractTest.java | 15 +++------
.../apache/ignite/igfs/IgfsPathSelfTest.java | 8 +++--
.../internal/GridLifecycleAwareSelfTest.java | 4 +--
.../managers/GridManagerStopSelfTest.java | 4 +--
.../cache/GridCacheEntryMemorySizeSelfTest.java | 3 +-
...ridCacheStoreManagerDeserializationTest.java | 4 +--
.../cache/GridCacheVersionSelfTest.java | 7 ++---
.../IgniteCacheCreatePutMultiNodeSelfTest.java | 7 ++---
.../distributed/IgniteCacheCreatePutTest.java | 7 ++---
.../near/GridCacheNearTxForceKeyTest.java | 4 +--
.../igfs/IgfsAbstractBaseSelfTest.java | 11 -------
.../processors/igfs/IgfsFileInfoSelfTest.java | 9 ++++--
.../IgfsPrimaryOptimziedMarshallerSelfTest.java | 28 -----------------
...ent2ClassLoadersOptimizedMarshallerTest.java | 31 ------------------
...mentClassLoadingOptimizedMarshallerTest.java | 31 ------------------
.../GridMarshallerPerformanceTest.java | 13 ++++----
.../IgniteMessagingWithClientTest.java | 4 +--
...pClientDiscoveryMarshallerCheckSelfTest.java | 4 +--
.../TcpDiscoveryMarshallerCheckSelfTest.java | 4 +--
.../testframework/junits/GridAbstractTest.java | 33 ++++++++++++++++++++
.../junits/IgniteTestResources.java | 6 +---
.../ignite/testsuites/IgniteIgfsTestSuite.java | 3 --
.../testsuites/IgniteKernalSelfTestSuite.java | 4 ---
.../webapp/META-INF/ignite-webapp-config.xml | 15 ++-------
.../test/config/hadoop-fs-open-test/grid-0.xml | 3 +-
.../test/config/hadoop-fs-open-test/grid-1.xml | 3 +-
.../test/config/hadoop-fs-open-test/grid-2.xml | 3 +-
.../test/config/igfs-cli-config-dual-async.xml | 3 +-
.../test/config/igfs-cli-config-dual-sync.xml | 3 +-
.../src/test/config/igfs-cli-config-primary.xml | 3 +-
.../src/test/config/igfs-cli-config-proxy.xml | 3 +-
.../IgniteHadoopFileSystemAbstractSelfTest.java | 4 +--
.../cache/IgniteCacheNoClassQuerySelfTest.java | 4 +--
.../FetchingQueryCursorStressTest.java | 4 +--
.../GridSpringBeanSerializationSelfTest.java | 15 +++++----
.../webapp2/META-INF/ignite-webapp-config.xml | 15 ++-------
.../ignite-int-max-values-offheap-config.xml | 4 +--
.../ignite-int-max-values-onheap-config.xml | 4 +--
.../ignite-int-max-values-swap-config.xml | 4 +--
modules/yardstick/config/ignite-jdbc-config.xml | 4 +--
44 files changed, 115 insertions(+), 261 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/config/igfs-loopback.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/igfs-loopback.xml b/modules/core/src/test/config/igfs-loopback.xml
index 7ec5f10..e6c36c2 100644
--- a/modules/core/src/test/config/igfs-loopback.xml
+++ b/modules/core/src/test/config/igfs-loopback.xml
@@ -54,21 +54,10 @@
-->
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!--
- Configure optimized marshaller.
+ Configure binary marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <!--
- For better performance set this property to true in case
- all marshalled classes implement java.io.Serializable.
- Default value is true.
-
- Note, that it is recommended to implement java.io.Externalizable
- instead of java.io.Serializable for smaller network footprint
- and even better performance.
- -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="fileSystemConfiguration">
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/config/igfs-shmem.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/igfs-shmem.xml b/modules/core/src/test/config/igfs-shmem.xml
index f6b1790..e5f52bb 100644
--- a/modules/core/src/test/config/igfs-shmem.xml
+++ b/modules/core/src/test/config/igfs-shmem.xml
@@ -54,21 +54,10 @@
-->
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!--
- Configure optimized marshaller.
+ Configure binary marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <!--
- For better performance set this property to true in case
- all marshalled classes implement java.io.Serializable.
- Default value is true.
-
- Note, that it is recommended to implement java.io.Externalizable
- instead of java.io.Serializable for smaller network footprint
- and even better performance.
- -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="fileSystemConfiguration">
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/config/spring-start-nodes-attr.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/spring-start-nodes-attr.xml b/modules/core/src/test/config/spring-start-nodes-attr.xml
index b329973..09cd934 100644
--- a/modules/core/src/test/config/spring-start-nodes-attr.xml
+++ b/modules/core/src/test/config/spring-start-nodes-attr.xml
@@ -37,9 +37,7 @@
<property name="connectorConfiguration"><null/></property>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="discoverySpi">
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/config/spring-start-nodes.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/spring-start-nodes.xml b/modules/core/src/test/config/spring-start-nodes.xml
index 9b2ee94..5de58f0 100644
--- a/modules/core/src/test/config/spring-start-nodes.xml
+++ b/modules/core/src/test/config/spring-start-nodes.xml
@@ -31,9 +31,7 @@
<property name="connectorConfiguration"><null/></property>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="discoverySpi">
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
index bfb8326..361d80f 100644
--- a/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
@@ -19,10 +19,8 @@ package org.apache.ignite;
import java.util.ArrayList;
import java.util.List;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.MarshallerContext;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -30,21 +28,16 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
* Base externalizable test class.
*/
public class IgniteExternalizableAbstractTest extends GridCommonAbstractTest {
- /** */
- private static final MarshallerContext CTX = new MarshallerContextTestImpl();
-
/**
* @return Marshallers.
*/
- protected List<Marshaller> getMarshallers() {
+ protected List<Marshaller> getMarshallers() throws IgniteCheckedException {
List<Marshaller> marshallers = new ArrayList<>();
- OptimizedMarshaller opt = new OptimizedMarshaller();
-
- opt.setContext(CTX);
+ BinaryMarshaller bin = createStandaloneBinaryMarshaller();
marshallers.add(new JdkMarshaller());
- marshallers.add(opt);
+ marshallers.add(bin);
return marshallers;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
index 110ea30..8e25054 100644
--- a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
@@ -24,7 +24,6 @@ import java.net.URI;
import java.util.Arrays;
import java.util.concurrent.Callable;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -35,7 +34,12 @@ import org.jetbrains.annotations.Nullable;
*/
public class IgfsPathSelfTest extends GridCommonAbstractTest {
/** Marshaller to test {@link Externalizable} interface. */
- private final Marshaller marshaller = new OptimizedMarshaller();
+ private final Marshaller marshaller;
+
+ /** Ctor. */
+ public IgfsPathSelfTest() throws IgniteCheckedException {
+ marshaller = createStandaloneBinaryMarshaller();
+ }
/**
* Test public methods of igfs path.
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
index 7b80f6a..3815c3b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
@@ -23,8 +23,8 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.ConnectorConfiguration;
import org.apache.ignite.configuration.ConnectorMessageInterceptor;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lifecycle.LifecycleAware;
import org.apache.ignite.lifecycle.LifecycleBean;
import org.apache.ignite.lifecycle.LifecycleEventType;
@@ -105,7 +105,7 @@ public class GridLifecycleAwareSelfTest extends GridAbstractLifecycleAwareSelfTe
/**
*/
- private static class TestMarshaller extends OptimizedMarshaller implements LifecycleAware {
+ private static class TestMarshaller extends BinaryMarshaller implements LifecycleAware {
/** */
private final TestLifecycleAware lifecycleAware = new TestLifecycleAware(null);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
index 27b7825..55aefb3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.managers;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager;
import org.apache.ignite.internal.managers.collision.GridCollisionManager;
import org.apache.ignite.internal.managers.communication.GridIoManager;
@@ -27,7 +28,6 @@ import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
import org.apache.ignite.internal.managers.swapspace.GridSwapSpaceManager;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.pool.PoolProcessor;
import org.apache.ignite.internal.processors.resource.GridResourceProcessor;
import org.apache.ignite.resources.LoggerResource;
@@ -126,7 +126,7 @@ public class GridManagerStopSelfTest extends GridCommonAbstractTest {
injectLogger(spi);
ctx.config().setCommunicationSpi(spi);
- ctx.config().setMarshaller(new OptimizedMarshaller());
+ ctx.config().setMarshaller(new BinaryMarshaller());
GridIoManager mgr = new GridIoManager(ctx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
index c086c35..556f66c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
@@ -28,7 +28,6 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -134,7 +133,7 @@ public class GridCacheEntryMemorySizeSelfTest extends GridCommonAbstractTest {
* @return
*/
protected Marshaller createMarshaller() throws IgniteCheckedException {
- Marshaller marsh = new OptimizedMarshaller();
+ Marshaller marsh = createStandaloneBinaryMarshaller();
marsh.setContext(new MarshallerContext() {
@Override public boolean registerClassName(byte platformId, int typeId, String clsName) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
index da1a395..39414f8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
@@ -35,10 +35,10 @@ import org.apache.ignite.cache.store.CacheStoreAdapter;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.extras.GridCacheObsoleteEntryExtras;
import org.apache.ignite.internal.processors.cache.store.CacheLocalStore;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -97,7 +97,7 @@ public class GridCacheStoreManagerDeserializationTest extends GridCommonAbstract
if (igniteInstanceName != null && igniteInstanceName.toLowerCase().startsWith("binary"))
c.setMarshaller(new BinaryMarshaller());
else
- c.setMarshaller(new OptimizedMarshaller());
+ c.setMarshaller(new JdkMarshaller());
TcpDiscoverySpi disco = new TcpDiscoverySpi();
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
index 45db0bb..b4223e5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
@@ -18,10 +18,9 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -81,9 +80,7 @@ public class GridCacheVersionSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver = version(1, 1);
GridCacheVersionEx verEx = new GridCacheVersionEx(2, 2, 0, 0, ver);
- OptimizedMarshaller marsh = new OptimizedMarshaller(false);
-
- marsh.setContext(new MarshallerContextTestImpl());
+ Marshaller marsh = createStandaloneBinaryMarshaller();
byte[] verBytes = marsh.marshal(ver);
byte[] verExBytes = marsh.marshal(verEx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
index 3b7fa4f..23fc941 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
@@ -29,7 +29,7 @@ import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -55,10 +55,7 @@ public class IgniteCacheCreatePutMultiNodeSelfTest extends GridCommonAbstractTes
cfg.setDiscoverySpi(discoSpi);
- OptimizedMarshaller marsh = new OptimizedMarshaller();
- marsh.setRequireSerializable(false);
-
- cfg.setMarshaller(marsh);
+ cfg.setMarshaller(new BinaryMarshaller());
return cfg;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
index 42d6a12..9847209 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
@@ -26,7 +26,7 @@ import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
@@ -67,10 +67,7 @@ public class IgniteCacheCreatePutTest extends GridCommonAbstractTest {
cfg.setDiscoverySpi(discoSpi);
- OptimizedMarshaller marsh = new OptimizedMarshaller();
- marsh.setRequireSerializable(false);
-
- cfg.setMarshaller(marsh);
+ cfg.setMarshaller(new BinaryMarshaller());
CacheConfiguration ccfg = new CacheConfiguration();
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
index e4624d5..4372bff 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
@@ -22,7 +22,7 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -72,7 +72,7 @@ public class GridCacheNearTxForceKeyTest extends GridCommonAbstractTest {
Ignite ignite1 = startGrid(1);
// This key should become primary for ignite1.
- final Integer key = ignite0.configuration().getMarshaller() instanceof OptimizedMarshaller ? 2 : 7;
+ final Integer key = ignite0.configuration().getMarshaller() instanceof BinaryMarshaller ? 7 : 2;
assertNull(cache.getAndPut(key, key));
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
index 8886f57..45628a2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
@@ -47,7 +47,6 @@ import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteKernal;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
@@ -241,13 +240,6 @@ public abstract class IgfsAbstractBaseSelfTest extends IgfsCommonAbstractTest {
}
/**
- * @return Use optimized marshaller flag.
- */
- protected boolean useOptimizedMarshaller() {
- return false;
- }
-
- /**
* @return Whether append is supported.
*/
protected boolean appendSupported() {
@@ -413,9 +405,6 @@ public abstract class IgfsAbstractBaseSelfTest extends IgfsCommonAbstractTest {
IgniteConfiguration cfg = new IgniteConfiguration();
- if (useOptimizedMarshaller())
- cfg.setMarshaller(new OptimizedMarshaller());
-
cfg.setIgniteInstanceName(igniteInstanceName);
TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
index 435ff15..a81bba5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
@@ -21,7 +21,6 @@ import java.io.Externalizable;
import java.util.Random;
import java.util.concurrent.Callable;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
@@ -32,7 +31,13 @@ import org.jetbrains.annotations.Nullable;
*/
public class IgfsFileInfoSelfTest extends IgfsCommonAbstractTest {
/** Marshaller to test {@link Externalizable} interface. */
- private final Marshaller marshaller = new OptimizedMarshaller();
+ private final Marshaller marshaller;
+
+ /** Ctor. */
+ public IgfsFileInfoSelfTest() throws IgniteCheckedException {
+ marshaller = createStandaloneBinaryMarshaller();
+ }
+
/**
* Test node info serialization.
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryOptimziedMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryOptimziedMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryOptimziedMarshallerSelfTest.java
deleted file mode 100644
index e4ad1f4..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryOptimziedMarshallerSelfTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.igfs;
-
-/**
- * Tests for PRIMARY mode with optimized marshaller.
- */
-public class IgfsPrimaryOptimziedMarshallerSelfTest extends IgfsPrimarySelfTest {
- /** {@inheritDoc} */
- @Override protected boolean useOptimizedMarshaller() {
- return true;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
deleted file mode 100644
index b0cdf1f..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ignite.internal.processors.service;
-
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
-import org.apache.ignite.marshaller.Marshaller;
-
-/**
- * Tests that not all nodes in cluster need user's service definition (only nodes according to filter).
- */
-public class IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest
- extends IgniteServiceDeployment2ClassLoadersDefaultMarshallerTest{
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller() {
- return new OptimizedMarshaller(false);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
deleted file mode 100644
index d021517..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ignite.internal.processors.service;
-
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
-import org.apache.ignite.marshaller.Marshaller;
-
-/**
- * Tests that not all nodes in cluster need user's service definition (only nodes according to filter).
- */
-public class IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest
- extends IgniteServiceDeploymentClassLoadingDefaultMarshallerTest {
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller() {
- return new OptimizedMarshaller(false);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
index 3148bc0..da22f4c 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
@@ -35,7 +35,11 @@ import com.esotericsoftware.kryo.KryoSerializable;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryCachingMetadataHandler;
+import org.apache.ignite.internal.binary.BinaryContext;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.lang.GridTuple;
import org.apache.ignite.internal.util.typedef.CI1;
import org.apache.ignite.internal.util.typedef.CIX1;
@@ -44,6 +48,7 @@ import org.apache.ignite.internal.util.typedef.COX;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteOutClosure;
+import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
@@ -115,11 +120,7 @@ public class GridMarshallerPerformanceTest extends GridCommonAbstractTest {
public void testGridMarshaller() throws Exception {
final GridTuple<byte[]> tuple = new GridTuple<>();
- // Test marshaller context.
- final MarshallerContext marshCtx = new MarshallerContextTestImpl();
-
- final OptimizedMarshaller marsh = new OptimizedMarshaller();
- marsh.setContext(marshCtx);
+ final BinaryMarshaller marsh = createStandaloneBinaryMarshaller();
IgniteInClosure<TestObject> writer = new CIX1<TestObject>() {
@Override public void applyx(TestObject obj) throws IgniteCheckedException {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
index ddf0149..b96728f 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
@@ -27,7 +27,7 @@ import org.apache.ignite.IgniteMessaging;
import org.apache.ignite.cluster.ClusterGroup;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.resources.IgniteInstanceResource;
@@ -54,7 +54,7 @@ public class IgniteMessagingWithClientTest extends GridCommonAbstractTest implem
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
- cfg.setMarshaller(new OptimizedMarshaller(false));
+ cfg.setMarshaller(new BinaryMarshaller());
if (igniteInstanceName.equals(getTestIgniteInstanceName(2))) {
cfg.setClientMode(true);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
index 541b3a2..1a88b11 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
@@ -19,7 +19,7 @@ package org.apache.ignite.spi.discovery.tcp;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -42,7 +42,7 @@ public class TcpClientDiscoveryMarshallerCheckSelfTest extends GridCommonAbstrac
else {
cfg.setClientMode(true);
- cfg.setMarshaller(new OptimizedMarshaller());
+ cfg.setMarshaller(new BinaryMarshaller());
}
cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder));
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
index 0a66872..696225c 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
@@ -19,7 +19,7 @@ package org.apache.ignite.spi.discovery.tcp;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -54,7 +54,7 @@ public class TcpDiscoveryMarshallerCheckSelfTest extends GridCommonAbstractTest
if (flag)
cfg.setMarshaller(new JdkMarshaller());
else
- cfg.setMarshaller(sameMarsh ? new JdkMarshaller() : new OptimizedMarshaller());
+ cfg.setMarshaller(sameMarsh ? new JdkMarshaller() : new BinaryMarshaller());
// Flip flag.
flag = !flag;
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index bfdf635..90c48d5 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -63,6 +63,8 @@ import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.IgnitionEx;
+import org.apache.ignite.internal.binary.BinaryCachingMetadataHandler;
+import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryEnumCache;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -70,6 +72,7 @@ import org.apache.ignite.internal.processors.resource.GridSpringResourceContext;
import org.apache.ignite.internal.util.GridClassLoaderCache;
import org.apache.ignite.internal.util.GridTestClockTimer;
import org.apache.ignite.internal.util.GridUnsafe;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
@@ -78,7 +81,9 @@ import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteCallable;
import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.MarshallerContextTestImpl;
import org.apache.ignite.marshaller.MarshallerExclusions;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
import org.apache.ignite.resources.IgniteInstanceResource;
@@ -1366,6 +1371,34 @@ public abstract class GridAbstractTest extends TestCase {
}
/**
+ * Create instance of {@link BinaryMarshaller} suitable for use
+ * without starting a grid upon an empty {@link IgniteConfiguration}.
+ * @return Binary marshaller.
+ * @throws IgniteCheckedException if failed.
+ */
+ protected BinaryMarshaller createStandaloneBinaryMarshaller() throws IgniteCheckedException {
+ return createStandaloneBinaryMarshaller(new IgniteConfiguration());
+ }
+
+ /**
+ * Create instance of {@link BinaryMarshaller} suitable for use
+ * without starting a grid upon given {@link IgniteConfiguration}.
+ * @return Binary marshaller.
+ * @throws IgniteCheckedException if failed.
+ */
+ protected BinaryMarshaller createStandaloneBinaryMarshaller(IgniteConfiguration cfg) throws IgniteCheckedException {
+ BinaryMarshaller marsh = new BinaryMarshaller();
+
+ BinaryContext ctx = new BinaryContext(BinaryCachingMetadataHandler.create(), cfg, new NullLogger());
+
+ marsh.setContext(new MarshallerContextTestImpl());
+
+ IgniteUtils.invoke(BinaryMarshaller.class, marsh, "setBinaryContext", ctx, cfg);
+
+ return marsh;
+ }
+
+ /**
* @return Generated unique test Ignite instance name.
*/
public String getTestIgniteInstanceName() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
index 7017e00..2c7d597 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
@@ -30,7 +30,6 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryCachingMetadataHandler;
import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.resource.GridResourceProcessor;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -244,7 +243,7 @@ public class IgniteTestResources {
Marshaller marsh;
if (marshallerName == null)
- marsh = new OptimizedMarshaller();
+ marsh = new BinaryMarshaller();
else {
try {
Class<? extends Marshaller> cls = (Class<? extends Marshaller>)Class.forName(marshallerName);
@@ -257,9 +256,6 @@ public class IgniteTestResources {
}
}
- if (marsh instanceof OptimizedMarshaller)
- ((OptimizedMarshaller)marsh).setRequireSerializable(false);
-
marsh.setContext(new MarshallerContextTestImpl());
if (marsh instanceof BinaryMarshaller) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
index 76ed440..c2ed4ff 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
@@ -50,7 +50,6 @@ import org.apache.ignite.internal.processors.igfs.IgfsPrimaryMultiNodeSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsOneClientNodeTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapTieredSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapValuesSelfTest;
-import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOptimziedMarshallerSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencyClientSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencyMultiNodeSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencySelfTest;
@@ -93,8 +92,6 @@ public class IgniteIgfsTestSuite extends TestSuite {
suite.addTest(new TestSuite(IgfsPrimaryRelaxedConsistencySelfTest.class));
suite.addTest(new TestSuite(IgfsPrimaryRelaxedConsistencyMultiNodeSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOptimziedMarshallerSelfTest.class));
-
suite.addTest(new TestSuite(IgfsPrimaryOffheapTieredSelfTest.class));
suite.addTest(new TestSuite(IgfsPrimaryOffheapValuesSelfTest.class));
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
index cd1be7b..c582e6f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
@@ -62,10 +62,8 @@ import org.apache.ignite.internal.processors.service.GridServiceReassignmentSelf
import org.apache.ignite.internal.processors.service.GridServiceSerializationSelfTest;
import org.apache.ignite.internal.processors.service.IgniteServiceDeployment2ClassLoadersDefaultMarshallerTest;
import org.apache.ignite.internal.processors.service.IgniteServiceDeployment2ClassLoadersJdkMarshallerTest;
-import org.apache.ignite.internal.processors.service.IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest;
import org.apache.ignite.internal.processors.service.IgniteServiceDeploymentClassLoadingDefaultMarshallerTest;
import org.apache.ignite.internal.processors.service.IgniteServiceDeploymentClassLoadingJdkMarshallerTest;
-import org.apache.ignite.internal.processors.service.IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest;
import org.apache.ignite.internal.processors.service.IgniteServiceDynamicCachesSelfTest;
import org.apache.ignite.internal.processors.service.IgniteServiceProxyTimeoutInitializedTest;
import org.apache.ignite.internal.processors.service.IgniteServiceReassignmentTest;
@@ -148,10 +146,8 @@ public class IgniteKernalSelfTestSuite extends TestSuite {
suite.addTestSuite(ServiceThreadPoolSelfTest.class);
suite.addTestSuite(IgniteServiceDeploymentClassLoadingDefaultMarshallerTest.class);
- suite.addTestSuite(IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.class);
suite.addTestSuite(IgniteServiceDeploymentClassLoadingJdkMarshallerTest.class);
suite.addTestSuite(IgniteServiceDeployment2ClassLoadersDefaultMarshallerTest.class);
- suite.addTestSuite(IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.class);
suite.addTestSuite(IgniteServiceDeployment2ClassLoadersJdkMarshallerTest.class);
return suite;
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml b/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
index cb781e0..fbaca50 100644
--- a/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
+++ b/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
@@ -48,21 +48,10 @@
<property name="peerClassLoadingEnabled" value="true"/>
<!--
- Configure optimized marshaller.
+ Configure binary marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <!--
- For better performance set this property to true in case
- all marshalled classes implement java.io.Serializable.
- Default value is true.
-
- Note, that it is recommended to implement java.io.Externalizable
- instead of java.io.Serializable for smaller network footprint
- and even better performance.
- -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!-- Set to local host address just for examples. -->
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
index 03cf945..291433c 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
@@ -54,8 +54,7 @@
<property name="gridName" value="IGFS-cli-0"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
index a6022fa..e20bc38 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
@@ -54,8 +54,7 @@
<property name="gridName" value="IGFS-cli-1"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
index 6cfcf57..ad56227 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
@@ -54,8 +54,7 @@
<property name="gridName" value="IGFS-cli-2"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml b/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
index 488d8d9..5cefc3d 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
@@ -55,8 +55,7 @@
<property name="gridName" value="test-IGFS-cli"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml b/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
index f6d5bab..243de7e 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
@@ -53,8 +53,7 @@
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-primary.xml b/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
index c1c41b4..46914b2 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-primary.xml
@@ -55,8 +55,7 @@
<property name="gridName" value="test-IGFS-cli"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml b/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
index bd4b215..d7c7f00 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
@@ -53,8 +53,7 @@
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
index bc07c04..79a7830 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
@@ -70,7 +70,7 @@ import org.apache.ignite.igfs.IgfsIpcEndpointConfiguration;
import org.apache.ignite.igfs.IgfsIpcEndpointType;
import org.apache.ignite.igfs.IgfsMode;
import org.apache.ignite.igfs.IgfsPath;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.igfs.IgfsCommonAbstractTest;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -358,7 +358,7 @@ public abstract class IgniteHadoopFileSystemAbstractSelfTest extends IgfsCommonA
discoSpi.setIpFinder(IP_FINDER);
cfg.setIgniteInstanceName(igniteInstanceName);
- cfg.setMarshaller(new OptimizedMarshaller());
+ cfg.setMarshaller(new BinaryMarshaller());
cfg.setDiscoverySpi(discoSpi);
cfg.setFileSystemConfiguration(igfsConfiguration(igniteInstanceName));
cfg.setIncludeEventTypes(EVT_TASK_FAILED, EVT_TASK_FINISHED, EVT_JOB_MAPPED);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
index 4fa73b5..e0148b3 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
@@ -27,7 +27,7 @@ import org.apache.ignite.cache.QueryIndex;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -70,7 +70,7 @@ public class IgniteCacheNoClassQuerySelfTest extends GridCommonAbstractTest {
CacheConfiguration cc = defaultCacheConfiguration();
- c.setMarshaller(new OptimizedMarshaller());
+ c.setMarshaller(new BinaryMarshaller());
cc.setName("cache");
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java b/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
index bbc9762..8a73a8e 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
@@ -34,7 +34,7 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
/**
* SQL query stress test.
@@ -158,7 +158,7 @@ public class FetchingQueryCursorStressTest {
ccfg.setName(CACHE_NAME);
ccfg.setIndexedTypes(Integer.class, Person.class);
- cfg.setMarshaller(new OptimizedMarshaller());
+ cfg.setMarshaller(new BinaryMarshaller());
cfg.setCacheConfiguration(ccfg);
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java b/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
index a7bfc58..6f7d27a 100644
--- a/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
+++ b/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
@@ -18,11 +18,10 @@
package org.apache.ignite.internal;
import org.apache.ignite.IgniteSpringBean;
+import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -36,7 +35,7 @@ public class GridSpringBeanSerializationSelfTest extends GridCommonAbstractTest
private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
/** Marshaller. */
- private static final Marshaller MARSHALLER = new OptimizedMarshaller();
+ private Marshaller marsh;
/** Attribute key. */
private static final String ATTR_KEY = "checkAttr";
@@ -46,11 +45,13 @@ public class GridSpringBeanSerializationSelfTest extends GridCommonAbstractTest
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
- MARSHALLER.setContext(new MarshallerContextTestImpl());
+ IgniteConfiguration cfg = config();
+
+ marsh = createStandaloneBinaryMarshaller(cfg);
bean = new IgniteSpringBean();
- bean.setConfiguration(config());
+ bean.setConfiguration(cfg);
bean.afterPropertiesSet();
}
@@ -73,6 +74,8 @@ public class GridSpringBeanSerializationSelfTest extends GridCommonAbstractTest
cfg.setIgniteInstanceName(getTestIgniteInstanceName());
+ cfg.setBinaryConfiguration(new BinaryConfiguration());
+
return cfg;
}
@@ -87,7 +90,7 @@ public class GridSpringBeanSerializationSelfTest extends GridCommonAbstractTest
public void testSerialization() throws Exception {
assert bean != null;
- IgniteSpringBean bean0 = MARSHALLER.unmarshal(MARSHALLER.marshal(bean), null);
+ IgniteSpringBean bean0 = marsh.unmarshal(marsh.marshal(bean), null);
assert bean0 != null;
assert bean0.log() != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
----------------------------------------------------------------------
diff --git a/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml b/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
index e504fe7..9710ac2 100644
--- a/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
+++ b/modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
@@ -39,21 +39,10 @@
<property name="peerClassLoadingEnabled" value="true"/>
<!--
- Configure optimized marshaller.
+ Configure binary marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <!--
- For better performance set this property to true in case
- all marshalled classes implement java.io.Serializable.
- Default value is true.
-
- Note, that it is recommended to implement java.io.Externalizable
- instead of java.io.Serializable for smaller network footprint
- and even better performance.
- -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!-- Set to local host address just for examples. -->
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-offheap-config.xml b/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
index 5f30e86..45f3802 100644
--- a/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-offheap-config.xml
@@ -29,9 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-onheap-config.xml b/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
index 4638651..127a62c 100644
--- a/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
@@ -29,9 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/yardstick/config/ignite-int-max-values-swap-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-int-max-values-swap-config.xml b/modules/yardstick/config/ignite-int-max-values-swap-config.xml
index b19e097..74c8a06 100644
--- a/modules/yardstick/config/ignite-int-max-values-swap-config.xml
+++ b/modules/yardstick/config/ignite-int-max-values-swap-config.xml
@@ -29,9 +29,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!--
http://git-wip-us.apache.org/repos/asf/ignite/blob/7942d585/modules/yardstick/config/ignite-jdbc-config.xml
----------------------------------------------------------------------
diff --git a/modules/yardstick/config/ignite-jdbc-config.xml b/modules/yardstick/config/ignite-jdbc-config.xml
index b944a6b..a279d46 100644
--- a/modules/yardstick/config/ignite-jdbc-config.xml
+++ b/modules/yardstick/config/ignite-jdbc-config.xml
@@ -33,9 +33,7 @@
<property name="localHost" value="127.0.0.1"/>
<property name="marshaller">
- <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="discoverySpi">
[13/14] ignite git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/ignite into ignite-4938
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 446b9a5,1216db8..0c8a26d
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@@ -23,8 -23,8 +23,9 @@@ import java.util.Iterator
import java.util.Map;
import java.util.Properties;
import javax.net.ssl.HostnameVerifier;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lang.IgnitePredicate;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 74b4dcd,c991319..6ab5393
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@@ -97,8 -100,6 +100,7 @@@ import org.apache.ignite.internal.manag
import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.indexing.GridIndexingManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
- import org.apache.ignite.internal.managers.swapspace.GridSwapSpaceManager;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 9227b82,f339253..da46496
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@@ -17,33 -17,6 +17,34 @@@
package org.apache.ignite.internal.binary;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
++import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
index 257b34c,75f1807..22948f7
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
@@@ -24,9 -24,9 +24,10 @@@ import org.apache.ignite.IgniteCheckedE
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.MarshallerContextImpl;
import org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.util.typedef.internal.U;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.plugin.PluginProvider;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
index 1545444,bc8220f..8865b2d
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
@@@ -26,11 -26,12 +26,12 @@@ import java.util.List
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
-
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.util.typedef.internal.U;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.plugin.PluginProvider;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
index e34e8cc,4c0ce17..ccd9946
--- a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
@@@ -45,8 -45,8 +45,9 @@@ import java.util.Map
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ConcurrentMap;
+
import org.apache.ignite.internal.util.GridUnsafe;
+import org.apache.ignite.internal.util.SerializableTransient;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.marshaller.MarshallerContext;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
index 3ab27ac,8ffeacd..e62c171
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
@@@ -19,8 -19,10 +19,9 @@@ package org.apache.ignite.marshaller
import java.io.InputStream;
import java.io.OutputStream;
-
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCheckedException;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
index 6759c40,8c27841..997c9f1
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
@@@ -21,8 -21,8 +21,9 @@@ import java.io.InputStream
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCheckedException;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.io.GridByteArrayInputStream;
import org.apache.ignite.internal.util.io.GridByteArrayOutputStream;
import org.apache.ignite.internal.util.typedef.internal.S;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
index 1b2ed1b,9ee8d69..8000738
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
@@@ -30,9 -30,9 +30,10 @@@ import org.apache.ignite.cache.CacheMod
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
index 9847209,40440e0..9d10fd0
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
@@@ -26,8 -26,8 +26,9 @@@ import org.apache.ignite.cache.CacheAto
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
index a81bba5,47af49b..13a0dd8
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
@@@ -24,8 -21,13 +24,9 @@@ import org.apache.ignite.IgniteCheckedE
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
-import java.io.Externalizable;
-import java.util.Random;
-import java.util.concurrent.Callable;
-
/**
* {@link IgfsEntryInfo} test case.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
index 549385f,1d08c48..61c575c
--- a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
@@@ -85,27 -83,10 +83,10 @@@ public class ConfigVariations
);
/** */
- private static final ConfigParameter<Object> ONHEAP_TIERED_MEMORY_PARAM =
- Parameters.parameter("setMemoryMode", CacheMemoryMode.ONHEAP_TIERED);
-
- /** */
- private static final ConfigParameter<Object> OFFHEAP_TIERED_MEMORY_PARAM =
- Parameters.parameter("setMemoryMode", CacheMemoryMode.OFFHEAP_TIERED);
-
- /** */
- private static final ConfigParameter<Object> OFFHEAP_VALUES_MEMORY_PARAM =
- Parameters.parameter("setMemoryMode", CacheMemoryMode.OFFHEAP_VALUES);
-
- /** */
- private static final ConfigParameter<Object> OFFHEAP_ENABLED =
- Parameters.parameter("setOffHeapMaxMemory", 10 * 1024 * 1024L);
-
- /** */
@SuppressWarnings("unchecked")
private static final ConfigParameter<IgniteConfiguration>[][] BASIC_IGNITE_SET = new ConfigParameter[][] {
- Parameters.objectParameters("setMarshaller", Parameters.factory(BinaryMarshaller.class), optimizedMarshallerFactory()),
+ Parameters.objectParameters("setMarshaller", Parameters.factory(BinaryMarshaller.class), binaryMarshallerFactory()),
Parameters.booleanParameters("setPeerClassLoadingEnabled"),
- Parameters.objectParameters("setSwapSpaceSpi", Parameters.factory(GridTestSwapSpaceSpi.class)),
};
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
index 1101c90,f2d1556..170bb33
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
@@@ -36,15 -33,10 +32,9 @@@ import org.apache.ignite.internal.proce
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheAtomicPartitionedOnlyBinaryDataStreamerMultithreadedSelfTest;
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheAtomicPartitionedOnlyBinaryMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheAtomicPartitionedOnlyBinaryMultithreadedSelfTest;
- import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheMemoryModeBinarySelfTest;
- import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheOffHeapTieredAtomicBinarySelfTest;
- import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheOffHeapTieredEvictionAtomicBinarySelfTest;
- import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheOffHeapTieredEvictionBinarySelfTest;
- import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheOffHeapTieredBinarySelfTest;
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheBinariesNearPartitionedByteArrayValuesSelfTest;
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheBinariesPartitionedOnlyByteArrayValuesSelfTest;
- import org.apache.ignite.internal.processors.cache.expiry.IgniteCacheAtomicLocalOffheapExpiryPolicyTest;
import org.apache.ignite.internal.processors.datastreamer.DataStreamProcessorSelfTest;
-import org.apache.ignite.testframework.config.GridTestProperties;
/**
* Cache suite with binary marshaller.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
index c2ed4ff,7efc7de..c73ed3e
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
@@@ -48,8 -46,7 +46,6 @@@ import org.apache.ignite.internal.proce
import org.apache.ignite.internal.processors.igfs.IgfsModesSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryMultiNodeSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsOneClientNodeTest;
- import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapTieredSelfTest;
- import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapValuesSelfTest;
-import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOptimziedMarshallerSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencyClientSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencyMultiNodeSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedConsistencySelfTest;
@@@ -92,9 -89,8 +88,6 @@@ public class IgniteIgfsTestSuite extend
suite.addTest(new TestSuite(IgfsPrimaryRelaxedConsistencySelfTest.class));
suite.addTest(new TestSuite(IgfsPrimaryRelaxedConsistencyMultiNodeSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOffheapTieredSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOffheapValuesSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOptimziedMarshallerSelfTest.class));
--
suite.addTest(new TestSuite(IgfsDualSyncSelfTest.class));
suite.addTest(new TestSuite(IgfsDualAsyncSelfTest.class));
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteKernalSelfTestSuite.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
index b385738,ec83687..a562342
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
@@@ -37,8 -37,8 +37,9 @@@ import org.apache.ignite.cache.CacheWri
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
+ import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@@ -76,10 -73,8 +74,8 @@@ public abstract class AbstractH2Compare
c.setDiscoverySpi(disco);
- c.setMarshaller(new OptimizedMarshaller(true));
+ c.setMarshaller(new BinaryMarshaller());
- c.setCacheConfiguration(cacheConfigurations());
-
return c;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c89cc392/modules/yardstick/config/ignite-int-max-values-onheap-config.xml
----------------------------------------------------------------------
[09/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
IGNITE-4938 De-pub of OptimizedMarshaller - take 1
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/faa8681a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/faa8681a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/faa8681a
Branch: refs/heads/ignite-4938
Commit: faa8681ab35e2332a7b16210492468495eb9518e
Parents: 5c48260
Author: Alexander Paschenko <al...@gmail.com>
Authored: Mon Apr 10 19:47:17 2017 +0300
Committer: Alexander Paschenko <al...@gmail.com>
Committed: Mon Apr 10 19:47:18 2017 +0300
----------------------------------------------------------------------
examples/config/filesystem/example-igfs.xml | 5 +-
.../MemcacheRestExampleNodeStartup.java | 7 -
.../optimized/OptimizedMarshallerAopTest.java | 1 +
modules/clients/src/test/config/jdbc-config.xml | 6 -
.../apache/ignite/IgniteSystemProperties.java | 2 +-
.../apache/ignite/internal/IgniteKernal.java | 2 +-
.../internal/binary/BinaryClassDescriptor.java | 2 +-
.../ignite/internal/binary/BinaryContext.java | 59 +-
.../GridClientOptimizedMarshaller.java | 2 +-
.../GridClientZipOptimizedMarshaller.java | 3 +-
.../optimized/OptimizedClassDescriptor.java | 1141 +++++++++
.../optimized/OptimizedFieldType.java | 50 +
.../optimized/OptimizedMarshaller.java | 313 +++
.../optimized/OptimizedMarshallerIdMapper.java | 33 +
.../optimized/OptimizedMarshallerUtils.java | 551 +++++
.../optimized/OptimizedObjectInputStream.java | 1231 ++++++++++
.../optimized/OptimizedObjectOutputStream.java | 875 +++++++
.../OptimizedObjectStreamRegistry.java | 244 ++
.../marshaller/optimized/package-info.java | 22 +
.../apache/ignite/marshaller/Marshaller.java | 2 -
.../ignite/marshaller/jdk/JdkMarshaller.java | 4 +-
.../optimized/OptimizedClassDescriptor.java | 1141 ---------
.../optimized/OptimizedFieldType.java | 50 -
.../optimized/OptimizedMarshaller.java | 313 ---
.../optimized/OptimizedMarshallerIdMapper.java | 33 -
.../optimized/OptimizedMarshallerUtils.java | 551 -----
.../optimized/OptimizedObjectInputStream.java | 1231 ----------
.../optimized/OptimizedObjectOutputStream.java | 875 -------
.../OptimizedObjectStreamRegistry.java | 244 --
.../marshaller/optimized/package-info.java | 22 -
.../resources/META-INF/classnames.properties | 2 +-
modules/core/src/test/config/example-cache.xml | 5 +-
modules/core/src/test/config/igfs-loopback.xml | 2 +-
modules/core/src/test/config/igfs-shmem.xml | 2 +-
.../src/test/config/spring-start-nodes-attr.xml | 2 +-
.../core/src/test/config/spring-start-nodes.xml | 2 +-
.../config/websession/example-cache-base.xml | 5 +-
.../IgniteExternalizableAbstractTest.java | 2 +-
...dbcPojoStoreOptimizedMarshallerSelfTest.java | 31 -
...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 -
.../apache/ignite/igfs/IgfsPathSelfTest.java | 2 +-
.../internal/GridLifecycleAwareSelfTest.java | 2 +-
.../managers/GridManagerStopSelfTest.java | 2 +-
.../GridDiscoveryManagerAttributesSelfTest.java | 4 +-
.../OptimizedMarshallerEnumSelfTest.java | 87 +
.../OptimizedMarshallerNodeFailoverTest.java | 357 +++
.../OptimizedMarshallerPooledSelfTest.java | 44 +
.../optimized/OptimizedMarshallerSelfTest.java | 283 +++
...arshallerSerialPersistentFieldsSelfTest.java | 114 +
.../optimized/OptimizedMarshallerTest.java | 790 +++++++
.../OptimizedObjectStreamSelfTest.java | 2157 ++++++++++++++++++
.../TestTcpDiscoveryIpFinderAdapter.java | 43 +
.../marshaller/optimized/package-info.java | 22 +
.../CacheStartupInDeploymentModesTest.java | 38 -
.../cache/GridCacheEntryMemorySizeSelfTest.java | 2 +-
...ridCacheStoreManagerDeserializationTest.java | 2 +-
.../cache/GridCacheVersionSelfTest.java | 2 +-
.../distributed/CacheAffinityEarlyTest.java | 7 +-
.../CacheGetFutureHangsSelfTest.java | 7 +-
.../IgniteCacheCreatePutMultiNodeSelfTest.java | 2 +-
.../distributed/IgniteCacheCreatePutTest.java | 2 +-
.../near/GridCacheNearTxForceKeyTest.java | 2 +-
.../CacheEntryProcessorNonSerializableTest.java | 4 +-
.../igfs/IgfsAbstractBaseSelfTest.java | 2 +-
.../processors/igfs/IgfsFileInfoSelfTest.java | 9 +-
.../service/ClosureServiceClientsNodesTest.java | 4 +-
...ent2ClassLoadersOptimizedMarshallerTest.java | 2 +-
...mentClassLoadingOptimizedMarshallerTest.java | 2 +-
...namicProxySerializationMultiJvmSelfTest.java | 14 -
.../GridMarshallerPerformanceTest.java | 10 +-
.../OptimizedMarshallerEnumSelfTest.java | 87 -
.../OptimizedMarshallerNodeFailoverTest.java | 357 ---
.../OptimizedMarshallerPooledSelfTest.java | 44 -
.../optimized/OptimizedMarshallerSelfTest.java | 283 ---
...arshallerSerialPersistentFieldsSelfTest.java | 114 -
.../optimized/OptimizedMarshallerTest.java | 790 -------
.../OptimizedObjectStreamSelfTest.java | 2157 ------------------
.../TestTcpDiscoveryIpFinderAdapter.java | 43 -
.../marshaller/optimized/package-info.java | 22 -
.../IgniteMessagingWithClientTest.java | 2 +-
...pClientDiscoveryMarshallerCheckSelfTest.java | 2 +-
.../TcpDiscoveryMarshallerCheckSelfTest.java | 2 +-
.../configvariations/ConfigVariations.java | 15 +-
.../junits/IgniteTestResources.java | 4 +-
.../testsuites/IgniteBinaryBasicTestSuite.java | 14 +-
.../ignite/testsuites/IgniteCacheTestSuite.java | 6 +-
...teBasicConfigVariationsFullApiTestSuite.java | 2 +-
.../IgniteMarshallerSelfTestSuite.java | 14 +-
...essagingConfigVariationFullApiTestSuite.java | 2 +-
...ServiceConfigVariationsFullApiTestSuite.java | 2 +-
.../webapp/META-INF/ignite-webapp-config.xml | 2 +-
.../test/config/hadoop-fs-open-test/grid-0.xml | 2 +-
.../test/config/hadoop-fs-open-test/grid-1.xml | 2 +-
.../test/config/hadoop-fs-open-test/grid-2.xml | 2 +-
.../test/config/igfs-cli-config-dual-async.xml | 2 +-
.../test/config/igfs-cli-config-dual-sync.xml | 2 +-
.../src/test/config/igfs-cli-config-primary.xml | 2 +-
.../src/test/config/igfs-cli-config-proxy.xml | 2 +-
.../IgniteHadoopFileSystemAbstractSelfTest.java | 2 +-
.../cache/IgniteCacheNoClassQuerySelfTest.java | 2 +-
.../h2/sql/AbstractH2CompareQueryTest.java | 4 +-
.../FetchingQueryCursorStressTest.java | 2 +-
.../Config/marshaller-invalid.xml | 2 +-
.../GridSpringBeanSerializationSelfTest.java | 2 +-
.../webapp2/META-INF/ignite-webapp-config.xml | 2 +-
.../ignite-int-max-values-offheap-config.xml | 2 +-
.../ignite-int-max-values-onheap-config.xml | 2 +-
.../ignite-int-max-values-swap-config.xml | 2 +-
modules/yardstick/config/ignite-jdbc-config.xml | 2 +-
109 files changed, 8483 insertions(+), 8633 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/examples/config/filesystem/example-igfs.xml
----------------------------------------------------------------------
diff --git a/examples/config/filesystem/example-igfs.xml b/examples/config/filesystem/example-igfs.xml
index 2236821..9e45450 100644
--- a/examples/config/filesystem/example-igfs.xml
+++ b/examples/config/filesystem/example-igfs.xml
@@ -51,10 +51,7 @@
-->
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- <!-- Set to false to allow non-serializable objects in examples, default is true. -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="fileSystemConfiguration">
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/examples/src/main/java/org/apache/ignite/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java b/examples/src/main/java/org/apache/ignite/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
index 3c835be..439e042 100644
--- a/examples/src/main/java/org/apache/ignite/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
+++ b/examples/src/main/java/org/apache/ignite/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
@@ -23,7 +23,6 @@ import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.ConnectorConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -64,12 +63,6 @@ public class MemcacheRestExampleNodeStartup {
cfg.setConnectorConfiguration(new ConnectorConfiguration());
- OptimizedMarshaller marsh = new OptimizedMarshaller();
-
- marsh.setRequireSerializable(false);
-
- cfg.setMarshaller(marsh);
-
CacheConfiguration cacheCfg = new CacheConfiguration();
cacheCfg.setAtomicityMode(TRANSACTIONAL);
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/aop/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerAopTest.java
----------------------------------------------------------------------
diff --git a/modules/aop/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerAopTest.java b/modules/aop/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerAopTest.java
index 7985fb2..428d8e0 100644
--- a/modules/aop/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerAopTest.java
+++ b/modules/aop/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerAopTest.java
@@ -21,6 +21,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.compute.gridify.Gridify;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.Event;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.lang.IgnitePredicate;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/clients/src/test/config/jdbc-config.xml
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/config/jdbc-config.xml b/modules/clients/src/test/config/jdbc-config.xml
index 27d2617..b05fe64 100644
--- a/modules/clients/src/test/config/jdbc-config.xml
+++ b/modules/clients/src/test/config/jdbc-config.xml
@@ -31,12 +31,6 @@
<property name="localHost" value="127.0.0.1"/>
- <property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- <property name="requireSerializable" value="false"/>
- </bean>
- </property>
-
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 3c73bd5..446b9a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -23,8 +23,8 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import javax.net.ssl.HostnameVerifier;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lang.IgnitePredicate;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 6705393..74b4dcd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -98,6 +98,7 @@ import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.indexing.GridIndexingManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
import org.apache.ignite.internal.managers.swapspace.GridSwapSpaceManager;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
@@ -167,7 +168,6 @@ import org.apache.ignite.lifecycle.LifecycleAware;
import org.apache.ignite.lifecycle.LifecycleBean;
import org.apache.ignite.lifecycle.LifecycleEventType;
import org.apache.ignite.marshaller.MarshallerExclusions;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.mxbean.ClusterLocalNodeMetricsMXBean;
import org.apache.ignite.mxbean.IgniteMXBean;
import org.apache.ignite.mxbean.StripedExecutorMXBean;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
index 92e4874..adbbc04 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
@@ -40,6 +40,7 @@ import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryReflectiveSerializer;
import org.apache.ignite.binary.BinarySerializer;
import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.CacheObjectImpl;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.GridUnsafe;
@@ -48,7 +49,6 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.MarshallerExclusions;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.processors.query.QueryUtils.isGeometryClass;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index d918aa3..9227b82 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -17,6 +17,33 @@
package org.apache.ignite.internal.binary;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
@@ -24,10 +51,10 @@ import org.apache.ignite.binary.BinaryArrayIdentityResolver;
import org.apache.ignite.binary.BinaryBasicIdMapper;
import org.apache.ignite.binary.BinaryBasicNameMapper;
import org.apache.ignite.binary.BinaryIdMapper;
+import org.apache.ignite.binary.BinaryIdentityResolver;
import org.apache.ignite.binary.BinaryInvalidTypeException;
import org.apache.ignite.binary.BinaryNameMapper;
import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryIdentityResolver;
import org.apache.ignite.binary.BinaryReflectiveSerializer;
import org.apache.ignite.binary.BinarySerializer;
import org.apache.ignite.binary.BinaryType;
@@ -38,6 +65,7 @@ import org.apache.ignite.cache.affinity.AffinityKeyMapped;
import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.igfs.IgfsPath;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.binary.BinaryMetadataKey;
import org.apache.ignite.internal.processors.closure.GridClosureProcessor;
import org.apache.ignite.internal.processors.datastructures.CollocatedQueueItemKey;
@@ -89,38 +117,9 @@ import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.MarshallerUtils;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentMap;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
import static org.apache.ignite.internal.MarshallerPlatformIds.JAVA_ID;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
index 6a4b5e8..257b34c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
@@ -24,9 +24,9 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.MarshallerContextImpl;
import org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.plugin.PluginProvider;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
index b709634..1545444 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
@@ -26,12 +26,11 @@ import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
-
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.client.marshaller.GridClientMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.plugin.PluginProvider;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
new file mode 100644
index 0000000..e34e8cc
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
@@ -0,0 +1,1141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamField;
+import java.io.Serializable;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.internal.util.GridUnsafe;
+import org.apache.ignite.internal.util.SerializableTransient;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.marshaller.MarshallerContext;
+import org.apache.ignite.marshaller.MarshallerExclusions;
+import org.apache.ignite.marshaller.MarshallerUtils;
+
+import static java.lang.reflect.Modifier.isFinal;
+import static java.lang.reflect.Modifier.isPrivate;
+import static java.lang.reflect.Modifier.isStatic;
+import static java.lang.reflect.Modifier.isTransient;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.ARRAY_LIST;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BYTE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BYTE_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CHAR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CHAR_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CLS;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DATE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.ENUM;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.EXTERNALIZABLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.FLOAT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.FLOAT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_MAP;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET_MAP_OFF;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.INT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.INT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_MAP;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_SET;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_LIST;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LONG;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LONG_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.OBJ_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.PROPS;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.PROXY;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SERIALIZABLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SHORT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SHORT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.STR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.UUID;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.computeSerialVersionUid;
+
+/**
+ * Class descriptor.
+ */
+class OptimizedClassDescriptor {
+ /** Class. */
+ private final Class<?> cls;
+
+ /** Context. */
+ private final MarshallerContext ctx;
+
+ /** */
+ private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
+
+ /** ID mapper. */
+ private final OptimizedMarshallerIdMapper mapper;
+
+ /** Class name. */
+ private final String name;
+
+ /** Type ID. */
+ private final int typeId;
+
+ /** Short ID. */
+ private final short checksum;
+
+ /** Class type. */
+ private int type;
+
+ /** Primitive flag. */
+ private boolean isPrimitive;
+
+ /** Enum flag. */
+ private boolean isEnum;
+
+ /** Serializable flag. */
+ private boolean isSerial;
+
+ /** Excluded flag. */
+ private boolean excluded;
+
+ /** {@code True} if descriptor is for {@link Class}. */
+ private boolean isCls;
+
+ /** Enumeration values. */
+ private Object[] enumVals;
+
+ /** Constructor. */
+ private Constructor<?> constructor;
+
+ /** Fields. */
+ private Fields fields;
+
+ /** {@code writeObject} methods. */
+ private List<Method> writeObjMtds;
+
+ /** {@code writeReplace} method. */
+ private Method writeReplaceMtd;
+
+ /** {@code readObject} methods. */
+ private List<Method> readObjMtds;
+
+ /** {@code readResolve} method. */
+ private Method readResolveMtd;
+
+ /** Defaults field offset. */
+ private long dfltsFieldOff;
+
+ /** Load factor field offset. */
+ private long loadFactorFieldOff;
+
+ /** Access order field offset. */
+ private long accessOrderFieldOff;
+
+ /** Proxy interfaces. */
+ private Class<?>[] proxyIntfs;
+
+ /** Method returns serializable transient fields. */
+ private Method serTransMtd;
+
+ /**
+ * Creates descriptor for class.
+ *
+ * @param typeId Type ID.
+ * @param clsMap Class descriptors by class map.
+ * @param cls Class.
+ * @param ctx Context.
+ * @param mapper ID mapper.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ OptimizedClassDescriptor(Class<?> cls,
+ int typeId,
+ ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
+ MarshallerContext ctx,
+ OptimizedMarshallerIdMapper mapper)
+ throws IOException {
+ this.cls = cls;
+ this.typeId = typeId;
+ this.clsMap = clsMap;
+ this.ctx = ctx;
+ this.mapper = mapper;
+
+ name = cls.getName();
+
+ excluded = MarshallerExclusions.isExcluded(cls);
+
+ if (!excluded) {
+ Class<?> parent;
+
+ if (cls == byte.class || cls == Byte.class) {
+ type = BYTE;
+
+ isPrimitive = true;
+ }
+ else if (cls == short.class || cls == Short.class) {
+ type = SHORT;
+
+ isPrimitive = true;
+ }
+ else if (cls == int.class || cls == Integer.class) {
+ type = INT;
+
+ isPrimitive = true;
+ }
+ else if (cls == long.class || cls == Long.class) {
+ type = LONG;
+
+ isPrimitive = true;
+ }
+ else if (cls == float.class || cls == Float.class) {
+ type = FLOAT;
+
+ isPrimitive = true;
+ }
+ else if (cls == double.class || cls == Double.class) {
+ type = DOUBLE;
+
+ isPrimitive = true;
+ }
+ else if (cls == char.class || cls == Character.class) {
+ type = CHAR;
+
+ isPrimitive = true;
+ }
+ else if (cls == boolean.class || cls == Boolean.class) {
+ type = BOOLEAN;
+
+ isPrimitive = true;
+ }
+ else if (cls == byte[].class)
+ type = BYTE_ARR;
+ else if (cls == short[].class)
+ type = SHORT_ARR;
+ else if (cls == int[].class)
+ type = INT_ARR;
+ else if (cls == long[].class)
+ type = LONG_ARR;
+ else if (cls == float[].class)
+ type = FLOAT_ARR;
+ else if (cls == double[].class)
+ type = DOUBLE_ARR;
+ else if (cls == char[].class)
+ type = CHAR_ARR;
+ else if (cls == boolean[].class)
+ type = BOOLEAN_ARR;
+ else if (cls.isArray())
+ type = OBJ_ARR;
+ else if (cls == String.class)
+ type = STR;
+ else if (cls.isEnum()) {
+ type = ENUM;
+
+ isEnum = true;
+ enumVals = cls.getEnumConstants();
+ }
+ // Support for enum constants, based on anonymous children classes.
+ else if ((parent = cls.getSuperclass()) != null && parent.isEnum()) {
+ type = ENUM;
+
+ isEnum = true;
+ enumVals = parent.getEnumConstants();
+ }
+ else if (cls == UUID.class)
+ type = UUID;
+ else if (cls == Properties.class) {
+ type = PROPS;
+
+ try {
+ dfltsFieldOff = GridUnsafe.objectFieldOffset(Properties.class.getDeclaredField("defaults"));
+ }
+ catch (NoSuchFieldException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (cls == ArrayList.class)
+ type = ARRAY_LIST;
+ else if (cls == HashMap.class) {
+ type = HASH_MAP;
+
+ try {
+ loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
+ }
+ catch (NoSuchFieldException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (cls == HashSet.class) {
+ type = HASH_SET;
+
+ try {
+ loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
+ }
+ catch (NoSuchFieldException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (cls == LinkedList.class)
+ type = LINKED_LIST;
+ else if (cls == LinkedHashMap.class) {
+ type = LINKED_HASH_MAP;
+
+ try {
+ loadFactorFieldOff =
+ GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
+ accessOrderFieldOff =
+ GridUnsafe.objectFieldOffset(LinkedHashMap.class.getDeclaredField("accessOrder"));
+ }
+ catch (NoSuchFieldException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (cls == LinkedHashSet.class) {
+ type = LINKED_HASH_SET;
+
+ try {
+ loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
+ }
+ catch (NoSuchFieldException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (cls == Date.class)
+ type = DATE;
+ else if (cls == Class.class) {
+ type = CLS;
+
+ isCls = true;
+ }
+ else if (Proxy.class.isAssignableFrom(cls)) {
+ type = PROXY;
+
+ proxyIntfs = cls.getInterfaces();
+ }
+ else {
+ Class<?> c = cls;
+
+ while ((writeReplaceMtd == null || readResolveMtd == null) && c != null && !c.equals(Object.class)) {
+ if (writeReplaceMtd == null) {
+ try {
+ writeReplaceMtd = c.getDeclaredMethod("writeReplace");
+
+ if (!isStatic(writeReplaceMtd.getModifiers()) &&
+ !(isPrivate(writeReplaceMtd.getModifiers()) && c != cls) &&
+ writeReplaceMtd.getReturnType().equals(Object.class))
+ writeReplaceMtd.setAccessible(true);
+ else
+ // Set method back to null if it has incorrect signature.
+ writeReplaceMtd = null;
+ }
+ catch (NoSuchMethodException ignored) {
+ // No-op.
+ }
+ }
+
+ if (readResolveMtd == null) {
+ try {
+ readResolveMtd = c.getDeclaredMethod("readResolve");
+
+ if (!isStatic(readResolveMtd.getModifiers()) &&
+ !(isPrivate(readResolveMtd.getModifiers()) && c != cls) &&
+ readResolveMtd.getReturnType().equals(Object.class))
+ readResolveMtd.setAccessible(true);
+ else
+ // Set method back to null if it has incorrect signature.
+ readResolveMtd = null;
+ }
+ catch (NoSuchMethodException ignored) {
+ // No-op.
+ }
+ }
+
+ c = c.getSuperclass();
+ }
+
+ if (Externalizable.class.isAssignableFrom(cls)) {
+ type = EXTERNALIZABLE;
+
+ try {
+ constructor = !Modifier.isStatic(cls.getModifiers()) && cls.getDeclaringClass() != null ?
+ cls.getDeclaredConstructor(cls.getDeclaringClass()) :
+ cls.getDeclaredConstructor();
+
+ constructor.setAccessible(true);
+ }
+ catch (NoSuchMethodException e) {
+ throw new IOException("Externalizable class doesn't have default constructor: " + cls, e);
+ }
+ }
+ else {
+ type = SERIALIZABLE;
+
+ isSerial = Serializable.class.isAssignableFrom(cls);
+
+ writeObjMtds = new ArrayList<>();
+ readObjMtds = new ArrayList<>();
+ List<ClassFields> fields = new ArrayList<>();
+
+ for (c = cls; c != null && !c.equals(Object.class); c = c.getSuperclass()) {
+ Method mtd;
+
+ try {
+ mtd = c.getDeclaredMethod("writeObject", ObjectOutputStream.class);
+
+ int mod = mtd.getModifiers();
+
+ if (!isStatic(mod) && isPrivate(mod) && mtd.getReturnType() == Void.TYPE)
+ mtd.setAccessible(true);
+ else
+ // Set method back to null if it has incorrect signature.
+ mtd = null;
+ }
+ catch (NoSuchMethodException ignored) {
+ mtd = null;
+ }
+
+ writeObjMtds.add(mtd);
+
+ try {
+ mtd = c.getDeclaredMethod("readObject", ObjectInputStream.class);
+
+ int mod = mtd.getModifiers();
+
+ if (!isStatic(mod) && isPrivate(mod) && mtd.getReturnType() == Void.TYPE)
+ mtd.setAccessible(true);
+ else
+ // Set method back to null if it has incorrect signature.
+ mtd = null;
+ }
+ catch (NoSuchMethodException ignored) {
+ mtd = null;
+ }
+
+ readObjMtds.add(mtd);
+
+ final SerializableTransient serTransAn = c.getAnnotation(SerializableTransient.class);
+
+ // Custom serialization policy for transient fields.
+ if (serTransAn != null) {
+ try {
+ serTransMtd = c.getDeclaredMethod(serTransAn.methodName(), cls, IgniteProductVersion.class);
+
+ int mod = serTransMtd.getModifiers();
+
+ if (isStatic(mod) && isPrivate(mod)
+ && serTransMtd.getReturnType() == String[].class)
+ serTransMtd.setAccessible(true);
+ else
+ // Set method back to null if it has incorrect signature.
+ serTransMtd = null;
+ }
+ catch (NoSuchMethodException ignored) {
+ serTransMtd = null;
+ }
+ }
+
+ Field[] clsFields0 = c.getDeclaredFields();
+
+ Map<String, Field> fieldNames = new HashMap<>();
+
+ for (Field f : clsFields0)
+ fieldNames.put(f.getName(), f);
+
+ List<FieldInfo> clsFields = new ArrayList<>(clsFields0.length);
+
+ boolean hasSerialPersistentFields = false;
+
+ try {
+ Field serFieldsDesc = c.getDeclaredField("serialPersistentFields");
+
+ int mod = serFieldsDesc.getModifiers();
+
+ if (serFieldsDesc.getType() == ObjectStreamField[].class &&
+ isPrivate(mod) && isStatic(mod) && isFinal(mod)) {
+ hasSerialPersistentFields = true;
+
+ serFieldsDesc.setAccessible(true);
+
+ ObjectStreamField[] serFields = (ObjectStreamField[]) serFieldsDesc.get(null);
+
+ for (int i = 0; i < serFields.length; i++) {
+ ObjectStreamField serField = serFields[i];
+
+ FieldInfo fieldInfo;
+
+ if (!fieldNames.containsKey(serField.getName())) {
+ fieldInfo = new FieldInfo(null,
+ serField.getName(),
+ -1,
+ fieldType(serField.getType()));
+ }
+ else {
+ Field f = fieldNames.get(serField.getName());
+
+ fieldInfo = new FieldInfo(f,
+ serField.getName(),
+ GridUnsafe.objectFieldOffset(f),
+ fieldType(serField.getType()));
+ }
+
+ clsFields.add(fieldInfo);
+ }
+ }
+ }
+ catch (NoSuchFieldException ignored) {
+ // No-op.
+ }
+ catch (IllegalAccessException e) {
+ throw new IOException("Failed to get value of 'serialPersistentFields' field in class: " +
+ cls.getName(), e);
+ }
+
+ if (!hasSerialPersistentFields) {
+ for (int i = 0; i < clsFields0.length; i++) {
+ Field f = clsFields0[i];
+
+ int mod = f.getModifiers();
+
+ if (!isStatic(mod) && !isTransient(mod)) {
+ FieldInfo fieldInfo = new FieldInfo(f, f.getName(),
+ GridUnsafe.objectFieldOffset(f), fieldType(f.getType()));
+
+ clsFields.add(fieldInfo);
+ }
+ }
+ }
+
+ Collections.sort(clsFields, new Comparator<FieldInfo>() {
+ @Override public int compare(FieldInfo t1, FieldInfo t2) {
+ return t1.name().compareTo(t2.name());
+ }
+ });
+
+ fields.add(new ClassFields(clsFields));
+ }
+
+ Collections.reverse(writeObjMtds);
+ Collections.reverse(readObjMtds);
+ Collections.reverse(fields);
+
+ this.fields = new Fields(fields);
+ }
+ }
+ }
+
+ checksum = computeSerialVersionUid(cls, fields != null ? fields.ownFields() : null);
+ }
+
+ /**
+ * @return Excluded flag.
+ */
+ boolean excluded() {
+ return excluded;
+ }
+
+ /**
+ * @return Class.
+ */
+ Class<?> describedClass() {
+ return cls;
+ }
+
+ /**
+ * @return Primitive flag.
+ */
+ boolean isPrimitive() {
+ return isPrimitive;
+ }
+
+ /**
+ * @return Enum flag.
+ */
+ boolean isEnum() {
+ return isEnum;
+ }
+
+ /**
+ * @return {@code True} if descriptor is for {@link Class}.
+ */
+ boolean isClass() {
+ return isCls;
+ }
+
+ /**
+ * @return {@code True} if descriptor is for {@link Proxy}.
+ */
+ boolean isProxy() {
+ return type == PROXY;
+ }
+
+ /**
+ * Replaces object.
+ *
+ * @param obj Object.
+ * @return Replaced object or {@code null} if there is no {@code writeReplace} method.
+ * @throws IOException In case of error.
+ */
+ Object replace(Object obj) throws IOException {
+ if (writeReplaceMtd != null) {
+ try {
+ return writeReplaceMtd.invoke(obj);
+ }
+ catch (IllegalAccessException | InvocationTargetException e) {
+ throw new IOException(e);
+ }
+ }
+
+ return obj;
+ }
+
+ /**
+ * Writes object to stream.
+ *
+ * @param out Output stream.
+ * @param obj Object.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ void write(OptimizedObjectOutputStream out, Object obj) throws IOException {
+ out.write(type);
+
+ switch (type) {
+ case BYTE:
+ out.writeByte((Byte)obj);
+
+ break;
+
+ case SHORT:
+ out.writeShort((Short)obj);
+
+ break;
+
+ case INT:
+ out.writeInt((Integer)obj);
+
+ break;
+
+ case LONG:
+ out.writeLong((Long)obj);
+
+ break;
+
+ case FLOAT:
+ out.writeFloat((Float)obj);
+
+ break;
+
+ case DOUBLE:
+ out.writeDouble((Double)obj);
+
+ break;
+
+ case CHAR:
+ out.writeChar((Character)obj);
+
+ break;
+
+ case BOOLEAN:
+ out.writeBoolean((Boolean)obj);
+
+ break;
+
+ case BYTE_ARR:
+ out.writeByteArray((byte[])obj);
+
+ break;
+
+ case SHORT_ARR:
+ out.writeShortArray((short[])obj);
+
+ break;
+
+ case INT_ARR:
+ out.writeIntArray((int[])obj);
+
+ break;
+
+ case LONG_ARR:
+ out.writeLongArray((long[])obj);
+
+ break;
+
+ case FLOAT_ARR:
+ out.writeFloatArray((float[])obj);
+
+ break;
+
+ case DOUBLE_ARR:
+ out.writeDoubleArray((double[])obj);
+
+ break;
+
+ case CHAR_ARR:
+ out.writeCharArray((char[])obj);
+
+ break;
+
+ case BOOLEAN_ARR:
+ out.writeBooleanArray((boolean[])obj);
+
+ break;
+
+ case OBJ_ARR:
+ OptimizedClassDescriptor compDesc = classDescriptor(clsMap,
+ obj.getClass().getComponentType(),
+ ctx,
+ mapper);
+
+ compDesc.writeTypeData(out);
+
+ out.writeArray((Object[])obj);
+
+ break;
+
+ case STR:
+ out.writeString((String)obj);
+
+ break;
+
+ case UUID:
+ out.writeUuid((UUID)obj);
+
+ break;
+
+ case PROPS:
+ out.writeProperties((Properties)obj, dfltsFieldOff);
+
+ break;
+
+ case ARRAY_LIST:
+ out.writeArrayList((ArrayList<?>)obj);
+
+ break;
+
+ case HASH_MAP:
+ out.writeHashMap((HashMap<?, ?>)obj, loadFactorFieldOff, false);
+
+ break;
+
+ case HASH_SET:
+ out.writeHashSet((HashSet<?>)obj, HASH_SET_MAP_OFF, loadFactorFieldOff);
+
+ break;
+
+ case LINKED_LIST:
+ out.writeLinkedList((LinkedList<?>)obj);
+
+ break;
+
+ case LINKED_HASH_MAP:
+ out.writeLinkedHashMap((LinkedHashMap<?, ?>)obj, loadFactorFieldOff, accessOrderFieldOff, false);
+
+ break;
+
+ case LINKED_HASH_SET:
+ out.writeLinkedHashSet((LinkedHashSet<?>)obj, HASH_SET_MAP_OFF, loadFactorFieldOff);
+
+ break;
+
+ case DATE:
+ out.writeDate((Date)obj);
+
+ break;
+
+ case CLS:
+ OptimizedClassDescriptor clsDesc = classDescriptor(clsMap, (Class<?>)obj, ctx, mapper);
+
+ clsDesc.writeTypeData(out);
+
+ break;
+
+ case PROXY:
+ out.writeInt(proxyIntfs.length);
+
+ for (Class<?> intf : proxyIntfs) {
+ OptimizedClassDescriptor intfDesc = classDescriptor(clsMap, intf, ctx, mapper);
+
+ intfDesc.writeTypeData(out);
+ }
+
+ InvocationHandler ih = Proxy.getInvocationHandler(obj);
+
+ assert ih != null;
+
+ out.writeObject(ih);
+
+ break;
+
+ case ENUM:
+ writeTypeData(out);
+
+ out.writeInt(((Enum)obj).ordinal());
+
+ break;
+
+ case EXTERNALIZABLE:
+ writeTypeData(out);
+
+ out.writeShort(checksum);
+ out.writeExternalizable(obj);
+
+ break;
+
+ case SERIALIZABLE:
+ if (out.requireSerializable() && !isSerial)
+ throw new NotSerializableException("Must implement java.io.Serializable or " +
+ "set OptimizedMarshaller.setRequireSerializable() to false " +
+ "(note that performance may degrade if object is not Serializable): " + name);
+
+ writeTypeData(out);
+
+ out.writeShort(checksum);
+ out.writeSerializable(obj, writeObjMtds, serializableFields(obj.getClass(), obj, null));
+
+ break;
+
+ default:
+ throw new IllegalStateException("Invalid class type: " + type);
+ }
+ }
+
+ /**
+ * Gets list of serializable fields. If {@link #serTransMtd} method
+ * returns list of transient fields, they will be added to other fields.
+ * Transient fields that are not included in that list will be normally
+ * ignored.
+ *
+ * @param cls Class.
+ * @param obj Object.
+ * @param ver Job sender version.
+ * @return Serializable fields.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ private Fields serializableFields(Class<?> cls, Object obj, IgniteProductVersion ver) {
+ if (serTransMtd == null)
+ return fields;
+
+ try {
+ final String[] transFields = (String[])serTransMtd.invoke(cls, obj, ver);
+
+ if (transFields == null || transFields.length == 0)
+ return fields;
+
+ List<FieldInfo> clsFields = new ArrayList<>();
+
+ clsFields.addAll(fields.fields.get(0).fields);
+
+ for (int i = 0; i < transFields.length; i++) {
+ final String fieldName = transFields[i];
+
+ final Field f = cls.getDeclaredField(fieldName);
+
+ FieldInfo fieldInfo = new FieldInfo(f, f.getName(),
+ GridUnsafe.objectFieldOffset(f), fieldType(f.getType()));
+
+ clsFields.add(fieldInfo);
+ }
+
+ Collections.sort(clsFields, new Comparator<FieldInfo>() {
+ @Override public int compare(FieldInfo t1, FieldInfo t2) {
+ return t1.name().compareTo(t2.name());
+ }
+ });
+
+ List<ClassFields> fields = new ArrayList<>();
+
+ fields.add(new ClassFields(clsFields));
+
+ return new Fields(fields);
+ }
+ catch (Exception ignored) {
+ return fields;
+ }
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ void writeTypeData(OptimizedObjectOutputStream out) throws IOException {
+ out.writeInt(typeId);
+
+ if (typeId == 0)
+ out.writeUTF(name);
+ }
+
+ /**
+ * Reads object from stream.
+ *
+ * @param in Input stream.
+ * @return Object.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ Object read(OptimizedObjectInputStream in) throws ClassNotFoundException, IOException {
+ switch (type) {
+ case ENUM:
+ return enumVals[in.readInt()];
+
+ case EXTERNALIZABLE:
+ verifyChecksum(in.readShort());
+
+ return in.readExternalizable(constructor, readResolveMtd);
+
+ case SERIALIZABLE:
+ verifyChecksum(in.readShort());
+
+ // If no serialize method, then unmarshal as usual.
+ if (serTransMtd != null)
+ return in.readSerializable(cls, readObjMtds, readResolveMtd,
+ serializableFields(cls, null, MarshallerUtils.jobSenderVersion()));
+ else
+ return in.readSerializable(cls, readObjMtds, readResolveMtd, fields);
+
+ default:
+ assert false : "Unexpected type: " + type;
+
+ return null;
+ }
+ }
+
+ /**
+ * @param checksum Checksum.
+ * @throws ClassNotFoundException If checksum is wrong.
+ * @throws IOException In case of error.
+ */
+ private void verifyChecksum(short checksum) throws ClassNotFoundException, IOException {
+ if (checksum != this.checksum)
+ throw new ClassNotFoundException("Optimized stream class checksum mismatch " +
+ "(is same version of marshalled class present on all nodes?) " +
+ "[expected=" + this.checksum + ", actual=" + checksum + ", cls=" + cls + ']');
+ }
+
+ /**
+ * @param cls Class.
+ * @return Type.
+ */
+ @SuppressWarnings("IfMayBeConditional")
+ private OptimizedFieldType fieldType(Class<?> cls) {
+ OptimizedFieldType type;
+
+ if (cls == byte.class)
+ type = OptimizedFieldType.BYTE;
+ else if (cls == short.class)
+ type = OptimizedFieldType.SHORT;
+ else if (cls == int.class)
+ type = OptimizedFieldType.INT;
+ else if (cls == long.class)
+ type = OptimizedFieldType.LONG;
+ else if (cls == float.class)
+ type = OptimizedFieldType.FLOAT;
+ else if (cls == double.class)
+ type = OptimizedFieldType.DOUBLE;
+ else if (cls == char.class)
+ type = OptimizedFieldType.CHAR;
+ else if (cls == boolean.class)
+ type = OptimizedFieldType.BOOLEAN;
+ else
+ type = OptimizedFieldType.OTHER;
+
+ return type;
+ }
+
+ /**
+ * Information about one field.
+ */
+ @SuppressWarnings("PackageVisibleInnerClass")
+ static class FieldInfo {
+ /** Field. */
+ private final Field field;
+
+ /** Field offset. */
+ private final long fieldOffs;
+
+ /** Field type. */
+ private final OptimizedFieldType fieldType;
+
+ /** Field name. */
+ private final String fieldName;
+
+ /**
+ * @param field Field.
+ * @param name Field name.
+ * @param offset Field offset.
+ * @param type Grid optimized field type.
+ */
+ FieldInfo(Field field, String name, long offset, OptimizedFieldType type) {
+ this.field = field;
+ fieldOffs = offset;
+ fieldType = type;
+ fieldName = name;
+ }
+
+ /**
+ * @return Returns field.
+ */
+ Field field() {
+ return field;
+ }
+
+ /**
+ * @return Offset.
+ */
+ long offset() {
+ return fieldOffs;
+ }
+
+ /**
+ * @return Type.
+ */
+ OptimizedFieldType type() {
+ return fieldType;
+ }
+
+ /**
+ * @return Name.
+ */
+ String name() {
+ return fieldName;
+ }
+ }
+
+ /**
+ * Information about one class.
+ */
+ static class ClassFields {
+ /** Fields. */
+ private final List<FieldInfo> fields;
+
+ private final Map<String, Integer> nameToIndex;
+
+ /**
+ * @param fields Field infos.
+ */
+ ClassFields(List<FieldInfo> fields) {
+ this.fields = fields;
+
+ nameToIndex = U.newHashMap(fields.size());
+
+ for (int i = 0; i < fields.size(); ++i)
+ nameToIndex.put(fields.get(i).name(), i);
+ }
+
+ /**
+ * @return Class fields.
+ */
+ List<FieldInfo> fields() {
+ return fields;
+ }
+
+ /**
+ * @return Fields count.
+ */
+ int size() {
+ return fields.size();
+ }
+
+ /**
+ * @param i Field's index.
+ * @return FieldInfo.
+ */
+ FieldInfo get(int i) {
+ return fields.get(i);
+ }
+
+ /**
+ * @param name Field's name.
+ * @return Field's index.
+ */
+ int getIndex(String name) {
+ assert nameToIndex.containsKey(name);
+
+ return nameToIndex.get(name);
+ }
+ }
+
+ /**
+ * Encapsulates data about class fields.
+ */
+ @SuppressWarnings("PackageVisibleInnerClass")
+ static class Fields {
+ /** Fields. */
+ private final List<ClassFields> fields;
+
+ /** Own fields (excluding inherited). */
+ private final List<Field> ownFields;
+
+ /**
+ * Creates new instance.
+ *
+ * @param fields Fields.
+ */
+ Fields(List<ClassFields> fields) {
+ this.fields = fields;
+
+ if (fields.isEmpty())
+ ownFields = null;
+ else {
+ ownFields = new ArrayList<>(fields.size());
+
+ for (FieldInfo f : fields.get(fields.size() - 1).fields()) {
+ if (f.field() != null)
+ ownFields.add(f.field);
+ }
+ }
+ }
+
+ /**
+ * Returns class's own fields (excluding inherited).
+ *
+ * @return List of fields or {@code null} if fields list is empty.
+ */
+ List<Field> ownFields() {
+ return ownFields;
+ }
+
+ /**
+ * Returns field types and their offsets.
+ *
+ * @param i hierarchy level where 0 corresponds to top level.
+ * @return list of pairs where first value is field type and second value is its offset.
+ */
+ ClassFields fields(int i) {
+ return fields.get(i);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
new file mode 100644
index 0000000..39cad13
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedFieldType.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+/**
+ * Field type used to calculate {@code Unsafe} offsets into objects.
+ */
+enum OptimizedFieldType {
+ /** */
+ BYTE,
+
+ /** */
+ SHORT,
+
+ /** */
+ INT,
+
+ /** */
+ LONG,
+
+ /** */
+ FLOAT,
+
+ /** */
+ DOUBLE,
+
+ /** */
+ CHAR,
+
+ /** */
+ BOOLEAN,
+
+ /** */
+ OTHER
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
new file mode 100644
index 0000000..f69c6dc
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
@@ -0,0 +1,313 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
+import org.jetbrains.annotations.Nullable;
+import org.jsr166.ConcurrentHashMap8;
+import sun.misc.Unsafe;
+
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
+
+/**
+ * Optimized implementation of {@link org.apache.ignite.marshaller.Marshaller}.
+ * Unlike {@link org.apache.ignite.marshaller.jdk.JdkMarshaller},
+ * which is based on standard {@link ObjectOutputStream}, this marshaller does not
+ * enforce that all serialized objects implement {@link Serializable} interface. It is also
+ * about 20 times faster as it removes lots of serialization overhead that exists in
+ * default JDK implementation.
+ * <p>
+ * {@code OptimizedMarshaller} is tested only on Java HotSpot VM on other VMs
+ * it could yield unexpected results. It is the default marshaller on Java HotSpot VMs
+ * and will be used if no other marshaller was explicitly configured.
+ * <p>
+ * <h1 class="header">Configuration</h1>
+ * <h2 class="header">Mandatory</h2>
+ * This marshaller has no mandatory configuration parameters.
+ * <h2 class="header">Java Example</h2>
+ * <pre name="code" class="java">
+ * OptimizedMarshaller marshaller = new OptimizedMarshaller();
+ *
+ * // Enforce Serializable interface.
+ * marshaller.setRequireSerializable(true);
+ *
+ * IgniteConfiguration cfg = new IgniteConfiguration();
+ *
+ * // Override marshaller.
+ * cfg.setMarshaller(marshaller);
+ *
+ * // Starts grid.
+ * G.start(cfg);
+ * </pre>
+ * <h2 class="header">Spring Example</h2>
+ * GridOptimizedMarshaller can be configured from Spring XML configuration file:
+ * <pre name="code" class="xml">
+ * <bean id="grid.custom.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true">
+ * ...
+ * <property name="marshaller">
+ * <bean class="OptimizedMarshaller">
+ * <property name="requireSerializable">true</property>
+ * </bean>
+ * </property>
+ * ...
+ * </bean>
+ * </pre>
+ * <p>
+ * <img src="http://ignite.apache.org/images/spring-small.png">
+ * <br>
+ * For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
+ */
+public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
+ /** Use default {@code serialVersionUID} for {@link Serializable} classes. */
+ public static final boolean USE_DFLT_SUID =
+ IgniteSystemProperties.getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID, false);
+
+ /** Default class loader. */
+ private final ClassLoader dfltClsLdr = getClass().getClassLoader();
+
+ /** Whether or not to require an object to be serializable in order to be marshalled. */
+ private boolean requireSer = true;
+
+ /** ID mapper. */
+ private OptimizedMarshallerIdMapper mapper;
+
+ /** Class descriptors by class. */
+ private final ConcurrentMap<Class, OptimizedClassDescriptor> clsMap = new ConcurrentHashMap8<>();
+
+ /**
+ * Creates new marshaller will all defaults.
+ *
+ * @throws IgniteException If this marshaller is not supported on the current JVM.
+ */
+ public OptimizedMarshaller() {
+ if (!available())
+ throw new IgniteException("Using OptimizedMarshaller on unsupported JVM version (some of " +
+ "JVM-private APIs required for the marshaller to work are missing).");
+ }
+
+ /**
+ * Creates new marshaller providing whether it should
+ * require {@link Serializable} interface or not.
+ *
+ * @param requireSer Whether to require {@link Serializable}.
+ */
+ public OptimizedMarshaller(boolean requireSer) {
+ this.requireSer = requireSer;
+ }
+
+ /**
+ * Sets whether marshaller should require {@link Serializable} interface or not.
+ *
+ * @param requireSer Whether to require {@link Serializable}.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setRequireSerializable(boolean requireSer) {
+ this.requireSer = requireSer;
+
+ return this;
+ }
+
+ /**
+ * Sets ID mapper.
+ *
+ * @param mapper ID mapper.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setIdMapper(OptimizedMarshallerIdMapper mapper) {
+ this.mapper = mapper;
+
+ return this;
+ }
+
+ /**
+ * Specifies size of cached object streams used by marshaller. Object streams are cached for
+ * performance reason to avoid costly recreation for every serialization routine. If {@code 0} (default),
+ * pool is not used and each thread has its own cached object stream which it keeps reusing.
+ * <p>
+ * Since each stream has an internal buffer, creating a stream for each thread can lead to
+ * high memory consumption if many large messages are marshalled or unmarshalled concurrently.
+ * Consider using pool in this case. This will limit number of streams that can be created and,
+ * therefore, decrease memory consumption.
+ * <p>
+ * NOTE: Using streams pool can decrease performance since streams will be shared between
+ * different threads which will lead to more frequent context switching.
+ *
+ * @param poolSize Streams pool size. If {@code 0}, pool is not used.
+ * @return {@code this} for chaining.
+ */
+ public OptimizedMarshaller setPoolSize(int poolSize) {
+ OptimizedObjectStreamRegistry.poolSize(poolSize);
+
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
+ assert out != null;
+
+ OptimizedObjectOutputStream objOut = null;
+
+ try {
+ objOut = OptimizedObjectStreamRegistry.out();
+
+ objOut.context(clsMap, ctx, mapper, requireSer);
+
+ objOut.out().outputStream(out);
+
+ objOut.writeObject(obj);
+ }
+ catch (IOException e) {
+ throw new IgniteCheckedException("Failed to serialize object: " + obj, e);
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeOut(objOut);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException {
+ OptimizedObjectOutputStream objOut = null;
+
+ try {
+ objOut = OptimizedObjectStreamRegistry.out();
+
+ objOut.context(clsMap, ctx, mapper, requireSer);
+
+ objOut.writeObject(obj);
+
+ return objOut.out().array();
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException("Failed to serialize object: " + obj, e);
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeOut(objOut);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
+ @Override protected <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ assert in != null;
+
+ OptimizedObjectInputStream objIn = null;
+
+ try {
+ objIn = OptimizedObjectStreamRegistry.in();
+
+ objIn.context(clsMap, ctx, mapper, clsLdr != null ? clsLdr : dfltClsLdr);
+
+ objIn.in().inputStream(in);
+
+ return (T)objIn.readObject();
+ }
+ catch (ClassNotFoundException e) {
+ throw new IgniteCheckedException("Failed to find class with given class loader for unmarshalling " +
+ "(make sure same versions of all classes are available on all nodes or enable peer-class-loading) " +
+ "[clsLdr=" + clsLdr + ", cls=" + e.getMessage() + "]", e);
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException("Failed to deserialize object with given class loader: " + clsLdr, e);
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeIn(objIn);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
+ @Override protected <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
+ assert arr != null;
+
+ OptimizedObjectInputStream objIn = null;
+
+ try {
+ objIn = OptimizedObjectStreamRegistry.in();
+
+ objIn.context(clsMap, ctx, mapper, clsLdr != null ? clsLdr : dfltClsLdr);
+
+ objIn.in().bytes(arr, arr.length);
+
+ return (T)objIn.readObject();
+ }
+ catch (ClassNotFoundException e) {
+ throw new IgniteCheckedException("Failed to find class with given class loader for unmarshalling " +
+ "(make sure same version of all classes are available on all nodes or enable peer-class-loading)" +
+ " [clsLdr=" + clsLdr + ", cls=" + e.getMessage() + "]", e);
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException("Failed to deserialize object with given class loader: " + clsLdr, e);
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeIn(objIn);
+ }
+ }
+
+ /**
+ * Checks whether {@code GridOptimizedMarshaller} is able to work on the current JVM.
+ * <p>
+ * As long as {@code GridOptimizedMarshaller} uses JVM-private API, which is not guaranteed
+ * to be available on all JVM, this method should be called to ensure marshaller could work properly.
+ * <p>
+ * Result of this method is automatically checked in constructor.
+ *
+ * @return {@code true} if {@code GridOptimizedMarshaller} can work on the current JVM or
+ * {@code false} if it can't.
+ */
+ @SuppressWarnings({"TypeParameterExtendsFinalClass", "ErrorNotRethrown"})
+ public static boolean available() {
+ try {
+ Class<? extends Unsafe> unsafeCls = Unsafe.class;
+
+ unsafeCls.getMethod("allocateInstance", Class.class);
+ unsafeCls.getMethod("copyMemory", Object.class, long.class, Object.class, long.class, long.class);
+
+ return true;
+ }
+ catch (Exception ignored) {
+ return false;
+ }
+ catch (NoClassDefFoundError ignored) {
+ return false;
+ }
+ }
+
+ /**
+ * Undeployment callback invoked when class loader is being undeployed.
+ *
+ * @param ldr Class loader being undeployed.
+ */
+ @Override public void onUndeploy(ClassLoader ldr) {
+ for (Class<?> cls : clsMap.keySet()) {
+ if (ldr.equals(cls.getClassLoader()))
+ clsMap.remove(cls);
+ }
+
+ U.clearClassCache(ldr);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
new file mode 100644
index 0000000..381e5d0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerIdMapper.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+/**
+ * ID mapper.
+ */
+public interface OptimizedMarshallerIdMapper {
+ /**
+ * Gets type ID for provided class name.
+ * <p>
+ * If {@code 0} is returned, hash code of class name will be used.
+ *
+ * @param clsName Class name.
+ * @return Type ID.
+ */
+ public int typeId(String clsName);
+}
\ No newline at end of file
[14/14] ignite git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/ignite into ignite-4938
Posted by ag...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-4938
Conflicts:
examples/config/filesystem/example-igfs.xml
modules/clients/src/test/config/jdbc-config.xml
modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryClassDescriptor.java
modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientOptimizedMarshaller.java
modules/core/src/main/java/org/apache/ignite/internal/client/marshaller/optimized/GridClientZipOptimizedMarshaller.java
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedClassDescriptor.java
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
modules/core/src/main/java/org/apache/ignite/marshaller/optimized/package-info.java
modules/core/src/main/resources/META-INF/classnames.properties
modules/core/src/test/config/example-cache.xml
modules/core/src/test/config/igfs-loopback.xml
modules/core/src/test/config/igfs-shmem.xml
modules/core/src/test/config/spring-start-nodes-attr.xml
modules/core/src/test/config/spring-start-nodes.xml
modules/core/src/test/config/websession/example-cache-base.xml
modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerSelfTest.java
modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
modules/hadoop/src/test/config/igfs-cli-config-dual-sync.xml
modules/hadoop/src/test/config/igfs-cli-config-primary.xml
modules/hadoop/src/test/config/igfs-cli-config-proxy.xml
modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/impl/igfs/IgniteHadoopFileSystemAbstractSelfTest.java
modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/AbstractH2CompareQueryTest.java
modules/indexing/src/test/java/org/apache/ignite/loadtests/h2indexing/FetchingQueryCursorStressTest.java
modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/marshaller-invalid.xml
modules/spring-data/src/main/java/org/apache/ignite/springdata/repository/package-info.java
modules/spring/src/test/java/org/apache/ignite/internal/GridSpringBeanSerializationSelfTest.java
modules/web/src/test/webapp2/META-INF/ignite-webapp-config.xml
modules/yardstick/config/ignite-int-max-values-offheap-config.xml
modules/yardstick/config/ignite-int-max-values-onheap-config.xml
modules/yardstick/config/ignite-int-max-values-swap-config.xml
modules/yardstick/config/ignite-jdbc-config.xml
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c89cc392
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c89cc392
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c89cc392
Branch: refs/heads/ignite-4938
Commit: c89cc392f6e9f3008707a532422e10ba12fe44f1
Parents: 1115ca5 ecadf6a
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Fri Apr 14 18:00:51 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Fri Apr 14 18:00:51 2017 +0300
----------------------------------------------------------------------
assembly/dependencies-fabric.xml | 1 +
assembly/libs/README.txt | 1 +
assembly/release-fabric-base.xml | 6 +
bin/control.bat | 229 +
bin/control.sh | 180 +
examples/pom-standalone-lgpl.xml | 6 +
examples/pom-standalone.xml | 6 +
examples/pom.xml | 6 +
.../starschema/CacheStarSchemaExample.java | 59 +-
.../examples/springdata/PersonRepository.java | 59 +
.../examples/springdata/SpringAppCfg.java | 69 +
.../examples/springdata/SpringDataExample.java | 154 +
.../examples/ScalarCacheAffinityExample.scala | 2 +-
.../examples/SpringDataExampleSelfTest.java | 32 +
.../testsuites/IgniteExamplesSelfTestSuite.java | 2 +
.../optimized/OptimizedMarshallerAopTest.java | 105 +
.../optimized/OptimizedMarshallerAopTest.java | 105 -
modules/aws/pom.xml | 6 +-
.../jmh/future/JmhFutureAdapterBenchmark.java | 145 +
.../benchmarks/jmh/tree/BPlusTreeBenchmark.java | 325 ++
.../ignite/ignite-cassandra-server-template.xml | 6 -
.../tests/ignite-cassandra-client-template.xml | 6 -
.../integration/ClientAbstractSelfTest.java | 6 -
.../jdbc2/JdbcComplexQuerySelfTest.java | 82 +-
.../internal/jdbc2/JdbcLocalCachesSelfTest.java | 30 +-
.../internal/jdbc2/JdbcMetadataSelfTest.java | 96 +-
.../jdbc2/JdbcPreparedStatementSelfTest.java | 53 +-
.../rest/ChangeStateCommandHandlerTest.java | 125 +
.../JettyRestProcessorAbstractSelfTest.java | 82 +-
.../ignite/jdbc/JdbcComplexQuerySelfTest.java | 44 +-
.../ignite/jdbc/JdbcMetadataSelfTest.java | 103 +-
.../ignite/codegen/MessageCodeGenerator.java | 2 +
.../src/main/java/org/apache/ignite/Ignite.java | 31 +-
.../java/org/apache/ignite/IgniteCache.java | 302 +-
.../apache/ignite/IgniteCheckedException.java | 12 +
.../java/org/apache/ignite/IgniteCluster.java | 52 -
.../apache/ignite/IgniteSystemProperties.java | 52 +
.../java/org/apache/ignite/MemoryMetrics.java | 95 +
.../binary/BinaryAbstractIdentityResolver.java | 53 -
.../binary/BinaryArrayIdentityResolver.java | 224 -
.../binary/BinaryFieldIdentityResolver.java | 307 --
.../ignite/binary/BinaryIdentityResolver.java | 42 -
.../ignite/binary/BinaryTypeConfiguration.java | 25 -
.../org/apache/ignite/cache/CacheEntry.java | 1 -
.../apache/ignite/cache/CacheMemoryMode.java | 63 -
.../org/apache/ignite/cache/CacheMetrics.java | 70 -
.../org/apache/ignite/cache/CachePeekMode.java | 6 +-
.../cache/CacheWriteSynchronizationMode.java | 4 +-
.../ignite/cache/PartitionLossPolicy.java | 80 +
.../org/apache/ignite/cache/QueryIndex.java | 21 +
.../org/apache/ignite/cache/QueryIndexType.java | 17 +-
.../cache/affinity/AffinityKeyMapped.java | 14 +-
.../AffinityNodeAddressHashResolver.java | 44 -
.../affinity/AffinityNodeHashResolver.java | 47 -
.../affinity/AffinityNodeIdHashResolver.java | 45 -
.../affinity/fair/FairAffinityFunction.java | 1158 -----
.../cache/affinity/fair/package-info.java | 21 -
.../rendezvous/RendezvousAffinityFunction.java | 359 +-
.../store/jdbc/CacheAbstractJdbcStore.java | 11 +-
.../configuration/CacheConfiguration.java | 501 +-
.../configuration/CollectionConfiguration.java | 22 -
.../configuration/DataPageEvictionMode.java | 44 +
.../configuration/IgniteConfiguration.java | 116 +-
.../configuration/MemoryConfiguration.java | 173 +
.../MemoryPolicyConfiguration.java | 162 +
.../configuration/NearCacheConfiguration.java | 1 -
.../org/apache/ignite/hadoop/package-info.java | 22 +
.../java/org/apache/ignite/igfs/IgfsPath.java | 31 +-
.../ignite/internal/GridCachePluginContext.java | 13 +-
.../apache/ignite/internal/GridComponent.java | 10 +-
.../internal/GridEventConsumeHandler.java | 5 +-
.../ignite/internal/GridKernalContext.java | 24 +-
.../ignite/internal/GridKernalContextImpl.java | 36 +-
.../internal/GridMessageListenHandler.java | 5 +-
.../ignite/internal/GridPluginComponent.java | 4 +-
.../org/apache/ignite/internal/GridTopic.java | 2 +
.../ignite/internal/IgniteInternalFuture.java | 15 -
.../apache/ignite/internal/IgniteKernal.java | 354 +-
.../ignite/internal/IgniteNodeAttributes.java | 3 +
.../org/apache/ignite/internal/IgnitionEx.java | 41 +-
.../apache/ignite/internal/LessNamingBean.java | 28 -
.../ignite/internal/MarshallerContextImpl.java | 14 +-
.../binary/BinaryAbstractIdentityResolver.java | 56 +
.../binary/BinaryArrayIdentityResolver.java | 222 +
.../internal/binary/BinaryClassDescriptor.java | 1 +
.../ignite/internal/binary/BinaryContext.java | 19 +-
.../internal/binary/BinaryEnumObjectImpl.java | 39 +-
.../ignite/internal/binary/BinaryFieldEx.java | 45 +
.../ignite/internal/binary/BinaryFieldImpl.java | 173 +-
.../internal/binary/BinaryIdentityResolver.java | 43 +
.../ignite/internal/binary/BinaryMetadata.java | 1 +
.../internal/binary/BinaryObjectExImpl.java | 11 +-
.../internal/binary/BinaryObjectImpl.java | 137 +
.../binary/BinaryObjectOffheapImpl.java | 26 +
.../internal/binary/BinaryReaderExImpl.java | 2 +-
.../ignite/internal/binary/BinarySchema.java | 11 +
.../ignite/internal/binary/BinaryUtils.java | 14 +-
.../internal/binary/BinaryWriterExImpl.java | 1 -
.../binary/builder/BinaryBuilderReader.java | 8 +
.../streams/BinaryByteBufferInputStream.java | 301 ++
.../ignite/internal/client/GridClient.java | 9 +
.../internal/client/GridClientClusterState.java | 33 +
.../client/impl/GridClientClusterStateImpl.java | 75 +
.../internal/client/impl/GridClientImpl.java | 11 +
.../impl/connection/GridClientConnection.java | 17 +
.../connection/GridClientNioTcpConnection.java | 21 +
.../GridClientOptimizedMarshaller.java | 1 +
.../GridClientZipOptimizedMarshaller.java | 1 +
.../router/impl/GridRouterClientImpl.java | 6 +
.../cluster/IgniteClusterAsyncImpl.java | 11 -
.../internal/cluster/IgniteClusterImpl.java | 38 -
.../internal/commandline/CommandHandler.java | 89 +
.../ignite/internal/jdbc2/JdbcQueryTask.java | 41 +-
.../ignite/internal/jdbc2/JdbcQueryTaskV2.java | 406 --
.../ignite/internal/jdbc2/JdbcResultSet.java | 64 +-
.../ignite/internal/jdbc2/JdbcStatement.java | 12 +-
.../internal/managers/GridManagerAdapter.java | 38 +-
.../checkpoint/GridCheckpointManager.java | 2 +-
.../collision/GridCollisionManager.java | 2 +-
.../managers/communication/GridIoManager.java | 26 +-
.../communication/GridIoMessageFactory.java | 40 +-
.../communication/IgniteIoTestMessage.java | 11 +-
.../deployment/GridDeploymentManager.java | 2 +-
.../discovery/GridDiscoveryManager.java | 76 +-
.../eventstorage/GridEventStorageManager.java | 343 +-
.../managers/failover/GridFailoverManager.java | 2 +-
.../managers/indexing/GridIndexingManager.java | 2 +-
.../loadbalancer/GridLoadBalancerManager.java | 2 +-
.../swapspace/GridSwapSpaceManager.java | 417 --
.../managers/swapspace/package-info.java | 22 -
.../optimized/OptimizedClassDescriptor.java | 8 +-
.../ignite/internal/mem/DirectMemory.java | 55 +
.../internal/mem/DirectMemoryProvider.java | 25 +
.../ignite/internal/mem/DirectMemoryRegion.java | 41 +
.../internal/mem/OutOfMemoryException.java | 51 +
.../apache/ignite/internal/mem/UnsafeChunk.java | 66 +
.../ignite/internal/mem/file/MappedFile.java | 152 +
.../mem/file/MappedFileMemoryProvider.java | 225 +
.../mem/unsafe/UnsafeMemoryProvider.java | 89 +
.../ignite/internal/pagemem/FullPageId.java | 157 +
.../internal/pagemem/PageIdAllocator.java | 53 +
.../ignite/internal/pagemem/PageIdUtils.java | 201 +
.../ignite/internal/pagemem/PageMemory.java | 46 +
.../ignite/internal/pagemem/PageSupport.java | 114 +
.../ignite/internal/pagemem/PageUtils.java | 185 +
.../pagemem/impl/PageMemoryNoStoreImpl.java | 663 +++
.../snapshot/SnapshotFinishedMessage.java | 136 +
.../snapshot/SnapshotProgressMessage.java | 135 +
.../StartFullSnapshotAckDiscoveryMessage.java | 147 +
.../StartFullSnapshotDiscoveryMessage.java | 160 +
.../pagemem/store/IgnitePageStoreManager.java | 192 +
.../internal/pagemem/store/PageStore.java | 96 +
.../pagemem/wal/IgniteWriteAheadLogManager.java | 86 +
.../internal/pagemem/wal/StorageException.java | 44 +
.../internal/pagemem/wal/WALIterator.java | 29 +
.../ignite/internal/pagemem/wal/WALPointer.java | 28 +
.../internal/pagemem/wal/record/CacheState.java | 96 +
.../pagemem/wal/record/CheckpointRecord.java | 112 +
.../internal/pagemem/wal/record/DataEntry.java | 171 +
.../internal/pagemem/wal/record/DataRecord.java | 70 +
.../pagemem/wal/record/LazyDataEntry.java | 116 +
.../wal/record/MemoryRecoveryRecord.java | 44 +
.../pagemem/wal/record/PageSnapshot.java | 81 +
.../wal/record/StoreOperationRecord.java | 118 +
.../internal/pagemem/wal/record/TxRecord.java | 111 +
.../internal/pagemem/wal/record/WALRecord.java | 257 +
.../delta/DataPageInsertFragmentRecord.java | 84 +
.../wal/record/delta/DataPageInsertRecord.java | 66 +
.../wal/record/delta/DataPageRemoveRecord.java | 67 +
.../delta/DataPageSetFreeListPageRecord.java | 62 +
.../wal/record/delta/DataPageUpdateRecord.java | 79 +
.../record/delta/DeltaApplicationException.java | 35 +
.../wal/record/delta/FixCountRecord.java | 57 +
.../record/delta/FixLeftmostChildRecord.java | 58 +
.../pagemem/wal/record/delta/FixRemoveId.java | 62 +
.../wal/record/delta/InitNewPageRecord.java | 98 +
.../wal/record/delta/InnerReplaceRecord.java | 96 +
.../pagemem/wal/record/delta/InsertRecord.java | 110 +
.../pagemem/wal/record/delta/MergeRecord.java | 97 +
.../wal/record/delta/MetaPageAddRootRecord.java | 57 +
.../wal/record/delta/MetaPageCutRootRecord.java | 48 +
.../wal/record/delta/MetaPageInitRecord.java | 93 +
.../delta/MetaPageInitRootInlineRecord.java | 62 +
.../record/delta/MetaPageInitRootRecord.java | 61 +
.../delta/MetaPageUpdateLastAllocatedIndex.java | 62 +
...aPageUpdateLastSuccessfulFullSnapshotId.java | 59 +
.../MetaPageUpdateLastSuccessfulSnapshotId.java | 70 +
.../delta/MetaPageUpdateNextSnapshotId.java | 59 +
.../MetaPageUpdatePartitionDataRecord.java | 107 +
.../wal/record/delta/NewRootInitRecord.java | 115 +
.../wal/record/delta/PageDeltaRecord.java | 77 +
.../delta/PageListMetaResetCountRecord.java | 47 +
.../record/delta/PagesListAddPageRecord.java | 73 +
.../delta/PagesListInitNewPageRecord.java | 100 +
.../record/delta/PagesListRemovePageRecord.java | 74 +
.../record/delta/PagesListSetNextRecord.java | 60 +
.../delta/PagesListSetPreviousRecord.java | 60 +
.../record/delta/PartitionMetaStateRecord.java | 82 +
.../pagemem/wal/record/delta/RecycleRecord.java | 55 +
.../pagemem/wal/record/delta/RemoveRecord.java | 82 +
.../pagemem/wal/record/delta/ReplaceRecord.java | 86 +
.../record/delta/SplitExistingPageRecord.java | 76 +
.../record/delta/SplitForwardPageRecord.java | 115 +
.../record/delta/TrackingPageDeltaRecord.java | 85 +
.../processors/GridProcessorAdapter.java | 4 +-
.../affinity/GridAffinityProcessor.java | 2 +-
.../cache/CacheAffinitySharedManager.java | 27 +-
.../cache/CacheClusterMetricsMXBeanImpl.java | 50 -
.../cache/CacheEntryPredicateAdapter.java | 7 +-
.../cache/CacheEvictableEntryImpl.java | 18 +-
.../processors/cache/CacheEvictionManager.java | 63 +
.../cache/CacheInvalidStateException.java | 65 +
.../processors/cache/CacheLazyEntry.java | 2 +-
.../cache/CacheLocalMetricsMXBeanImpl.java | 50 -
.../processors/cache/CacheMetricsImpl.java | 157 +-
.../processors/cache/CacheMetricsSnapshot.java | 120 -
.../internal/processors/cache/CacheObject.java | 33 +
.../processors/cache/CacheObjectAdapter.java | 123 +
.../cache/CacheObjectByteArrayImpl.java | 26 +-
.../processors/cache/CacheObjectImpl.java | 16 +-
.../cache/CacheOffheapEvictionManager.java | 72 +
.../processors/cache/CacheOperationContext.java | 50 +-
.../cache/CacheOsConflictResolutionManager.java | 2 +-
.../cache/ChangeGlobalStateMessage.java | 120 +
.../internal/processors/cache/ClusterState.java | 38 +
.../cache/DynamicCacheChangeRequest.java | 71 +-
.../cache/DynamicCacheDescriptor.java | 17 +
.../processors/cache/GridCacheAdapter.java | 821 ++-
.../cache/GridCacheAffinityManager.java | 2 +-
.../processors/cache/GridCacheAttributes.java | 37 -
.../cache/GridCacheClearAllRunnable.java | 54 +-
.../cache/GridCacheCompoundFuture.java | 63 +
.../cache/GridCacheCompoundIdentityFuture.java | 63 +
.../cache/GridCacheConcurrentMap.java | 9 +-
.../cache/GridCacheConcurrentMapImpl.java | 234 +-
.../processors/cache/GridCacheContext.java | 180 +-
.../GridCacheDefaultAffinityKeyMapper.java | 38 +-
.../cache/GridCacheDeploymentManager.java | 6 +-
.../processors/cache/GridCacheEntryEx.java | 58 +-
.../cache/GridCacheEvictionManager.java | 1822 +------
.../cache/GridCacheEvictionRequest.java | 248 -
.../cache/GridCacheEvictionResponse.java | 225 -
.../processors/cache/GridCacheFuture.java | 15 +
.../cache/GridCacheFutureAdapter.java | 61 +
.../processors/cache/GridCacheIoManager.java | 14 -
.../cache/GridCacheLocalConcurrentMap.java | 54 +
.../processors/cache/GridCacheManager.java | 3 +-
.../cache/GridCacheManagerAdapter.java | 7 +-
.../processors/cache/GridCacheMapEntry.java | 2894 +++++------
.../cache/GridCacheOffheapSwapEntry.java | 191 -
.../GridCachePartitionExchangeManager.java | 175 +-
.../processors/cache/GridCachePreloader.java | 1 +
.../cache/GridCachePreloaderAdapter.java | 1 +
.../processors/cache/GridCacheProcessor.java | 1028 ++--
.../processors/cache/GridCacheProxyImpl.java | 95 +-
.../cache/GridCacheSharedContext.java | 106 +-
.../cache/GridCacheSharedManagerAdapter.java | 7 +
.../cache/GridCacheSharedTtlCleanupManager.java | 9 +
.../processors/cache/GridCacheSwapManager.java | 2616 ----------
.../processors/cache/GridCacheTtlManager.java | 120 +-
.../cache/GridCacheUpdateAtomicResult.java | 96 +-
.../processors/cache/GridCacheUtils.java | 30 +-
.../GridChangeGlobalStateMessageResponse.java | 177 +
.../processors/cache/GridNoStorageCacheMap.java | 11 +-
.../cache/IgniteCacheOffheapManager.java | 408 ++
.../cache/IgniteCacheOffheapManagerImpl.java | 2007 ++++++++
.../processors/cache/IgniteCacheProxy.java | 139 +-
.../processors/cache/IgniteInternalCache.java | 100 +-
.../cache/IgniteRebalanceIterator.java | 31 +
.../processors/cache/IncompleteCacheObject.java | 84 +
.../processors/cache/IncompleteObject.java | 89 +
.../binary/CacheObjectBinaryProcessorImpl.java | 22 +-
.../cache/binary/MetadataRequestMessage.java | 2 +
.../cache/binary/MetadataResponseMessage.java | 36 +-
.../processors/cache/database/CacheDataRow.java | 62 +
.../cache/database/CacheDataRowAdapter.java | 578 +++
.../cache/database/CacheSearchRow.java | 40 +
.../cache/database/DataStructure.java | 384 ++
.../IgniteCacheDatabaseSharedManager.java | 717 +++
.../cache/database/MemoryMetricsImpl.java | 314 ++
.../processors/cache/database/MemoryPolicy.java | 84 +
.../processors/cache/database/MetaStore.java | 51 +
.../cache/database/MetadataStorage.java | 417 ++
.../processors/cache/database/RootPage.java | 62 +
.../processors/cache/database/RowStore.java | 91 +
.../evict/FairFifoPageEvictionTracker.java | 74 +
.../database/evict/NoOpPageEvictionTracker.java | 50 +
.../evict/PageAbstractEvictionTracker.java | 243 +
.../database/evict/PageEvictionTracker.java | 52 +
.../evict/Random2LruPageEvictionTracker.java | 180 +
.../evict/RandomLruPageEvictionTracker.java | 157 +
.../cache/database/freelist/FreeList.java | 51 +
.../cache/database/freelist/FreeListImpl.java | 595 +++
.../cache/database/freelist/PagesList.java | 1450 ++++++
.../database/freelist/io/PagesListMetaIO.java | 186 +
.../database/freelist/io/PagesListNodeIO.java | 231 +
.../cache/database/tree/BPlusTree.java | 4754 ++++++++++++++++++
.../cache/database/tree/io/BPlusIO.java | 403 ++
.../cache/database/tree/io/BPlusInnerIO.java | 180 +
.../cache/database/tree/io/BPlusLeafIO.java | 56 +
.../cache/database/tree/io/BPlusMetaIO.java | 182 +
.../cache/database/tree/io/CacheVersionIO.java | 188 +
.../cache/database/tree/io/DataPageIO.java | 1450 ++++++
.../cache/database/tree/io/DataPagePayload.java | 64 +
.../cache/database/tree/io/IOVersions.java | 99 +
.../cache/database/tree/io/PageIO.java | 510 ++
.../cache/database/tree/io/PageMetaIO.java | 217 +
.../database/tree/io/PagePartitionMetaIO.java | 123 +
.../cache/database/tree/io/TrackingPageIO.java | 334 ++
.../cache/database/tree/reuse/ReuseBag.java | 33 +
.../cache/database/tree/reuse/ReuseList.java | 43 +
.../database/tree/reuse/ReuseListImpl.java | 95 +
.../cache/database/tree/util/PageHandler.java | 512 ++
.../database/tree/util/PageLockListener.java | 69 +
.../distributed/GridCacheTxRecoveryFuture.java | 9 +-
.../GridDistributedCacheAdapter.java | 76 +-
.../GridDistributedTxRemoteAdapter.java | 442 +-
.../dht/CacheDistributedGetFutureAdapter.java | 11 +-
.../dht/GridCachePartitionedConcurrentMap.java | 20 +-
.../dht/GridClientPartitionTopology.java | 166 +-
.../distributed/dht/GridDhtCacheAdapter.java | 80 +-
.../distributed/dht/GridDhtCacheEntry.java | 35 +-
.../cache/distributed/dht/GridDhtGetFuture.java | 13 +-
.../distributed/dht/GridDhtGetSingleFuture.java | 13 +-
.../distributed/dht/GridDhtLocalPartition.java | 752 ++-
.../distributed/dht/GridDhtLockFuture.java | 42 +-
.../dht/GridDhtOffHeapCacheEntry.java | 71 -
.../distributed/dht/GridDhtPartitionState.java | 5 +-
.../dht/GridDhtPartitionTopology.java | 63 +-
.../dht/GridDhtPartitionTopologyImpl.java | 652 ++-
.../distributed/dht/GridDhtTopologyFuture.java | 13 +-
.../dht/GridDhtTransactionalCacheAdapter.java | 2 -
.../distributed/dht/GridDhtTxFinishFuture.java | 11 +-
.../distributed/dht/GridDhtTxLocalAdapter.java | 26 +-
.../distributed/dht/GridDhtTxPrepareFuture.java | 34 +-
.../dht/GridPartitionedGetFuture.java | 30 +-
.../dht/GridPartitionedSingleGetFuture.java | 36 +-
.../GridDhtAtomicAbstractUpdateFuture.java | 4 +-
.../dht/atomic/GridDhtAtomicCache.java | 341 +-
.../dht/atomic/GridDhtAtomicNearResponse.java | 2 +-
.../atomic/GridDhtAtomicOffHeapCacheEntry.java | 71 -
...idNearAtomicAbstractSingleUpdateRequest.java | 2 +
.../GridNearAtomicAbstractUpdateFuture.java | 14 +-
.../GridNearAtomicAbstractUpdateRequest.java | 20 +
.../GridNearAtomicCheckUpdateRequest.java | 2 +-
.../atomic/GridNearAtomicFullUpdateRequest.java | 3 +-
...GridNearAtomicSingleUpdateFilterRequest.java | 2 +
.../GridNearAtomicSingleUpdateFuture.java | 33 +-
...GridNearAtomicSingleUpdateInvokeRequest.java | 2 +
.../GridNearAtomicSingleUpdateRequest.java | 5 +-
.../dht/atomic/GridNearAtomicUpdateFuture.java | 31 +-
.../atomic/GridNearAtomicUpdateResponse.java | 3 +
.../dht/atomic/NearCacheUpdates.java | 2 +-
.../distributed/dht/atomic/UpdateErrors.java | 2 +-
.../dht/colocated/GridDhtColocatedCache.java | 31 +-
.../colocated/GridDhtColocatedLockFuture.java | 62 +-
.../GridDhtColocatedOffHeapCacheEntry.java | 71 -
.../colocated/GridDhtDetachedCacheEntry.java | 18 +-
.../dht/preloader/GridDhtForceKeysFuture.java | 10 +-
.../GridDhtPartitionDemandMessage.java | 49 +-
.../dht/preloader/GridDhtPartitionDemander.java | 87 +-
.../dht/preloader/GridDhtPartitionMap.java | 13 +-
.../dht/preloader/GridDhtPartitionSupplier.java | 318 +-
.../GridDhtPartitionSupplyMessage.java | 56 +-
.../GridDhtPartitionsAbstractMessage.java | 12 +-
.../GridDhtPartitionsExchangeFuture.java | 585 ++-
.../preloader/GridDhtPartitionsFullMessage.java | 83 +-
.../GridDhtPartitionsSingleMessage.java | 81 +-
.../GridDhtPartitionsSingleRequest.java | 8 +
.../dht/preloader/GridDhtPreloader.java | 77 +-
.../distributed/near/GridNearAtomicCache.java | 2 +
.../distributed/near/GridNearCacheAdapter.java | 63 +-
.../distributed/near/GridNearCacheEntry.java | 22 +-
.../distributed/near/GridNearGetFuture.java | 22 +-
.../distributed/near/GridNearGetRequest.java | 50 +-
.../distributed/near/GridNearLockFuture.java | 34 +-
.../near/GridNearOffHeapCacheEntry.java | 60 -
...arOptimisticSerializableTxPrepareFuture.java | 2 +-
.../near/GridNearOptimisticTxPrepareFuture.java | 11 +-
...ridNearOptimisticTxPrepareFutureAdapter.java | 20 +-
.../GridNearPessimisticTxPrepareFuture.java | 5 +-
.../near/GridNearSingleGetRequest.java | 24 +-
.../near/GridNearTransactionalCache.java | 11 +-
.../near/GridNearTxFinishFuture.java | 13 +-
.../cache/distributed/near/GridNearTxLocal.java | 81 +-
.../near/GridNearTxPrepareFutureAdapter.java | 4 +-
.../distributed/near/GridNearTxRemote.java | 8 +-
.../cache/dr/GridOsCacheDrManager.java | 2 +-
.../extras/GridCacheAttributesEntryExtras.java | 7 +-
.../GridCacheAttributesMvccEntryExtras.java | 5 +-
...dCacheAttributesMvccObsoleteEntryExtras.java | 5 +-
...cheAttributesMvccObsoleteTtlEntryExtras.java | 7 +-
.../GridCacheAttributesMvccTtlEntryExtras.java | 7 +-
.../GridCacheAttributesObsoleteEntryExtras.java | 5 +-
...idCacheAttributesObsoleteTtlEntryExtras.java | 7 +-
.../GridCacheAttributesTtlEntryExtras.java | 7 +-
.../cache/extras/GridCacheMvccEntryExtras.java | 3 +-
.../GridCacheMvccObsoleteEntryExtras.java | 5 +-
.../GridCacheMvccObsoleteTtlEntryExtras.java | 7 +-
.../extras/GridCacheMvccTtlEntryExtras.java | 7 +-
.../extras/GridCacheObsoleteEntryExtras.java | 3 +-
.../extras/GridCacheObsoleteTtlEntryExtras.java | 7 +-
.../cache/extras/GridCacheTtlEntryExtras.java | 5 +-
.../processors/cache/local/GridLocalCache.java | 22 +
.../cache/local/GridLocalCacheEntry.java | 18 -
.../cache/local/GridLocalLockFuture.java | 6 +-
.../local/atomic/GridLocalAtomicCache.java | 56 +-
.../query/GridCacheDistributedQueryFuture.java | 25 +-
.../query/GridCacheQueryFutureAdapter.java | 31 +-
.../cache/query/GridCacheQueryManager.java | 776 +--
.../cache/query/GridCacheQueryResponse.java | 49 +-
.../cache/query/GridCacheSqlIndexMetadata.java | 3 +-
.../cache/query/GridCacheSqlMetadata.java | 3 +-
.../continuous/CacheContinuousQueryEntry.java | 4 +-
.../continuous/CacheContinuousQueryEvent.java | 3 +-
.../continuous/CacheContinuousQueryHandler.java | 40 +-
.../continuous/CacheContinuousQueryManager.java | 7 +-
.../cache/store/CacheStoreManager.java | 15 +-
.../store/GridCacheStoreManagerAdapter.java | 49 +-
.../transactions/IgniteTransactionsImpl.java | 4 +-
.../cache/transactions/IgniteTxAdapter.java | 16 +-
.../cache/transactions/IgniteTxEntry.java | 4 +-
.../cache/transactions/IgniteTxHandler.java | 128 +-
.../IgniteTxImplicitSingleStateImpl.java | 18 +-
.../transactions/IgniteTxLocalAdapter.java | 42 +-
.../cache/transactions/IgniteTxManager.java | 5 +-
.../IgniteTxRemoteSingleStateImpl.java | 2 +-
.../IgniteTxRemoteStateAdapter.java | 8 +-
.../cache/transactions/IgniteTxState.java | 9 +-
.../cache/transactions/IgniteTxStateImpl.java | 41 +-
.../cache/transactions/TxDeadlockDetection.java | 5 +-
.../processors/cache/transactions/TxLock.java | 2 +
.../cache/version/GridCacheVersionManager.java | 3 +
.../cacheobject/IgniteCacheObjectProcessor.java | 40 +-
.../IgniteCacheObjectProcessorImpl.java | 111 +-
.../clock/GridClockDeltaSnapshot.java | 2 +-
.../clock/GridClockSyncProcessor.java | 8 +-
.../closure/GridClosureProcessor.java | 2 +-
.../processors/cluster/ClusterProcessor.java | 2 +-
.../cluster/GridClusterStateProcessor.java | 947 ++++
.../cluster/IgniteChangeGlobalStateSupport.java | 42 +
.../continuous/GridContinuousHandler.java | 5 +-
.../continuous/GridContinuousProcessor.java | 7 +-
.../StartRoutineAckDiscoveryMessage.java | 13 +-
.../StartRoutineDiscoveryMessage.java | 19 +-
.../datastreamer/DataStreamProcessor.java | 2 +-
.../datastreamer/DataStreamerImpl.java | 102 +-
.../datastructures/DataStructuresProcessor.java | 134 +-
.../datastructures/GridCacheAtomicLongImpl.java | 14 +-
.../GridCacheAtomicReferenceImpl.java | 16 +-
.../GridCacheAtomicSequenceImpl.java | 14 +-
.../GridCacheAtomicStampedImpl.java | 14 +-
.../GridCacheCountDownLatchImpl.java | 14 +-
.../datastructures/GridCacheLockImpl.java | 17 +-
.../datastructures/GridCacheQueueAdapter.java | 49 +-
.../datastructures/GridCacheSemaphoreImpl.java | 26 +-
.../datastructures/GridCacheSetImpl.java | 54 +-
.../internal/processors/hadoop/HadoopJobId.java | 10 +-
.../shuffle/HadoopDirectShuffleMessage.java | 22 +-
.../hadoop/shuffle/HadoopShuffleAck.java | 10 +-
.../hadoop/shuffle/HadoopShuffleMessage.java | 18 +-
.../internal/processors/igfs/IgfsProcessor.java | 24 +-
.../processors/job/GridJobProcessor.java | 2 +-
.../jobmetrics/GridJobMetricsProcessor.java | 2 +-
.../GridMarshallerMappingProcessor.java | 3 +-
.../marshaller/MarshallerMappingTransport.java | 14 +-
.../MissingMappingRequestMessage.java | 4 +
.../MissingMappingResponseMessage.java | 15 +-
.../internal/processors/odbc/OdbcProcessor.java | 11 +-
.../platform/PlatformProcessorImpl.java | 2 +-
.../platform/cache/PlatformCache.java | 10 -
.../callback/PlatformCallbackGateway.java | 68 -
.../platform/compute/PlatformCompute.java | 10 -
.../cache/PlatformCachePluginConfiguration.java | 7 -
.../cache/PlatformCachePluginProvider.java | 123 -
.../utils/PlatformConfigurationUtils.java | 191 +-
.../processors/plugin/CachePluginManager.java | 20 +-
.../plugin/IgnitePluginProcessor.java | 5 +-
.../processors/port/GridPortProcessor.java | 2 +-
.../query/GridQueryIndexDescriptor.java | 7 +
.../processors/query/GridQueryIndexing.java | 43 +-
.../processors/query/GridQueryProcessor.java | 221 +-
.../query/GridQueryTypeDescriptor.java | 5 +
.../query/QueryIndexDescriptorImpl.java | 11 +-
.../query/QueryTypeDescriptorImpl.java | 36 +-
.../internal/processors/query/QueryUtils.java | 4 +-
.../twostep/messages/GridQueryFailResponse.java | 10 +-
.../query/property/QueryBinaryProperty.java | 4 +-
.../resource/GridResourceProcessor.java | 3 +-
.../processors/rest/GridRestCommand.java | 11 +-
.../processors/rest/GridRestProcessor.java | 7 +-
.../rest/client/message/GridClientNodeBean.java | 2 +-
.../client/message/GridClientStateRequest.java | 80 +
.../cluster/GridChangeStateCommandHandler.java | 90 +
.../top/GridTopologyCommandHandler.java | 4 +
.../tcp/GridTcpMemcachedNioListener.java | 20 +-
.../protocols/tcp/GridTcpRestNioListener.java | 20 +
.../request/GridRestChangeStateRequest.java | 57 +
.../service/GridServiceProcessor.java | 211 +-
.../session/GridTaskSessionProcessor.java | 2 +-
.../processors/task/GridTaskProcessor.java | 6 +-
.../timeout/GridTimeoutProcessor.java | 2 +-
.../apache/ignite/internal/util/GridArrays.java | 116 +
.../util/GridCursorIteratorWrapper.java | 52 +
.../apache/ignite/internal/util/GridDebug.java | 2 +-
.../util/GridMultiCollectionWrapper.java | 186 +
.../ignite/internal/util/GridStringBuilder.java | 19 +
.../apache/ignite/internal/util/GridUnsafe.java | 67 +-
.../internal/util/IgniteExceptionRegistry.java | 3 +-
.../apache/ignite/internal/util/IgniteTree.java | 134 +
.../ignite/internal/util/IgniteUtils.java | 194 +-
.../internal/util/OffheapReadWriteLock.java | 661 +++
.../util/future/GridCompoundFuture.java | 45 +-
.../util/future/GridFinishedFuture.java | 13 -
.../internal/util/future/GridFutureAdapter.java | 479 +-
.../internal/util/future/IgniteFutureImpl.java | 10 -
.../util/future/IgniteRemoteMapTask.java | 142 +
.../ignite/internal/util/lang/GridCursor.java | 41 +
.../ignite/internal/util/lang/GridFunc.java | 1223 +----
.../internal/util/lang/GridTreePrinter.java | 81 +
.../ignite/internal/util/lang/GridTupleV.java | 195 -
.../lang/gridfunc/AlwaysFalsePredicate.java | 46 +
.../util/lang/gridfunc/AlwaysTruePredicate.java | 46 +
.../util/lang/gridfunc/AlwaysTrueReducer.java | 56 +
.../gridfunc/AtomicIntegerFactoryCallable.java | 40 +
.../gridfunc/CacheEntryGetValueClosure.java | 42 +
.../gridfunc/CacheEntryHasPeekPredicate.java | 41 +
.../lang/gridfunc/ClusterNodeGetIdClosure.java | 41 +
.../ConcurrentDequeFactoryCallable.java | 40 +
.../ConcurrentHashSetFactoryCallable.java | 40 +
.../gridfunc/ConcurrentMapFactoryCallable.java | 41 +
.../lang/gridfunc/ContainsNodeIdsPredicate.java | 52 +
.../util/lang/gridfunc/ContainsPredicate.java | 55 +
.../gridfunc/EntryByKeyEvaluationPredicate.java | 53 +
.../gridfunc/EqualsClusterNodeIdPredicate.java | 51 +
.../util/lang/gridfunc/EqualsUuidPredicate.java | 50 +
.../lang/gridfunc/FlatCollectionWrapper.java | 66 +
.../util/lang/gridfunc/FlatIterator.java | 104 +
.../util/lang/gridfunc/HasEqualIdPredicate.java | 51 +
.../lang/gridfunc/HasNotEqualIdPredicate.java | 51 +
.../util/lang/gridfunc/IdentityClosure.java | 39 +
.../util/lang/gridfunc/IntSumReducer.java | 51 +
.../util/lang/gridfunc/IsAllPredicate.java | 52 +
.../util/lang/gridfunc/IsNotAllPredicate.java | 52 +
.../util/lang/gridfunc/IsNotNullPredicate.java | 44 +
.../util/lang/gridfunc/LongSumReducer.java | 51 +
.../util/lang/gridfunc/MapFactoryCallable.java | 41 +
.../util/lang/gridfunc/MultipleIterator.java | 106 +
.../util/lang/gridfunc/NoOpClosure.java | 39 +
.../lang/gridfunc/NotContainsPredicate.java | 54 +
.../util/lang/gridfunc/NotEqualPredicate.java | 53 +
.../lang/gridfunc/PredicateCollectionView.java | 78 +
.../util/lang/gridfunc/PredicateMapView.java | 121 +
.../util/lang/gridfunc/PredicateSetView.java | 153 +
.../lang/gridfunc/ReadOnlyCollectionView.java | 95 +
.../lang/gridfunc/ReadOnlyCollectionView2X.java | 100 +
.../lang/gridfunc/RunnableWrapperClosure.java | 51 +
.../util/lang/gridfunc/SetFactoryCallable.java | 41 +
.../util/lang/gridfunc/StringConcatReducer.java | 79 +
.../util/lang/gridfunc/ToStringClosure.java | 42 +
.../lang/gridfunc/TransformCollectionView.java | 79 +
.../gridfunc/TransformFilteringIterator.java | 138 +
.../util/lang/gridfunc/TransformMapView.java | 168 +
.../util/lang/gridfunc/TransformMapView2.java | 165 +
.../util/lang/gridfunc/package-info.java | 22 +
.../util/nio/GridNioBackPressureControl.java | 39 +-
.../util/nio/GridNioMessageTracker.java | 7 +
.../util/nio/GridNioRecoveryDescriptor.java | 1 +
.../offheap/unsafe/GridOffHeapSnapTreeMap.java | 11 +-
.../internal/util/snaptree/SnapTreeMap.java | 10 +-
.../ignite/internal/util/worker/GridWorker.java | 2 +-
.../internal/visor/VisorDataTransferObject.java | 87 +
.../visor/VisorDataTransferObjectInput.java | 156 +
.../visor/VisorDataTransferObjectOutput.java | 141 +
.../ignite/internal/visor/VisorEither.java | 103 +
.../internal/visor/VisorMultiNodeTask.java | 6 +-
.../ignite/internal/visor/VisorOneNodeTask.java | 5 +-
.../internal/visor/VisorTaskArgument.java | 53 +-
.../visor/binary/VisorBinaryMetadata.java | 139 +
.../VisorBinaryMetadataCollectorTask.java | 70 +
.../VisorBinaryMetadataCollectorTaskResult.java | 87 +
.../visor/binary/VisorBinaryMetadataField.java | 101 +
.../ignite/internal/visor/cache/VisorCache.java | 305 +-
.../cache/VisorCacheAffinityConfiguration.java | 91 +-
.../visor/cache/VisorCacheAffinityNodeTask.java | 13 +-
.../cache/VisorCacheAffinityNodeTaskArg.java | 86 +
.../cache/VisorCacheAggregatedMetrics.java | 205 +-
.../visor/cache/VisorCacheClearTask.java | 100 +-
.../visor/cache/VisorCacheClearTaskResult.java | 85 +
.../visor/cache/VisorCacheConfiguration.java | 297 +-
.../VisorCacheConfigurationCollectorJob.java | 4 +-
.../cache/VisorCacheDefaultConfiguration.java | 58 -
.../cache/VisorCacheEvictionConfiguration.java | 97 +-
.../visor/cache/VisorCacheJdbcType.java | 189 +
.../visor/cache/VisorCacheJdbcTypeField.java | 117 +
.../visor/cache/VisorCacheLoadTask.java | 20 +-
.../visor/cache/VisorCacheLoadTaskArg.java | 101 +
.../visor/cache/VisorCacheMetadataTask.java | 18 +-
.../internal/visor/cache/VisorCacheMetrics.java | 214 +-
.../cache/VisorCacheMetricsCollectorTask.java | 29 +-
.../VisorCacheMetricsCollectorTaskArg.java | 87 +
.../cache/VisorCacheNearConfiguration.java | 59 +-
.../visor/cache/VisorCachePartition.java | 65 +-
.../visor/cache/VisorCachePartitions.java | 45 +-
.../visor/cache/VisorCachePartitionsTask.java | 28 +-
.../cache/VisorCacheQueryConfiguration.java | 123 -
.../cache/VisorCacheQueryDetailMetrics.java | 167 -
...sorCacheQueryDetailMetricsCollectorTask.java | 146 -
.../visor/cache/VisorCacheQueryMetrics.java | 102 -
.../cache/VisorCacheRebalanceConfiguration.java | 71 +-
.../VisorCacheResetQueryDetailMetricsTask.java | 71 -
.../cache/VisorCacheResetQueryMetricsTask.java | 69 -
.../visor/cache/VisorCacheSqlIndexMetadata.java | 115 +
.../visor/cache/VisorCacheSqlMetadata.java | 162 +
.../visor/cache/VisorCacheStartArg.java | 100 +
.../visor/cache/VisorCacheStartTask.java | 60 +-
.../cache/VisorCacheStoreConfiguration.java | 77 +-
.../visor/cache/VisorCacheSwapBackupsTask.java | 102 -
.../cache/VisorCacheTypeFieldMetadata.java | 92 -
.../visor/cache/VisorCacheTypeMetadata.java | 294 --
.../internal/visor/cache/VisorPartitionMap.java | 90 +
.../compute/VisorComputeMonitoringHolder.java | 8 +-
.../VisorComputeToggleMonitoringTask.java | 52 +-
.../VisorComputeToggleMonitoringTaskArg.java | 86 +
.../visor/compute/VisorGatewayTask.java | 18 +-
.../visor/debug/VisorThreadDumpTask.java | 13 +-
.../visor/debug/VisorThreadDumpTaskResult.java | 88 +
.../internal/visor/debug/VisorThreadInfo.java | 234 +-
.../visor/debug/VisorThreadLockInfo.java | 51 +-
.../visor/debug/VisorThreadMonitorInfo.java | 76 +-
.../visor/event/VisorGridDeploymentEvent.java | 43 +-
.../visor/event/VisorGridDiscoveryEvent.java | 59 +-
.../internal/visor/event/VisorGridEvent.java | 66 +-
.../visor/event/VisorGridEventsLost.java | 15 +-
.../internal/visor/event/VisorGridJobEvent.java | 61 +-
.../visor/event/VisorGridTaskEvent.java | 61 +-
.../internal/visor/file/VisorFileBlock.java | 60 +-
.../internal/visor/file/VisorFileBlockArg.java | 114 +
.../internal/visor/file/VisorFileBlockTask.java | 64 +-
.../visor/file/VisorLatestTextFilesTask.java | 17 +-
.../visor/file/VisorLatestTextFilesTaskArg.java | 86 +
.../ignite/internal/visor/igfs/VisorIgfs.java | 78 +-
.../internal/visor/igfs/VisorIgfsEndpoint.java | 72 +-
.../internal/visor/igfs/VisorIgfsMetrics.java | 118 +-
.../internal/visor/igfs/VisorIgfsProfiler.java | 24 +-
.../visor/igfs/VisorIgfsProfilerClearTask.java | 11 +-
.../igfs/VisorIgfsProfilerClearTaskResult.java | 85 +
.../visor/igfs/VisorIgfsProfilerEntry.java | 106 +-
.../visor/igfs/VisorIgfsProfilerTask.java | 31 +-
.../VisorIgfsProfilerUniformityCounters.java | 38 +-
.../visor/igfs/VisorIgfsSamplingStateTask.java | 17 +-
.../igfs/VisorIgfsSamplingStateTaskArg.java | 86 +
.../ignite/internal/visor/log/VisorLogFile.java | 43 +-
.../internal/visor/log/VisorLogSearchArg.java | 114 +
.../visor/log/VisorLogSearchResult.java | 80 +-
.../internal/visor/log/VisorLogSearchTask.java | 74 +-
.../visor/log/VisorLogSearchTaskResult.java | 92 +
.../misc/VisorChangeGridActiveStateTask.java | 65 +
.../visor/node/VisorAtomicConfiguration.java | 49 +-
.../visor/node/VisorBasicConfiguration.java | 163 +-
.../node/VisorExecutorServiceConfiguration.java | 81 +-
.../visor/node/VisorGridConfiguration.java | 133 +-
.../visor/node/VisorIgfsConfiguration.java | 233 +-
.../visor/node/VisorLifecycleConfiguration.java | 39 +-
.../visor/node/VisorMemoryConfiguration.java | 141 +
.../node/VisorMemoryPolicyConfiguration.java | 105 +
.../visor/node/VisorMetricsConfiguration.java | 50 +-
.../VisorNodeConfigurationCollectorJob.java | 4 +-
.../visor/node/VisorNodeDataCollectorJob.java | 63 +-
.../node/VisorNodeDataCollectorJobResult.java | 115 +-
.../visor/node/VisorNodeDataCollectorTask.java | 42 +-
.../node/VisorNodeDataCollectorTaskArg.java | 54 +-
.../node/VisorNodeDataCollectorTaskResult.java | 127 +-
.../node/VisorNodeEventsCollectorTask.java | 133 +-
.../node/VisorNodeEventsCollectorTaskArg.java | 163 +
.../internal/visor/node/VisorNodeGcTask.java | 18 +-
.../visor/node/VisorNodeGcTaskResult.java | 85 +
.../internal/visor/node/VisorNodePingTask.java | 15 +-
.../visor/node/VisorNodePingTaskResult.java | 99 +
.../visor/node/VisorNodeSuppressedErrors.java | 89 +
.../node/VisorNodeSuppressedErrorsTask.java | 23 +-
.../node/VisorPeerToPeerConfiguration.java | 57 +-
.../visor/node/VisorRestConfiguration.java | 93 +-
.../node/VisorSegmentationConfiguration.java | 67 +-
.../visor/node/VisorSpiDescription.java | 89 +
.../visor/node/VisorSpisConfiguration.java | 139 +-
.../visor/node/VisorSuppressedError.java | 147 +
.../node/VisorTransactionConfiguration.java | 104 +-
.../visor/query/VisorCancelQueriesTask.java | 72 -
.../query/VisorCollectRunningQueriesTask.java | 96 -
.../internal/visor/query/VisorQueryArg.java | 65 +-
.../visor/query/VisorQueryCancelTask.java | 72 +
.../visor/query/VisorQueryCleanupTask.java | 6 +-
.../visor/query/VisorQueryConfiguration.java | 142 +
.../visor/query/VisorQueryDetailMetrics.java | 205 +
.../VisorQueryDetailMetricsCollectorTask.java | 146 +
.../internal/visor/query/VisorQueryEntity.java | 188 +
.../internal/visor/query/VisorQueryField.java | 42 +-
.../internal/visor/query/VisorQueryIndex.java | 105 +
.../visor/query/VisorQueryIndexField.java | 106 +
.../internal/visor/query/VisorQueryJob.java | 274 -
.../internal/visor/query/VisorQueryMetrics.java | 125 +
.../visor/query/VisorQueryNextPageTask.java | 33 +-
.../visor/query/VisorQueryNextPageTaskArg.java | 86 +
.../query/VisorQueryResetDetailMetricsTask.java | 71 +
.../visor/query/VisorQueryResetMetricsTask.java | 69 +
.../internal/visor/query/VisorQueryResult.java | 97 +-
.../visor/query/VisorQueryResultEx.java | 89 -
.../visor/query/VisorQueryScanRegexFilter.java | 59 +
.../query/VisorQueryScanSubstringFilter.java | 64 -
.../internal/visor/query/VisorQueryTask.java | 120 +-
.../internal/visor/query/VisorQueryUtils.java | 43 +-
.../query/VisorRunningQueriesCollectorTask.java | 96 +
.../internal/visor/query/VisorRunningQuery.java | 47 +-
.../internal/visor/query/VisorScanQueryArg.java | 157 +
.../visor/query/VisorScanQueryTask.java | 185 +
.../visor/service/VisorServiceDescriptor.java | 40 +-
.../internal/visor/util/VisorMimeTypes.java | 12 +-
.../internal/visor/util/VisorTaskUtils.java | 46 +-
.../org/apache/ignite/lang/IgniteFuture.java | 15 -
.../apache/ignite/marshaller/Marshaller.java | 1 +
.../ignite/marshaller/jdk/JdkMarshaller.java | 1 +
.../ignite/mxbean/CacheMetricsMXBean.java | 40 -
.../org/apache/ignite/mxbean/IgniteMXBean.java | 29 +-
.../ignite/mxbean/MemoryMetricsMXBean.java | 89 +
.../ignite/plugin/CachePluginConfiguration.java | 7 -
.../ignite/plugin/CachePluginContext.java | 5 -
.../ignite/plugin/CachePluginProvider.java | 4 +-
.../apache/ignite/plugin/PluginProvider.java | 11 +-
.../ignite/plugin/platform/package-info.java | 22 +
.../plugin/security/SecurityPermissionSet.java | 3 +-
.../ignite/plugin/security/SecuritySubject.java | 3 +-
.../plugin/segmentation/SegmentationPolicy.java | 18 +-
.../org/apache/ignite/spi/IgniteSpiAdapter.java | 9 +
.../communication/tcp/TcpCommunicationSpi.java | 174 +-
.../tcp/TcpCommunicationSpiMBean.java | 54 -
.../ignite/spi/discovery/DiscoverySpi.java | 11 +-
.../spi/discovery/DiscoverySpiListener.java | 9 +
.../ignite/spi/discovery/tcp/ClientImpl.java | 6 +-
.../ignite/spi/discovery/tcp/ServerImpl.java | 52 +-
.../spi/discovery/tcp/TcpDiscoveryImpl.java | 10 +
.../spi/discovery/tcp/TcpDiscoverySpi.java | 92 +-
.../tcp/internal/TcpDiscoveryNode.java | 15 +-
.../tcp/internal/TcpDiscoveryNodesRing.java | 3 +-
.../ignite/spi/swapspace/SwapContext.java | 47 -
.../apache/ignite/spi/swapspace/SwapKey.java | 128 -
.../ignite/spi/swapspace/SwapSpaceSpi.java | 225 -
.../spi/swapspace/SwapSpaceSpiListener.java | 35 -
.../spi/swapspace/file/FileSwapArray.java | 188 -
.../spi/swapspace/file/FileSwapSpaceSpi.java | 2025 --------
.../swapspace/file/FileSwapSpaceSpiMBean.java | 67 -
.../ignite/spi/swapspace/file/package-info.java | 22 -
.../spi/swapspace/noop/NoopSwapSpaceSpi.java | 159 -
.../ignite/spi/swapspace/noop/package-info.java | 22 -
.../ignite/spi/swapspace/package-info.java | 22 -
.../ignite/startup/BasicWarmupClosure.java | 3 +-
.../TransactionDeadlockException.java | 4 +-
.../transactions/TransactionException.java | 80 +
.../TransactionHeuristicException.java | 4 +-
.../TransactionOptimisticException.java | 4 +-
.../TransactionRollbackException.java | 4 +-
.../TransactionTimeoutException.java | 4 +-
.../org/jsr166/ConcurrentLinkedHashMap.java | 2 +-
.../resources/META-INF/classnames.properties | 381 +-
.../core/src/test/config/spring-multicache.xml | 16 +
.../config/websession/example-cache-client.xml | 4 +
.../org.apache.ignite.plugin.PluginProvider | 3 +-
.../GridCacheAffinityBackupsSelfTest.java | 20 +-
.../ignite/IgniteCacheAffinitySelfTest.java | 12 +-
.../ignite/cache/LargeEntryUpdateTest.java | 176 +
.../affinity/AffinityClientNodeSelfTest.java | 15 +-
.../affinity/AffinityHistoryCleanupTest.java | 3 +-
.../fair/FairAffinityDynamicCacheSelfTest.java | 86 -
...airAffinityFunctionBackupFilterSelfTest.java | 44 -
...ffinityFunctionExcludeNeighborsSelfTest.java | 31 -
.../fair/FairAffinityFunctionNodesSelfTest.java | 247 -
.../fair/FairAffinityFunctionSelfTest.java | 31 -
.../affinity/fair/FairAffinityNodesRestart.java | 130 -
.../local/LocalAffinityFunctionTest.java | 4 +-
...inityFunctionFastPowerOfTwoHashSelfTest.java | 33 +
...ndezvousAffinityFunctionSimpleBenchmark.java | 1054 ++++
...ousAffinityFunctionStandardHashSelfTest.java | 33 +
.../IgniteCacheExpiryStoreLoadSelfTest.java | 14 +-
.../CacheJdbcPojoStoreAbstractSelfTest.java | 1 -
.../store/jdbc/CacheJdbcPojoStoreTest.java | 13 +
...eJdbcStoreAbstractMultithreadedSelfTest.java | 1 -
...CacheJdbcBlobStoreMultithreadedSelfTest.java | 1 -
.../apache/ignite/igfs/IgfsPathSelfTest.java | 1 +
.../internal/ClusterNodeMetricsSelfTest.java | 48 +-
.../internal/GridAffinityNoCacheSelfTest.java | 21 +
.../internal/GridLifecycleAwareSelfTest.java | 1 +
.../internal/GridMultipleJobsSelfTest.java | 12 +-
.../IgniteClientReconnectCacheTest.java | 16 +-
.../IgniteSlowClientDetectionSelfTest.java | 6 +
.../MarshallerContextLockingSelfTest.java | 33 +-
.../BinaryArrayIdentityResolverSelfTest.java | 4 -
...ryConfigurationCustomSerializerSelfTest.java | 147 +
.../internal/binary/BinaryEnumsSelfTest.java | 2 +
.../binary/BinaryFieldExtractionSelfTest.java | 161 +
.../BinaryFieldIdentityResolverSelfTest.java | 333 --
...ryIdentityResolverConfigurationSelfTest.java | 138 -
.../BinaryObjectBuilderAdditionalSelfTest.java | 1 -
...naryObjectBuilderDefaultMappersSelfTest.java | 1 -
.../binary/BinaryObjectExceptionSelfTest.java | 209 -
.../mutabletest/GridBinaryTestClasses.java | 9 +
...GridManagerLocalMessageListenerSelfTest.java | 8 +-
.../managers/GridManagerStopSelfTest.java | 19 +-
.../managers/GridNoopManagerSelfTest.java | 2 +-
.../GridCommunicationSendMessageSelfTest.java | 3 -
.../GridDeploymentMessageCountSelfTest.java | 10 +
.../GridSwapSpaceCustomLocalValue.java | 85 -
.../swapspace/GridSwapSpaceManagerSelfTest.java | 170 -
.../managers/swapspace/package-info.java | 22 -
.../OptimizedMarshallerNodeFailoverTest.java | 1 +
.../OptimizedMarshallerPooledSelfTest.java | 2 +
.../optimized/OptimizedMarshallerSelfTest.java | 1 +
...arshallerSerialPersistentFieldsSelfTest.java | 2 +
.../OptimizedObjectStreamSelfTest.java | 5 +
.../pagemem/impl/PageIdUtilsSelfTest.java | 146 +
.../pagemem/impl/PageMemoryNoLoadSelfTest.java | 346 ++
.../BinaryObjectOffHeapUnswapTemporaryTest.java | 367 --
.../cache/CacheClientStoreSelfTest.java | 35 +-
.../cache/CacheConfigurationLeakTest.java | 27 +-
.../cache/CacheDeferredDeleteQueueTest.java | 2 +-
...cheDhtLocalPartitionAfterRemoveSelfTest.java | 2 +-
.../cache/CacheEnumOperationsAbstractTest.java | 52 +-
...CacheExchangeMessageDuplicatedStateTest.java | 37 +-
.../cache/CacheGetEntryAbstractTest.java | 8 +-
...erceptorPartitionCounterLocalSanityTest.java | 25 +-
...torPartitionCounterRandomOperationsTest.java | 111 -
.../cache/CacheKeepBinaryTransactionTest.java | 121 +
.../CacheMemoryPolicyConfigurationTest.java | 164 +
.../cache/CacheNearReaderUpdateTest.java | 24 -
.../cache/CacheOffheapMapEntrySelfTest.java | 61 +-
.../CachePutEventListenerErrorSelfTest.java | 41 +-
.../cache/CacheRebalancingSelfTest.java | 5 +-
.../cache/CacheRemoveAllSelfTest.java | 1 -
.../CacheSerializableTransactionsTest.java | 63 +-
.../CacheStartupInDeploymentModesTest.java | 1 +
.../cache/CacheStopAndDestroySelfTest.java | 48 +-
.../cache/CacheSwapUnswapGetTest.java | 313 --
.../CacheSwapUnswapGetTestSmallQueueSize.java | 35 -
.../cache/ClusterStateAbstractTest.java | 439 ++
.../cache/ClusterStatePartitionedSelfTest.java | 41 +
.../cache/ClusterStateReplicatedSelfTest.java | 42 +
.../cache/CrossCacheTxRandomOperationsTest.java | 36 +-
.../EntryVersionConsistencyReadThroughTest.java | 6 +-
...idAbstractCacheInterceptorRebalanceTest.java | 38 +-
...ridCacheAbstractByteArrayValuesSelfTest.java | 6 -
.../GridCacheAbstractFailoverSelfTest.java | 4 +
.../cache/GridCacheAbstractFullApiSelfTest.java | 205 +-
.../GridCacheAbstractLocalStoreSelfTest.java | 24 +-
.../cache/GridCacheAbstractMetricsSelfTest.java | 36 +-
.../GridCacheAbstractRemoveFailureTest.java | 29 +-
.../cache/GridCacheAbstractSelfTest.java | 35 +-
.../cache/GridCacheAbstractTxReadTest.java | 2 -
.../cache/GridCacheBasicStoreAbstractTest.java | 6 +-
...acheBasicStoreMultithreadedAbstractTest.java | 1 -
.../cache/GridCacheClearSelfTest.java | 125 +-
...GridCacheConcurrentGetCacheOnClientTest.java | 129 +
.../cache/GridCacheConcurrentMapTest.java | 138 -
.../GridCacheConcurrentTxMultiNodeTest.java | 12 +-
.../GridCacheConditionalDeploymentSelfTest.java | 19 +-
...idCacheConfigurationConsistencySelfTest.java | 55 +-
...ridCacheConfigurationValidationSelfTest.java | 13 -
.../GridCacheDeploymentOffHeapSelfTest.java | 41 -
...ridCacheDeploymentOffHeapValuesSelfTest.java | 41 -
.../cache/GridCacheDeploymentSelfTest.java | 2 +-
.../cache/GridCacheEntryMemorySizeSelfTest.java | 19 +-
.../GridCacheEvictionEventAbstractTest.java | 8 +-
...idCacheGetAndTransformStoreAbstractTest.java | 1 -
...heInterceptorAtomicOffheapRebalanceTest.java | 30 -
...GridCacheInterceptorAtomicRebalanceTest.java | 6 -
...ceptorTransactionalOffheapRebalanceTest.java | 35 -
...heInterceptorTransactionalRebalanceTest.java | 6 -
.../cache/GridCacheLifecycleAwareSelfTest.java | 1 +
.../cache/GridCacheMemoryModeSelfTest.java | 289 --
.../cache/GridCacheObjectToStringSelfTest.java | 1 +
.../cache/GridCacheOffHeapCleanupTest.java | 169 -
...HeapMultiThreadedUpdateAbstractSelfTest.java | 3 -
.../GridCacheOffHeapTieredAbstractSelfTest.java | 675 ---
.../GridCacheOffHeapTieredAtomicSelfTest.java | 32 -
...heOffHeapTieredEvictionAbstractSelfTest.java | 364 --
...acheOffHeapTieredEvictionAtomicSelfTest.java | 32 -
.../GridCacheOffHeapTieredEvictionSelfTest.java | 33 -
.../cache/GridCacheOffHeapTieredSelfTest.java | 33 -
.../GridCacheOffHeapValuesEvictionSelfTest.java | 210 -
.../cache/GridCacheOffheapUpdateSelfTest.java | 3 -
.../GridCacheOrderedPreloadingSelfTest.java | 48 +-
.../cache/GridCacheP2PUndeploySelfTest.java | 29 +-
.../GridCachePartitionedAffinitySpreadTest.java | 169 -
.../cache/GridCachePartitionedGetSelfTest.java | 2 -
...chePartitionedOffHeapLocalStoreSelfTest.java | 44 -
.../cache/GridCachePartitionedWritesTest.java | 1 -
.../GridCachePreloadingEvictionsSelfTest.java | 11 +-
.../cache/GridCachePutAllFailoverSelfTest.java | 58 -
.../cache/GridCacheQueryEmbeddedValue.java | 37 +
.../cache/GridCacheReloadSelfTest.java | 4 +-
.../processors/cache/GridCacheStopSelfTest.java | 2 -
...ridCacheStoreManagerDeserializationTest.java | 11 +-
.../cache/GridCacheStoreValueBytesSelfTest.java | 7 +-
.../cache/GridCacheSwapCleanupTest.java | 99 -
.../cache/GridCacheSwapPreloadSelfTest.java | 2 -
.../cache/GridCacheSwapReloadSelfTest.java | 260 -
...ridCacheSwapSpaceSpiConsistencySelfTest.java | 146 -
.../processors/cache/GridCacheTestEntryEx.java | 25 +-
.../GridCacheTtlManagerEvictionSelfTest.java | 52 +-
.../GridCacheValueBytesPreloadingSelfTest.java | 61 +-
...idCacheValueConsistencyAbstractSelfTest.java | 51 +-
.../cache/GridCacheVersionMultinodeTest.java | 6 +-
.../GridCacheVersionTopologyChangeTest.java | 5 -
.../processors/cache/H2CacheStoreStrategy.java | 37 +-
.../cache/IgniteCacheAbstractTest.java | 7 +-
...IgniteCacheAtomicPutAllFailoverSelfTest.java | 5 -
.../IgniteCacheConfigVariationsFullApiTest.java | 282 +-
.../IgniteCacheEntryListenerAbstractTest.java | 11 -
...cheEntryListenerAtomicOffheapTieredTest.java | 32 -
...cheEntryListenerAtomicOffheapValuesTest.java | 32 -
...niteCacheEntryListenerExpiredEventsTest.java | 26 +-
...teCacheEntryListenerTxOffheapTieredTest.java | 32 -
...teCacheEntryListenerTxOffheapValuesTest.java | 32 -
...niteCacheExpireAndUpdateConsistencyTest.java | 37 +-
.../IgniteCacheInterceptorSelfTestSuite.java | 12 +-
.../cache/IgniteCacheInvokeAbstractTest.java | 2 +-
...gniteCacheInvokeReadThroughAbstractTest.java | 4 -
...iteCacheInvokeReadThroughSingleNodeTest.java | 32 +-
.../cache/IgniteCacheInvokeReadThroughTest.java | 92 +-
...gniteCacheLoadRebalanceEvictionSelfTest.java | 3 +-
.../cache/IgniteCacheObjectPutSelfTest.java | 179 +
...gniteCacheP2pUnmarshallingNearErrorTest.java | 4 +-
.../cache/IgniteCachePeekModesAbstractTest.java | 249 +-
.../IgniteCacheReadThroughEvictionSelfTest.java | 12 +-
.../IgniteCacheStoreValueAbstractTest.java | 5 -
.../IgniteCacheTopologySafeGetSelfTest.java | 2 +-
.../cache/IgniteCacheTxNearPeekModesTest.java | 5 +-
.../cache/IgniteCacheTxPeekModesTest.java | 5 +-
.../IgniteClientAffinityAssignmentSelfTest.java | 20 +-
...eDynamicCacheStartNoExchangeTimeoutTest.java | 11 +-
.../IgniteIncompleteCacheObjectSelfTest.java | 186 +
...iteMarshallerCacheClassNameConflictTest.java | 5 +
...lerCacheClientRequestsMappingOnMissTest.java | 94 +-
.../IgniteTxStoreExceptionAbstractSelfTest.java | 4 +-
.../cache/MemoryPolicyConfigValidationTest.java | 241 +
.../cache/OffHeapTieredTransactionSelfTest.java | 135 -
...heapCacheMetricsForClusterGroupSelfTest.java | 3 -
.../cache/OffheapCacheOnClientsTest.java | 143 -
.../GridCacheBinaryObjectsAbstractSelfTest.java | 84 +-
...ntNodeBinaryObjectMetadataMultinodeTest.java | 2 +
.../GridDataStreamerImplSelfTest.java | 8 +-
...AtomicNearDisabledOffheapTieredSelfTest.java | 29 -
...ObjectsAtomicNearDisabledOnheapSelfTest.java | 25 +
...inaryObjectsAtomicOffheapTieredSelfTest.java | 29 -
...dCacheBinaryObjectsAtomicOnheapSelfTest.java | 25 +
...tionedNearDisabledOffheapTieredSelfTest.java | 30 -
...tsPartitionedNearDisabledOnheapSelfTest.java | 25 +
...ObjectsPartitionedOffheapTieredSelfTest.java | 30 -
...eBinaryObjectsPartitionedOnheapSelfTest.java | 25 +
.../dht/GridCacheMemoryModeBinarySelfTest.java | 36 -
...dCacheOffHeapTieredAtomicBinarySelfTest.java | 48 -
.../GridCacheOffHeapTieredBinarySelfTest.java | 48 -
...fHeapTieredEvictionAtomicBinarySelfTest.java | 96 -
...acheOffHeapTieredEvictionBinarySelfTest.java | 96 -
...BinaryObjectsLocalOffheapTieredSelfTest.java | 29 -
...idCacheBinaryObjectsLocalOnheapSelfTest.java | 26 +
.../database/tree/io/TrackingPageIOTest.java | 283 ++
...actQueueFailoverDataConsistencySelfTest.java | 17 +-
.../GridCacheQueueCleanupSelfTest.java | 7 -
...dCacheQueueMultiNodeConsistencySelfTest.java | 7 -
.../IgniteCollectionAbstractTest.java | 7 -
.../IgniteDataStructureUniqueNameTest.java | 7 -
...SemaphoreFailoverSafeReleasePermitsTest.java | 9 +-
.../GridCacheLocalAtomicOffheapSetSelfTest.java | 32 -
.../GridCacheLocalAtomicQueueApiSelfTest.java | 6 -
.../local/GridCacheLocalAtomicSetSelfTest.java | 7 -
.../GridCacheLocalOffheapQueueApiSelfTest.java | 31 -
.../local/GridCacheLocalQueueApiSelfTest.java | 7 -
.../local/GridCacheLocalSetSelfTest.java | 7 -
...artitionedAtomicOffheapQueueApiSelfTest.java | 32 -
...omicOffheapQueueCreateMultiNodeSelfTest.java | 32 -
...onedAtomicOffheapQueueMultiNodeSelfTest.java | 32 -
...dCachePartitionedAtomicQueueApiSelfTest.java | 7 -
...ionedAtomicQueueCreateMultiNodeSelfTest.java | 7 -
...micQueueFailoverDataConsistencySelfTest.java | 7 -
...PartitionedAtomicQueueMultiNodeSelfTest.java | 7 -
...itionedAtomicQueueRotativeMultiNodeTest.java | 7 -
...chePartitionedAtomicSetFailoverSelfTest.java | 7 -
...rtitionedDataStructuresFailoverSelfTest.java | 7 -
...artitionedOffHeapValuesQueueApiSelfTest.java | 35 -
...achePartitionedOffHeapValuesSetSelfTest.java | 32 -
...edOffheapDataStructuresFailoverSelfTest.java | 33 -
...hePartitionedOffheapSetFailoverSelfTest.java | 32 -
.../GridCachePartitionedQueueApiSelfTest.java | 7 -
...PartitionedQueueCreateMultiNodeSelfTest.java | 7 -
...dCachePartitionedQueueEntryMoveSelfTest.java | 9 +-
...nedQueueFailoverDataConsistencySelfTest.java | 7 -
...CachePartitionedQueueJoinedNodeSelfTest.java | 7 -
...dCachePartitionedQueueMultiNodeSelfTest.java | 7 -
...hePartitionedQueueRotativeMultiNodeTest.java | 7 -
...GridCachePartitionedSetFailoverSelfTest.java | 7 -
.../GridCachePartitionedSetSelfTest.java | 7 -
.../IgnitePartitionedQueueNoBackupsTest.java | 7 -
...eplicatedDataStructuresFailoverSelfTest.java | 7 -
.../GridCacheReplicatedQueueApiSelfTest.java | 7 -
...idCacheReplicatedQueueMultiNodeSelfTest.java | 7 -
...cheReplicatedQueueRotativeMultiNodeTest.java | 7 -
.../GridCacheReplicatedSetSelfTest.java | 7 -
.../CacheAtomicPrimarySyncBackPressureTest.java | 165 +
.../CacheGetFutureHangsSelfTest.java | 1 +
...eLateAffinityAssignmentFairAffinityTest.java | 32 -
.../CacheLateAffinityAssignmentTest.java | 2 +-
...CacheLoadingConcurrentGridStartSelfTest.java | 22 +-
...tractDistributedByteArrayValuesSelfTest.java | 130 +-
.../GridCacheAbstractNodeRestartSelfTest.java | 116 +-
...tractPartitionedByteArrayValuesSelfTest.java | 35 +-
.../GridCacheClientModesAbstractSelfTest.java | 4 +-
...acheEntrySetIterationPreloadingSelfTest.java | 6 +-
.../distributed/GridCacheEventAbstractTest.java | 103 +-
...heExpiredEntriesPreloadAbstractSelfTest.java | 122 -
...dCacheMultithreadedFailoverAbstractTest.java | 1 -
...ridCachePartitionNotLoadedEventSelfTest.java | 21 +-
...GridCachePreloadRestartAbstractSelfTest.java | 12 +-
...ActiveOnStartNodeJoinValidationSelfTest.java | 134 +
.../IgniteCacheAtomicNodeRestartTest.java | 5 -
...niteCacheClientNodeChangingTopologyTest.java | 52 +-
...teCacheClientNodePartitionsExchangeTest.java | 18 +-
.../distributed/IgniteCacheCreatePutTest.java | 1 +
.../IgniteCacheNearOffheapGetSelfTest.java | 136 -
.../IgniteCachePartitionLossPolicySelfTest.java | 352 ++
.../IgniteCacheTxFairAffinityNodeJoinTest.java | 35 -
.../IgniteCacheTxIteratorSelfTest.java | 34 +-
...arDisabledFairAffinityPutGetRestartTest.java | 35 -
.../IgniteTxCachePrimarySyncTest.java | 2 +
...teSynchronizationModesMultithreadedTest.java | 5 +-
...xOriginatingNodeFailureAbstractSelfTest.java | 3 +-
...cOriginatingNodeFailureAbstractSelfTest.java | 5 +-
...tPartitionedOnlyByteArrayValuesSelfTest.java | 58 +-
...acheAtomicExpiredEntriesPreloadSelfTest.java | 46 -
.../dht/GridCacheAtomicNearCacheSelfTest.java | 60 +-
.../dht/GridCacheColocatedDebugTest.java | 1 -
...eColocatedOptimisticTransactionSelfTest.java | 4 -
.../dht/GridCacheDhtEntrySelfTest.java | 14 +-
...GridCacheDhtEvictionNearReadersSelfTest.java | 7 +-
.../dht/GridCacheDhtEvictionSelfTest.java | 357 --
.../GridCacheDhtEvictionsDisabledSelfTest.java | 6 +-
...idCacheDhtExpiredEntriesPreloadSelfTest.java | 39 -
.../dht/GridCacheDhtPreloadDelayedSelfTest.java | 2 +-
.../GridCacheDhtPreloadDisabledSelfTest.java | 11 +-
.../dht/GridCacheDhtPreloadOffHeapSelfTest.java | 38 -
.../dht/GridCacheDhtPreloadOnheapSelfTest.java | 26 +
.../dht/GridCacheDhtPreloadSelfTest.java | 43 +-
...icOffHeapTieredMultiNodeFullApiSelfTest.java | 43 -
...NearDisabledAtomicOnheapFullApiSelfTest.java | 38 +
...ledAtomicOnheapMultiNodeFullApiSelfTest.java | 38 +
...ledFairAffinityMultiNodeFullApiSelfTest.java | 36 -
...ionedNearDisabledOffHeapFullApiSelfTest.java | 33 -
...DisabledOffHeapMultiNodeFullApiSelfTest.java | 33 -
...abledOffHeapTieredAtomicFullApiSelfTest.java | 57 -
...earDisabledOffHeapTieredFullApiSelfTest.java | 33 -
...edOffHeapTieredMultiNodeFullApiSelfTest.java | 33 -
...tionedNearDisabledOnheapFullApiSelfTest.java | 27 +
...rDisabledOnheapMultiNodeFullApiSelfTest.java | 27 +
.../dht/GridCacheTxNodeFailureSelfTest.java | 13 +-
.../dht/IgniteCacheConcurrentPutGetRemove.java | 27 +-
.../IgniteCacheCrossCacheTxFailoverTest.java | 49 +-
.../dht/IgniteCacheMultiTxLockSelfTest.java | 3 +
...artitionedBackupNodeFailureRecoveryTest.java | 16 +-
.../IgniteCachePutRetryAbstractSelfTest.java | 56 +-
.../dht/IgniteCachePutRetryAtomicSelfTest.java | 2 +-
...gniteCachePutRetryTransactionalSelfTest.java | 28 +-
.../AtomicPutAllChangingTopologyTest.java | 4 +-
...eAtomicInvalidPartitionHandlingSelfTest.java | 85 +-
...nlyFairAffinityMultiNodeFullApiSelfTest.java | 36 -
...tomicClientOnlyMultiNodeFullApiSelfTest.java | 116 +-
...micFairAffinityMultiNodeFullApiSelfTest.java | 35 -
...ledFairAffinityMultiNodeFullApiSelfTest.java | 36 -
...eAtomicNearOnlyMultiNodeFullApiSelfTest.java | 52 -
.../GridCacheAtomicOffHeapFullApiSelfTest.java | 67 -
...heAtomicOffHeapMultiNodeFullApiSelfTest.java | 68 -
...CacheAtomicOffHeapTieredFullApiSelfTest.java | 32 -
...icOffHeapTieredMultiNodeFullApiSelfTest.java | 33 -
.../GridCacheAtomicOnheapFullApiSelfTest.java | 28 +
...cheAtomicOnheapMultiNodeFullApiSelfTest.java | 26 +
...derFairAffinityMultiNodeFullApiSelfTest.java | 36 -
...PrimaryWriteOrderOffHeapFullApiSelfTest.java | 32 -
...yWriteOrderOffHeapTieredFullApiSelfTest.java | 33 -
...cPrimaryWriteOrderOnheapFullApiSelfTest.java | 28 +
...riteOrderOnheapMultiNodeFullApiSelfTest.java | 29 +
...ityOrderOffHeapMultiNodeFullApiSelfTest.java | 33 -
...erOffHeapTieredMultiNodeFullApiSelfTest.java | 33 -
...dCacheNearExpiredEntriesPreloadSelfTest.java | 33 -
.../near/GridCacheNearMultiNodeSelfTest.java | 36 +-
.../near/GridCacheNearOneNodeSelfTest.java | 2 +-
...nlyFairAffinityMultiNodeFullApiSelfTest.java | 35 -
...idCacheNearOnlyMultiNodeFullApiSelfTest.java | 10 +-
.../near/GridCacheNearReadersSelfTest.java | 36 +-
.../near/GridCacheNearTxForceKeyTest.java | 14 +-
...rtitionedAffinityHashIdResolverSelfTest.java | 102 -
...ePartitionedAtomicOnheapFullApiSelfTest.java | 38 +
...nedAtomicOnheapMultiNodeFullApiSelfTest.java | 38 +
...ePartitionedBasicStoreMultiNodeSelfTest.java | 1 -
.../GridCachePartitionedEvictionSelfTest.java | 3 +-
.../GridCachePartitionedFullApiSelfTest.java | 3 -
...achePartitionedMultiNodeCounterSelfTest.java | 12 +-
...achePartitionedMultiNodeFullApiSelfTest.java | 41 -
...ePartitionedMultiThreadedPutGetSelfTest.java | 3 +-
...dCachePartitionedOffHeapFullApiSelfTest.java | 32 -
...titionedOffHeapMultiNodeFullApiSelfTest.java | 32 -
...PartitionedOffHeapTieredFullApiSelfTest.java | 32 -
...edOffHeapTieredMultiNodeFullApiSelfTest.java | 73 -
...idCachePartitionedOnheapFullApiSelfTest.java | 26 +
...rtitionedOnheapMultiNodeFullApiSelfTest.java | 26 +
...achePartitionedPreloadLifecycleSelfTest.java | 1 -
.../GridNearOffheapCacheStoreUpdateTest.java | 35 -
.../near/GridPartitionedBackupLoadSelfTest.java | 4 +-
.../near/IgniteCacheNearOnlyTxTest.java | 12 +-
.../near/NearCachePutAllMultinodeTest.java | 1 -
.../near/NoneRebalanceModeSelfTest.java | 4 +-
...cheRebalancingPartitionDistributionTest.java | 2 +-
.../GridCacheRebalancingSyncSelfTest.java | 26 +-
...eRebalancingUnmarshallingFailedSelfTest.java | 6 +-
...xcludeNeighborsMultiNodeFullApiSelfTest.java | 36 -
...tedFairAffinityMultiNodeFullApiSelfTest.java | 35 -
...stractReplicatedByteArrayValuesSelfTest.java | 30 -
...nedFairAffinityMultiNodeFullApiSelfTest.java | 37 -
.../GridCacheReplicatedEvictionSelfTest.java | 135 -
.../GridCacheReplicatedFullApiSelfTest.java | 9 -
...idCacheReplicatedOffHeapFullApiSelfTest.java | 32 -
...plicatedOffHeapMultiNodeFullApiSelfTest.java | 32 -
...eReplicatedOffHeapTieredFullApiSelfTest.java | 33 -
...edOffHeapTieredMultiNodeFullApiSelfTest.java | 33 -
...ridCacheReplicatedOnheapFullApiSelfTest.java | 26 +
...eplicatedOnheapMultiNodeFullApiSelfTest.java | 26 +
...idCacheReplicatedUnswapAdvancedSelfTest.java | 6 +-
...CacheReplicatedPreloadLifecycleSelfTest.java | 1 -
...idCacheReplicatedPreloadOffHeapSelfTest.java | 37 -
.../GridCacheReplicatedPreloadSelfTest.java | 25 +-
.../cache/eviction/EvictionAbstractTest.java | 38 +-
.../GridCacheBatchEvictUnswapSelfTest.java | 200 -
...heConcurrentEvictionConsistencySelfTest.java | 8 +-
.../GridCacheConcurrentEvictionsSelfTest.java | 3 +-
.../GridCacheDistributedEvictionsSelfTest.java | 237 -
.../GridCacheEmptyEntriesAbstractSelfTest.java | 6 +-
.../GridCacheEvictableEntryEqualsSelfTest.java | 1 +
.../GridCacheEvictionFilterSelfTest.java | 3 +-
.../GridCacheEvictionLockUnlockSelfTest.java | 1 +
.../GridCacheEvictionTouchSelfTest.java | 14 +-
...cheSynchronousEvictionsFailoverSelfTest.java | 167 -
.../lru/LruNearEvictionPolicySelfTest.java | 28 -
.../LruNearOnlyNearEvictionPolicySelfTest.java | 55 -
.../paged/PageEvictionAbstractTest.java | 124 +
.../paged/PageEvictionMultinodeTest.java | 110 +
.../paged/PageEvictionReadThroughTest.java | 140 +
.../paged/PageEvictionTouchOrderTest.java | 109 +
.../paged/PageEvictionWithRebalanceTest.java | 81 +
.../Random2LruPageEvictionMultinodeTest.java | 30 +
...Random2LruPageEvictionWithRebalanceTest.java | 30 +
.../RandomLruPageEvictionMultinodeTest.java | 30 +
.../RandomLruPageEvictionWithRebalanceTest.java | 30 +
.../cache/eviction/paged/TestObject.java | 78 +
.../SortedEvictionPolicyPerformanceTest.java | 2 +-
...CacheAtomicLocalOffheapExpiryPolicyTest.java | 30 -
...eCacheAtomicLocalOnheapExpiryPolicyTest.java | 26 +
...gniteCacheAtomicOffheapExpiryPolicyTest.java | 30 -
...IgniteCacheAtomicOnheapExpiryPolicyTest.java | 26 +
...rimaryWriteOrderOffheapExpiryPolicyTest.java | 31 -
...maryWriteOrderWithStoreExpiryPolicyTest.java | 2 +-
...teOrderWithStoreOffheapExpiryPolicyTest.java | 31 -
...AtomicReplicatedOffheapExpiryPolicyTest.java | 30 -
...eAtomicWithStoreOffheapExpiryPolicyTest.java | 30 -
.../IgniteCacheClientNearCacheExpiryTest.java | 28 +-
.../IgniteCacheExpiryPolicyAbstractTest.java | 75 +-
.../IgniteCacheExpiryPolicyTestSuite.java | 15 +-
...eCacheExpiryPolicyWithStoreAbstractTest.java | 22 +-
.../expiry/IgniteCacheLargeValueExpireTest.java | 175 +
...niteCacheTxLocalOffheapExpiryPolicyTest.java | 30 -
.../IgniteCacheTxOffheapExpiryPolicyTest.java | 30 -
...acheTxReplicatedOffheapExpiryPolicyTest.java | 30 -
...CacheTxWithStoreOffheapExpiryPolicyTest.java | 30 -
.../IgniteCacheLoadAllAbstractTest.java | 9 +-
...dCacheLocalAtomicOffHeapFullApiSelfTest.java | 42 -
...LocalAtomicOffHeapTieredFullApiSelfTest.java | 32 -
...cheLocalBasicStoreMultithreadedSelfTest.java | 1 +
.../GridCacheLocalByteArrayValuesSelfTest.java | 71 +-
.../local/GridCacheLocalFullApiSelfTest.java | 9 -
.../GridCacheLocalOffHeapFullApiSelfTest.java | 30 -
...dCacheLocalOffHeapTieredFullApiSelfTest.java | 32 -
...LocalCacheOffHeapAndSwapMetricsSelfTest.java | 621 ---
...OnlyFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...omicFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...bledFairAffinityMultiJvmFullApiSelfTest.java | 36 -
...cheAtomicOffHeapMultiJvmFullApiSelfTest.java | 31 -
...micOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...acheAtomicOnheapMultiJvmFullApiSelfTest.java | 28 +
...rderFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...WriteOrderOnheapMultiJvmFullApiSelfTest.java | 29 +
...rityOrderOffHeapMultiJvmFullApiSelfTest.java | 31 -
...derOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...OnlyFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...onedFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...micOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...bledAtomicOnheapMultiJvmFullApiSelfTest.java | 28 +
...bledFairAffinityMultiJvmFullApiSelfTest.java | 31 -
...rDisabledOffHeapMultiJvmFullApiSelfTest.java | 31 -
...ledOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...arDisabledOnheapMultiJvmFullApiSelfTest.java | 28 +
...rtitionedOffHeapMultiJvmFullApiSelfTest.java | 31 -
...nedOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...artitionedOnheapMultiJvmFullApiSelfTest.java | 28 +
...eplicatedOffHeapMultiJvmFullApiSelfTest.java | 31 -
...tedOffHeapTieredMultiJvmFullApiSelfTest.java | 36 -
...ReplicatedOnheapMultiJvmFullApiSelfTest.java | 28 +
.../GridCacheSwapScanQueryAbstractSelfTest.java | 435 --
.../query/GridCacheSwapScanQuerySelfTest.java | 25 -
.../IgniteCacheQueryCacheDestroySelfTest.java | 2 -
.../continuous/CacheContinuousBatchAckTest.java | 73 +-
...eContinuousQueryAsyncFilterListenerTest.java | 180 +-
...acheContinuousQueryExecuteInPrimaryTest.java | 2 -
...usQueryFactoryFilterRandomOperationTest.java | 2 -
...ContinuousQueryFailoverAbstractSelfTest.java | 16 +-
...tomicPrimaryWriteOrderOffheapTieredTest.java | 33 -
...tinuousQueryFailoverTxOffheapTieredTest.java | 32 -
.../CacheContinuousQueryOperationP2PTest.java | 31 +-
.../CacheContinuousQueryOrderingEventTest.java | 128 +-
...acheContinuousQueryRandomOperationsTest.java | 323 +-
...CacheKeepBinaryIterationNearEnabledTest.java | 6 +-
...acheKeepBinaryIterationStoreEnabledTest.java | 6 +-
...CacheKeepBinaryIterationSwapEnabledTest.java | 56 -
.../CacheKeepBinaryIterationTest.java | 103 +-
...ridCacheContinuousQueryAbstractSelfTest.java | 10 -
...eContinuousQueryAtomicOffheapTieredTest.java | 32 -
...eContinuousQueryAtomicOffheapValuesTest.java | 32 -
.../GridCacheContinuousQueryConcurrentTest.java | 47 +-
...CacheContinuousQueryTxOffheapTieredTest.java | 32 -
...CacheContinuousQueryTxOffheapValuesTest.java | 32 -
...niteCacheContinuousQueryBackupQueueTest.java | 6 +
.../IgniteCacheContinuousQueryClientTest.java | 23 +-
...teCacheContinuousQueryNoUnsubscribeTest.java | 2 +
.../GridCacheWriteBehindStoreAbstractTest.java | 1 -
.../TxOptimisticDeadlockDetectionTest.java | 12 +-
.../TxPessimisticDeadlockDetectionTest.java | 17 +
.../CacheVersionedEntryAbstractTest.java | 15 +-
...edEntryPartitionedAtomicOffHeapSelfTest.java | 35 -
...PartitionedTransactionalOffHeapSelfTest.java | 36 -
...nedEntryReplicatedAtomicOffHeapSelfTest.java | 35 -
...yReplicatedTransactionalOffHeapSelfTest.java | 36 -
.../continuous/GridEventConsumeSelfTest.java | 3 +-
.../database/BPlusTreeFakeReuseSelfTest.java | 63 +
.../database/BPlusTreeReuseSelfTest.java | 131 +
.../processors/database/BPlusTreeSelfTest.java | 1757 +++++++
.../database/FreeListImplSelfTest.java | 557 ++
.../database/IgniteDbAbstractTest.java | 367 ++
.../database/IgniteDbDynamicCacheSelfTest.java | 152 +
.../IgniteDbMemoryLeakAbstractTest.java | 259 +
.../IgniteDbMemoryLeakLargeObjectsTest.java | 56 +
.../IgniteDbMemoryLeakLargePagesTest.java | 33 +
.../IgniteDbMemoryLeakNonTransactionalTest.java | 31 +
.../database/IgniteDbMemoryLeakTest.java | 46 +
.../IgniteDbMemoryLeakWithExpirationTest.java | 44 +
.../database/IgniteDbMultiNodePutGetTest.java | 33 +
.../database/IgniteDbPutGetAbstractTest.java | 1212 +++++
.../database/IgniteDbSingleNodePutGetTest.java | 33 +
.../IgniteDbSingleNodeTinyPutGetTest.java | 151 +
.../database/MemoryMetricsSelfTest.java | 313 ++
.../database/MetadataStorageSelfTest.java | 166 +
.../DataStreamProcessorSelfTest.java | 8 +-
.../datastreamer/DataStreamerImplSelfTest.java | 36 -
.../IgniteDataStreamerPerformanceTest.java | 1 -
.../igfs/IgfsAbstractBaseSelfTest.java | 19 +-
.../processors/igfs/IgfsAbstractSelfTest.java | 11 -
.../IgfsAtomicPrimaryOffheapTieredSelfTest.java | 39 -
.../IgfsAtomicPrimaryOffheapValuesSelfTest.java | 39 -
...sCachePerBlockLruEvictionPolicySelfTest.java | 1 +
.../processors/igfs/IgfsFileInfoSelfTest.java | 1 +
.../processors/igfs/IgfsIgniteMock.java | 25 +
.../processors/igfs/IgfsMaxSizeSelfTest.java | 1 -
.../igfs/IgfsPrimaryOffheapTieredSelfTest.java | 33 -
.../igfs/IgfsPrimaryOffheapValuesSelfTest.java | 33 -
.../processors/igfs/IgfsProcessorSelfTest.java | 2 +-
.../odbc/OdbcProcessorValidationSelfTest.java | 23 +-
.../service/ClosureServiceClientsNodesTest.java | 1 +
.../GridServiceProcessorProxySelfTest.java | 24 +-
...gniteServiceConfigVariationsFullApiTest.java | 9 +-
...ent2ClassLoadersOptimizedMarshallerTest.java | 31 +
...mentClassLoadingOptimizedMarshallerTest.java | 31 +
.../IgniteServiceDynamicCachesSelfTest.java | 14 +-
.../internal/util/GridArraysSelfTest.java | 129 +
.../util/future/IgniteFutureImplTest.java | 38 -
.../unsafe/GridUnsafeMemorySelfTest.java | 35 +
.../apache/ignite/lang/GridTupleSelfTest.java | 35 -
.../IgniteOffheapReadWriteLockSelfTest.java | 479 ++
...idFileSwapSpaceSpiMultithreadedLoadTest.java | 252 -
.../loadtests/GridCacheMultiNodeLoadTest.java | 2 +-
.../GridCacheWriteBehindStoreLoadTest.java | 1 -
.../loadtests/colocation/GridTestKey.java | 28 +-
.../communication/GridIoManagerBenchmark0.java | 1 -
.../GridCachePartitionedAtomicLongLoadTest.java | 2 +-
.../ignite/loadtests/dsi/GridDsiPerfJob.java | 7 +-
.../loadtests/hashmap/GridCacheTestContext.java | 12 +-
.../swap/GridSwapEvictAllBenchmark.java | 309 --
...namicProxySerializationMultiJvmSelfTest.java | 1 +
.../GridMarshallerPerformanceTest.java | 2 +-
.../marshaller/MarshallerContextSelfTest.java | 10 +-
.../ignite/messaging/GridMessagingSelfTest.java | 13 +-
.../platform/PlatformCacheWriteMetricsTask.java | 126 +-
.../platform/PlatformEventsWriteEventTask.java | 14 +-
.../plugin/PlatformTestPluginProvider.java | 6 +
.../PlatformTestCachePluginConfiguration.java | 5 -
...tCachePluginConfigurationClosureFactory.java | 2 +-
.../cache/PlatformTestCachePluginProvider.java | 5 +-
.../communication/GridCacheMessageSelfTest.java | 2 +-
...cpCommunicationSpiMultithreadedSelfTest.java | 4 +-
.../discovery/AbstractDiscoverySelfTest.java | 15 +
...gniteClientReconnectMassiveShutdownTest.java | 3 -
.../tcp/TcpClientDiscoverySpiSelfTest.java | 2 +-
.../tcp/TestReconnectPluginProvider.java | 7 +
.../GridSwapSpaceSpiAbstractSelfTest.java | 652 ---
.../GridSwapSpaceSpiConsistencySelfTest.java | 131 -
.../file/GridFileSwapCompactionSelfTest.java | 131 -
.../file/GridFileSwapSpaceSpiSelfTest.java | 456 --
.../inmemory/GridTestSwapSpaceSpi.java | 518 --
.../noop/GridNoopSwapSpaceSpiSelfTest.java | 61 -
.../ignite/spi/swapspace/package-info.java | 22 -
.../ignite/testframework/GridTestNode.java | 12 +-
.../ignite/testframework/GridTestUtils.java | 210 +-
.../configvariations/ConfigVariations.java | 32 +-
.../testframework/junits/GridAbstractTest.java | 12 +-
.../junits/GridTestKernalContext.java | 2 +-
...IgniteCacheConfigVariationsAbstractTest.java | 59 +-
.../ignite/testframework/junits/IgniteMock.java | 21 +
.../junits/common/GridCommonAbstractTest.java | 304 +-
.../multijvm/IgniteCacheProcessProxy.java | 42 +-
.../multijvm/IgniteClusterProcessProxy.java | 11 -
.../junits/multijvm/IgniteNodeRunner.java | 5 +-
.../junits/multijvm/IgniteProcessProxy.java | 35 +
.../ConfigVariationsTestSuiteBuilderTest.java | 4 +-
.../ignite/testsuites/IgniteBasicTestSuite.java | 16 +-
.../testsuites/IgniteBinaryBasicTestSuite.java | 7 +
.../testsuites/IgniteBinaryCacheTestSuite.java | 22 +-
.../IgniteBinaryObjectsTestSuite.java | 21 +-
.../IgniteCacheDataStructuresSelfTestSuite.java | 18 -
.../IgniteCacheEvictionSelfTestSuite.java | 21 +-
.../IgniteCacheFailoverTestSuite.java | 4 -
...IgniteCacheFullApiMultiJvmSelfTestSuite.java | 54 +-
.../IgniteCacheFullApiSelfTestSuite.java | 102 +-
.../IgniteCacheMetricsSelfTestSuite.java | 2 -
.../ignite/testsuites/IgniteCacheTestSuite.java | 62 +-
.../testsuites/IgniteCacheTestSuite2.java | 42 +-
.../testsuites/IgniteCacheTestSuite3.java | 12 +-
.../testsuites/IgniteCacheTestSuite4.java | 52 +-
.../testsuites/IgniteCacheTestSuite5.java | 28 +-
.../testsuites/IgniteComputeGridTestSuite.java | 1 -
.../testsuites/IgniteDatabaseTestSuite.java | 40 +
.../testsuites/IgniteDbMemoryLeakTestSuite.java | 49 +
.../ignite/testsuites/IgniteIgfsTestSuite.java | 9 -
.../testsuites/IgniteKernalSelfTestSuite.java | 2 -
.../IgniteMarshallerSelfTestSuite.java | 7 +
.../IgniteSpiSwapSpaceSelfTestSuite.java | 44 -
.../ignite/testsuites/IgniteSpiTestSuite.java | 3 -
.../testsuites/IgniteUtilSelfTestSuite.java | 6 +
.../org.apache.ignite.plugin.PluginProvider | 1 -
...CacheDeploymentCachePluginConfiguration.java | 10 +-
.../apache/ignite/tests/p2p/cache/Person.java | 41 +
.../query/h2/opt/GridH2SpatialIndex.java | 29 +-
.../ignite/hadoop/planner/package-info.java | 22 +
.../processors/hadoop/HadoopProcessor.java | 6 +-
.../hadoop/impl/v1/HadoopV1ReduceTask.java | 2 +-
.../external/HadoopExternalTaskExecutor.java | 2 +-
.../resources/META-INF/classnames.properties | 16 +-
.../impl/HadoopAbstractMapReduceTest.java | 1 -
.../igfs/HadoopFIleSystemFactorySelfTest.java | 1 -
.../igfs/HadoopIgfsDualAbstractSelfTest.java | 1 -
.../HibernateAccessStrategyAdapter.java | 8 +-
.../cache/hibernate/HibernateCacheProxy.java | 811 +++
.../hibernate/HibernateCollectionRegion.java | 3 +-
.../cache/hibernate/HibernateEntityRegion.java | 3 +-
.../hibernate/HibernateGeneralDataRegion.java | 3 +-
.../hibernate/HibernateKeyTransformer.java | 28 +
.../cache/hibernate/HibernateKeyWrapper.java | 72 +
.../hibernate/HibernateNaturalIdRegion.java | 3 +-
.../HibernateNonStrictAccessStrategy.java | 5 +-
.../hibernate/HibernateQueryResultsRegion.java | 3 +-
.../HibernateReadOnlyAccessStrategy.java | 3 +-
.../HibernateReadWriteAccessStrategy.java | 3 +-
.../ignite/cache/hibernate/HibernateRegion.java | 6 +-
.../cache/hibernate/HibernateRegionFactory.java | 30 +-
.../hibernate/HibernateTimestampsRegion.java | 3 +-
.../HibernateTransactionalAccessStrategy.java | 2 +-
.../HibernateTransactionalDataRegion.java | 3 +-
.../hibernate/HibernateL2CacheSelfTest.java | 2 +-
.../IgniteBinaryHibernateTestSuite.java | 37 +
modules/hibernate5/README.txt | 48 +
modules/hibernate5/licenses/apache-2.0.txt | 202 +
modules/hibernate5/pom.xml | 146 +
.../HibernateAbstractRegionAccessStrategy.java | 99 +
.../HibernateAccessStrategyAdapter.java | 379 ++
.../cache/hibernate/HibernateCacheProxy.java | 811 +++
.../hibernate/HibernateCollectionRegion.java | 114 +
.../cache/hibernate/HibernateEntityRegion.java | 129 +
.../hibernate/HibernateGeneralDataRegion.java | 72 +
.../hibernate/HibernateKeyTransformer.java | 28 +
.../cache/hibernate/HibernateKeyWrapper.java | 108 +
.../hibernate/HibernateNaturalIdRegion.java | 113 +
.../HibernateNonStrictAccessStrategy.java | 222 +
.../hibernate/HibernateQueryResultsRegion.java | 70 +
.../HibernateReadOnlyAccessStrategy.java | 107 +
.../HibernateReadWriteAccessStrategy.java | 328 ++
.../ignite/cache/hibernate/HibernateRegion.java | 99 +
.../cache/hibernate/HibernateRegionFactory.java | 255 +
.../hibernate/HibernateTimestampsRegion.java | 39 +
.../HibernateTransactionalAccessStrategy.java | 141 +
.../HibernateTransactionalDataRegion.java | 107 +
.../ignite/cache/hibernate/package-info.java | 24 +
.../hibernate/CacheHibernateBlobStore.java | 542 ++
.../CacheHibernateBlobStoreEntry.hbm.xml | 31 +
.../hibernate/CacheHibernateBlobStoreEntry.java | 89 +
.../CacheHibernateBlobStoreFactory.java | 235 +
.../CacheHibernateStoreSessionListener.java | 223 +
.../cache/store/hibernate/package-info.java | 22 +
.../src/test/config/factory-cache.xml | 59 +
.../src/test/config/factory-cache1.xml | 61 +
.../config/factory-incorrect-store-cache.xml | 56 +
.../HibernateL2CacheConfigurationSelfTest.java | 409 ++
.../hibernate/HibernateL2CacheSelfTest.java | 1948 +++++++
.../HibernateL2CacheTransactionalSelfTest.java | 154 +
...nateL2CacheTransactionalUseSyncSelfTest.java | 31 +
.../CacheHibernateBlobStoreNodeRestartTest.java | 54 +
.../CacheHibernateBlobStoreSelfTest.java | 113 +
.../CacheHibernateStoreFactorySelfTest.java | 326 ++
...heHibernateStoreSessionListenerSelfTest.java | 241 +
.../cache/store/hibernate/hibernate.cfg.xml | 42 +
.../cache/store/hibernate/package-info.java | 22 +
.../IgniteBinaryHibernate5TestSuite.java | 37 +
.../testsuites/IgniteHibernate5TestSuite.java | 57 +
.../query/h2/DmlStatementsProcessor.java | 2 +-
.../internal/processors/query/h2/H2Cursor.java | 108 +
.../processors/query/h2/IgniteH2Indexing.java | 421 +-
.../query/h2/database/H2PkHashIndex.java | 323 ++
.../query/h2/database/H2RowFactory.java | 80 +
.../processors/query/h2/database/H2Tree.java | 250 +
.../query/h2/database/H2TreeIndex.java | 420 ++
.../query/h2/database/InlineIndexHelper.java | 572 +++
.../query/h2/database/io/H2ExtrasInnerIO.java | 140 +
.../query/h2/database/io/H2ExtrasLeafIO.java | 135 +
.../query/h2/database/io/H2InnerIO.java | 74 +
.../query/h2/database/io/H2LeafIO.java | 74 +
.../query/h2/database/io/H2RowLinkIO.java | 30 +
.../query/h2/database/util/CompareUtils.java | 332 ++
.../query/h2/opt/GridH2AbstractKeyValueRow.java | 8 +-
.../query/h2/opt/GridH2IndexBase.java | 215 +-
.../query/h2/opt/GridH2KeyValueRowOffheap.java | 2 +-
.../query/h2/opt/GridH2KeyValueRowOnheap.java | 8 +
.../query/h2/opt/GridH2MetaTable.java | 5 +
.../processors/query/h2/opt/GridH2Row.java | 66 +-
.../query/h2/opt/GridH2RowDescriptor.java | 13 +-
.../query/h2/opt/GridH2RowFactory.java | 15 +
.../query/h2/opt/GridH2ScanIndex.java | 55 +-
.../processors/query/h2/opt/GridH2Table.java | 271 +-
.../query/h2/opt/GridH2TreeIndex.java | 223 +-
.../query/h2/opt/GridLuceneIndex.java | 5 +-
.../h2/twostep/GridReduceQueryExecutor.java | 28 +-
.../cache/CacheIndexStreamerTest.java | 6 -
.../cache/CacheIndexingOffheapCleanupTest.java | 157 -
.../CacheOffheapBatchIndexingBaseTest.java | 6 +-
.../CacheOffheapBatchIndexingMultiTypeTest.java | 17 +-
...CacheOffheapBatchIndexingSingleTypeTest.java | 20 +-
.../CacheOperationsWithExpirationTest.java | 69 +-
.../cache/CacheQueryEvictDataLostTest.java | 120 +
.../cache/CacheQueryFilterExpiredTest.java | 111 +
.../CacheQueryOffheapEvictDataLostTest.java | 138 -
.../CacheRandomOperationsMultithreadedTest.java | 64 +-
.../ClientReconnectAfterClusterRestartTest.java | 16 +-
.../cache/GridCacheCrossCacheQuerySelfTest.java | 36 +-
.../cache/GridCacheOffHeapAndSwapSelfTest.java | 570 ---
.../cache/GridCacheOffHeapSelfTest.java | 16 +-
.../GridCacheOffheapIndexEntryEvictTest.java | 7 -
.../cache/GridCacheOffheapIndexGetSelfTest.java | 38 +-
.../GridCacheQueryIndexDisabledSelfTest.java | 16 +-
.../cache/GridCacheQuerySimpleBenchmark.java | 4 -
.../processors/cache/GridCacheSwapSelfTest.java | 724 ---
.../cache/GridIndexingWithNoopSwapSelfTest.java | 7 +-
.../IgniteBinaryObjectFieldsQuerySelfTest.java | 5 +-
...aryObjectQueryArgumentsOffheapLocalTest.java | 28 -
...teBinaryObjectQueryArgumentsOffheapTest.java | 30 -
.../IgniteBinaryObjectQueryArgumentsTest.java | 11 -
.../IgniteCacheAbstractFieldsQuerySelfTest.java | 492 +-
...niteCacheAbstractInsertSqlQuerySelfTest.java | 129 -
.../cache/IgniteCacheAbstractQuerySelfTest.java | 273 +-
.../IgniteCacheCollocatedQuerySelfTest.java | 1 -
...acheConfigurationPrimitiveTypesSelfTest.java | 50 +-
.../IgniteCacheCrossCacheJoinRandomTest.java | 2 +-
...CacheDistributedJoinQueryConditionsTest.java | 16 -
.../IgniteCacheInsertSqlQuerySelfTest.java | 36 -
...PartitionedAndReplicatedCollocationTest.java | 5 +-
.../cache/IgniteCacheLargeResultSelfTest.java | 1 -
...PartitionOnAffinityRunAtomicCacheOpTest.java | 46 +-
...niteCacheLockPartitionOnAffinityRunTest.java | 35 +-
.../cache/IgniteCacheMergeSqlQuerySelfTest.java | 34 -
.../IgniteCacheMultipleIndexedTypesTest.java | 200 +
.../cache/IgniteCacheOffheapEvictQueryTest.java | 10 -
.../cache/IgniteCacheOffheapIndexScanTest.java | 3 -
...CacheOffheapTieredMultithreadedSelfTest.java | 302 --
.../cache/IgniteCacheQueriesLoadTest1.java | 2 -
...QueryMultiThreadedOffHeapTieredSelfTest.java | 38 -
.../IgniteCacheQueryMultiThreadedSelfTest.java | 122 +-
...QueryOffheapEvictsMultiThreadedSelfTest.java | 28 -
...eCacheQueryOffheapMultiThreadedSelfTest.java | 28 -
.../cache/IgniteCacheUnionDuplicatesTest.java | 21 +-
.../cache/IgniteCrossCachesJoinsQueryTest.java | 25 +-
.../cache/IncorrectQueryEntityTest.java | 8 +-
.../cache/SqlFieldsQuerySelfTest.java | 23 -
...niteCachePartitionedFieldsQuerySelfTest.java | 13 +-
.../IgniteCachePartitionedQuerySelfTest.java | 8 +-
...QueryNodeRestartDistributedJoinSelfTest.java | 165 +-
.../IgniteCacheQueryNodeRestartSelfTest.java | 3 +-
...gniteCacheReplicatedFieldsQuerySelfTest.java | 6 +-
.../IgniteCacheReplicatedQuerySelfTest.java | 25 +-
.../IgniteCacheLocalFieldsQuerySelfTest.java | 4 +-
.../local/IgniteCacheLocalQuerySelfTest.java | 2 +-
.../cache/ttl/CacheTtlAbstractSelfTest.java | 31 +-
.../ttl/CacheTtlAtomicAbstractSelfTest.java | 29 +
.../cache/ttl/CacheTtlAtomicLocalSelfTest.java | 34 +
.../ttl/CacheTtlAtomicPartitionedSelfTest.java | 34 +
.../ttl/CacheTtlOffheapAbstractSelfTest.java | 29 -
.../CacheTtlOffheapAtomicAbstractSelfTest.java | 29 -
.../ttl/CacheTtlOffheapAtomicLocalSelfTest.java | 34 -
...acheTtlOffheapAtomicPartitionedSelfTest.java | 34 -
...TtlOffheapTransactionalAbstractSelfTest.java | 29 -
...cheTtlOffheapTransactionalLocalSelfTest.java | 34 -
...OffheapTransactionalPartitionedSelfTest.java | 34 -
.../ttl/CacheTtlOnheapAbstractSelfTest.java | 29 -
.../CacheTtlOnheapAtomicAbstractSelfTest.java | 29 -
.../ttl/CacheTtlOnheapAtomicLocalSelfTest.java | 34 -
...CacheTtlOnheapAtomicPartitionedSelfTest.java | 34 -
...eTtlOnheapTransactionalAbstractSelfTest.java | 29 -
...acheTtlOnheapTransactionalLocalSelfTest.java | 34 -
...lOnheapTransactionalPartitionedSelfTest.java | 34 -
.../CacheTtlTransactionalAbstractSelfTest.java | 29 +
.../ttl/CacheTtlTransactionalLocalSelfTest.java | 34 +
...acheTtlTransactionalPartitionedSelfTest.java | 34 +
.../database/IgniteDbMemoryLeakIndexedTest.java | 33 +
.../IgniteDbMemoryLeakSqlQueryTest.java | 76 +
...IgniteDbMultiNodeWithIndexingPutGetTest.java | 28 +
...gniteDbSingleNodeWithIndexingPutGetTest.java | 251 +
.../query/IgniteSqlDistributedJoinSelfTest.java | 199 +
.../query/IgniteSqlSchemaIndexingTest.java | 17 +-
.../query/IgniteSqlSegmentedIndexSelfTest.java | 7 +-
.../query/IgniteSqlSplitterSelfTest.java | 92 +-
.../h2/GridIndexingSpiAbstractSelfTest.java | 256 +-
.../query/h2/IgniteSqlQueryMinMaxTest.java | 376 ++
.../h2/database/InlineIndexHelperTest.java | 364 ++
.../query/h2/opt/GridH2TableSelfTest.java | 87 +-
.../h2/sql/AbstractH2CompareQueryTest.java | 76 +-
.../query/h2/sql/BaseH2CompareQueryTest.java | 346 +-
.../query/h2/sql/GridQueryParsingTest.java | 168 +-
.../query/h2/sql/H2CompareBigQueryTest.java | 114 +-
.../IgniteCacheQuerySelfTestSuite.java | 31 +-
.../IgniteCacheQuerySelfTestSuite2.java | 10 +-
.../IgniteCacheQuerySelfTestSuite3.java | 12 +-
.../IgniteCacheQuerySelfTestSuite4.java | 4 -
.../IgniteCacheWithIndexingTestSuite.java | 32 +-
...IgniteDbMemoryLeakWithIndexingTestSuite.java | 40 +
.../IgniteDistributedJoinTestSuite.java | 55 +
.../processors/query/h2/sql/bigQuery.sql | 14 +-
.../ignite/stream/kafka/TestKafkaBroker.java | 2 +-
.../osgi-karaf/src/main/resources/features.xml | 9 +-
modules/osgi/pom.xml | 1 -
modules/platforms/.gitignore | 31 +
modules/platforms/cpp/binary/Makefile.am | 1 -
.../platforms/cpp/binary/include/Makefile.am | 3 -
.../binary/binary_array_identity_resolver.h | 64 -
.../include/ignite/binary/binary_consts.h | 86 +-
.../include/ignite/binary/binary_containers.h | 12 +-
.../ignite/binary/binary_identity_resolver.h | 61 -
.../include/ignite/binary/binary_object.h | 12 +-
.../include/ignite/binary/binary_raw_reader.h | 6 +-
.../include/ignite/binary/binary_raw_writer.h | 16 +-
.../include/ignite/binary/binary_reader.h | 6 +-
.../binary/include/ignite/binary/binary_type.h | 10 -
.../include/ignite/binary/binary_writer.h | 13 +-
.../ignite/impl/binary/binary_reader_impl.h | 31 +-
.../include/ignite/impl/binary/binary_schema.h | 19 +-
.../ignite/impl/binary/binary_type_impl.h | 147 -
.../include/ignite/impl/binary/binary_utils.h | 1 -
.../ignite/impl/binary/binary_writer_impl.h | 26 +-
.../cpp/binary/project/vs/binary.vcxproj | 4 -
.../binary/project/vs/binary.vcxproj.filters | 12 -
.../binary/binary_array_identity_resolver.cpp | 42 -
.../cpp/binary/src/binary/binary_raw_reader.cpp | 2 +-
.../cpp/binary/src/binary/binary_reader.cpp | 2 +-
.../src/impl/binary/binary_reader_impl.cpp | 50 +-
.../binary/src/impl/binary/binary_schema.cpp | 17 +-
.../src/impl/binary/binary_writer_impl.cpp | 14 +-
modules/platforms/cpp/common/configure.ac | 62 +
.../cpp/core-test/config/cache-identity-32.xml | 50 +
.../core-test/config/cache-identity-default.xml | 154 +
.../cpp/core-test/config/cache-identity.xml | 124 +-
.../cpp/core-test/config/cache-query-32.xml | 50 +
.../config/cache-query-continuous-32.xml | 46 +
.../config/cache-query-continuous-default.xml | 87 +
.../core-test/config/cache-query-continuous.xml | 61 +-
.../core-test/config/cache-query-default.xml | 153 +
.../cpp/core-test/config/cache-query.xml | 123 +-
.../cpp/core-test/config/cache-store-32.xml | 50 +
.../core-test/config/cache-store-default.xml | 71 +
.../cpp/core-test/config/cache-store.xml | 41 +-
.../cpp/core-test/config/cache-test-32.xml | 50 +
.../cpp/core-test/config/cache-test-default.xml | 136 +
.../cpp/core-test/config/cache-test.xml | 106 +-
modules/platforms/cpp/core-test/configure.ac | 62 +
.../core-test/include/ignite/binary_test_defs.h | 31 +-
.../cpp/core-test/include/ignite/complex_type.h | 2 -
.../cpp/core-test/include/ignite/test_type.h | 1 -
.../cpp/core-test/project/vs/core-test.vcxproj | 15 +
.../project/vs/core-test.vcxproj.filters | 33 +
.../src/binary_identity_resolver_test.cpp | 246 +-
.../cpp/core-test/src/binary_object_test.cpp | 8 +
.../src/binary_reader_writer_raw_test.cpp | 34 +-
.../core-test/src/binary_reader_writer_test.cpp | 96 +-
.../cpp/core-test/src/cache_invoke_test.cpp | 7 +-
.../cpp/core-test/src/cache_query_test.cpp | 6 +-
.../cpp/core-test/src/cache_store_test.cpp | 17 +-
.../platforms/cpp/core-test/src/cache_test.cpp | 86 +-
.../cpp/core-test/src/cluster_test.cpp | 4 +
.../cpp/core-test/src/continuous_query_test.cpp | 26 +-
.../cpp/core-test/src/ignition_test.cpp | 4 +
.../cpp/core-test/src/interop_test.cpp | 4 +
.../cpp/core-test/src/transactions_test.cpp | 80 +-
modules/platforms/cpp/core/configure.ac | 62 +
.../cpp/core/include/ignite/cache/cache.h | 12 +-
.../core/include/ignite/cache/cache_peek_mode.h | 67 +-
.../cpp/core/include/ignite/ignite_binding.h | 4 +-
.../cpp/core/include/ignite/impl/bindings.h | 4 +-
.../impl/cache/cache_entry_processor_holder.h | 37 +-
.../include/ignite/impl/ignite_binding_impl.h | 11 +-
.../ignite/impl/interop/interop_target.h | 21 +-
.../core/include/ignite/impl/module_manager.h | 26 +
.../ignite/impl/transactions/transaction_impl.h | 4 +-
.../impl/transactions/transactions_impl.h | 10 +-
.../include/ignite/transactions/transaction.h | 12 +-
.../ignite/transactions/transaction_consts.h | 181 +-
.../include/ignite/transactions/transactions.h | 16 +-
.../impl/binary/binary_type_updater_impl.cpp | 17 +-
.../continuous/continuous_query_handle_impl.cpp | 13 +-
.../src/impl/cluster/cluster_group_impl.cpp | 9 +-
.../cpp/core/src/impl/ignite_environment.cpp | 42 +-
.../core/src/impl/interop/interop_target.cpp | 12 +-
.../src/impl/transactions/transaction_impl.cpp | 18 +-
.../src/impl/transactions/transactions_impl.cpp | 92 +-
.../cpp/core/src/transactions/transaction.cpp | 8 +-
.../cpp/core/src/transactions/transactions.cpp | 20 +-
.../examples/include/ignite/examples/address.h | 26 +-
.../include/ignite/examples/organization.h | 26 +-
.../examples/include/ignite/examples/person.h | 17 +-
modules/platforms/cpp/ignite/configure.ac | 62 +
.../cpp/odbc-test/config/queries-test-32.xml | 47 +
.../odbc-test/config/queries-test-default.xml | 38 +
.../odbc-test/config/queries-test-noodbc-32.xml | 47 +
.../cpp/odbc-test/config/queries-test.xml | 11 +-
.../cpp/odbc-test/include/complex_type.h | 2 -
.../platforms/cpp/odbc-test/include/test_type.h | 1 -
.../cpp/odbc-test/project/vs/odbc-test.vcxproj | 3 +
.../project/vs/odbc-test.vcxproj.filters | 6 +
.../cpp/odbc-test/src/api_robustness_test.cpp | 20 +-
.../src/application_data_buffer_test.cpp | 94 +-
.../platforms/cpp/odbc-test/src/column_test.cpp | 56 +-
.../cpp/odbc-test/src/connection_info_test.cpp | 72 +-
.../cpp/odbc-test/src/queries_test.cpp | 8 +
.../platforms/cpp/odbc-test/src/row_test.cpp | 16 +-
.../odbc-test/src/sql_test_suite_fixture.cpp | 6 +-
.../ignite/odbc/app/application_data_buffer.h | 6 +-
.../cpp/odbc/include/ignite/odbc/column.h | 2 +-
.../cpp/odbc/include/ignite/odbc/common_types.h | 350 +-
.../ignite/odbc/config/connection_info.h | 2 +-
.../cpp/odbc/include/ignite/odbc/connection.h | 18 +-
.../ignite/odbc/diagnostic/diagnosable.h | 4 +-
.../odbc/diagnostic/diagnosable_adapter.h | 8 +-
.../ignite/odbc/diagnostic/diagnostic_record.h | 4 +-
.../odbc/diagnostic/diagnostic_record_storage.h | 8 +-
.../cpp/odbc/include/ignite/odbc/environment.h | 10 +-
.../cpp/odbc/include/ignite/odbc/message.h | 56 +-
.../ignite/odbc/query/column_metadata_query.h | 10 +-
.../odbc/include/ignite/odbc/query/data_query.h | 23 +-
.../ignite/odbc/query/foreign_keys_query.h | 8 +-
.../ignite/odbc/query/primary_keys_query.h | 8 +-
.../cpp/odbc/include/ignite/odbc/query/query.h | 32 +-
.../ignite/odbc/query/special_columns_query.h | 8 +-
.../ignite/odbc/query/table_metadata_query.h | 10 +-
.../include/ignite/odbc/query/type_info_query.h | 8 +-
.../cpp/odbc/include/ignite/odbc/row.h | 2 +-
.../cpp/odbc/include/ignite/odbc/statement.h | 52 +-
.../odbc/system/ui/dsn_configuration_window.h | 35 +-
.../cpp/odbc/include/ignite/odbc/type_traits.h | 91 +-
.../ignite/odbc/system/ui/custom_window.h | 12 +-
.../odbc/os/win/src/system/ui/custom_window.cpp | 4 +-
.../src/system/ui/dsn_configuration_window.cpp | 42 +-
.../cpp/odbc/os/win/src/system_dsn.cpp | 2 +-
.../odbc/src/app/application_data_buffer.cpp | 386 +-
.../platforms/cpp/odbc/src/app/parameter.cpp | 6 +-
modules/platforms/cpp/odbc/src/column.cpp | 14 +-
modules/platforms/cpp/odbc/src/common_types.cpp | 54 +-
.../cpp/odbc/src/config/connection_info.cpp | 12 +-
modules/platforms/cpp/odbc/src/connection.cpp | 74 +-
.../odbc/src/diagnostic/diagnosable_adapter.cpp | 4 +-
.../odbc/src/diagnostic/diagnostic_record.cpp | 46 +-
.../diagnostic/diagnostic_record_storage.cpp | 78 +-
modules/platforms/cpp/odbc/src/environment.cpp | 62 +-
modules/platforms/cpp/odbc/src/odbc.cpp | 20 +-
.../odbc/src/query/column_metadata_query.cpp | 123 +-
.../platforms/cpp/odbc/src/query/data_query.cpp | 102 +-
.../cpp/odbc/src/query/foreign_keys_query.cpp | 26 +-
.../cpp/odbc/src/query/primary_keys_query.cpp | 71 +-
.../odbc/src/query/special_columns_query.cpp | 26 +-
.../cpp/odbc/src/query/table_metadata_query.cpp | 81 +-
.../cpp/odbc/src/query/type_info_query.cpp | 231 +-
modules/platforms/cpp/odbc/src/row.cpp | 4 +-
modules/platforms/cpp/odbc/src/statement.cpp | 258 +-
modules/platforms/cpp/odbc/src/type_traits.cpp | 46 +-
.../Apache.Ignite.Core.Tests.csproj | 4 -
.../Binary/BinaryBuilderSelfTest.cs | 4 +-
.../Binary/BinaryDynamicRegistrationTest.cs | 11 +-
.../Binary/BinaryEqualityComparerTest.cs | 220 +-
.../Binary/BinarySelfTest.cs | 4 +-
.../Affinity/AffinityFunctionSpringTest.cs | 6 +-
.../Cache/Affinity/AffinityFunctionTest.cs | 94 +-
.../Cache/CacheAbstractTest.cs | 17 +-
.../Cache/CacheAbstractTransactionalTest.cs | 1 +
.../Cache/CacheConfigurationTest.cs | 42 +-
.../Cache/CacheMetricsTest.cs | 96 +-
.../Cache/CacheSwapSpaceTest.cs | 122 -
.../Cache/Query/CacheDmlQueriesTest.cs | 13 +-
.../Cache/Query/CacheLinqTest.cs | 3 +-
.../Continuous/ContinuousQueryAbstractTest.cs | 41 +-
.../Cache/Store/CacheStoreTest.cs | 20 +-
.../Compute/ComputeApiTest.cs | 8 +-
.../Config/Cache/Affinity/affinity-function.xml | 4 +-
.../Config/native-client-test-cache.xml | 5 -
.../Apache.Ignite.Core.Tests/EventsTest.cs | 38 +-
.../IgniteConfigurationSerializerTest.cs | 74 +-
.../IgniteConfigurationTest.cs | 29 +-
.../Apache.Ignite.Core.Tests/LifecycleTest.cs | 8 +-
.../Log/CustomLoggerTest.cs | 4 +-
.../Plugin/Cache/CachePlugin.cs | 127 -
.../Plugin/Cache/CachePluginConfiguration.cs | 64 -
.../Plugin/Cache/CachePluginTest.cs | 218 -
.../Apache.Ignite.Core.Tests/TestUtils.cs | 23 +-
.../Apache.Ignite.Core.csproj | 23 +-
.../Binary/BinaryArrayEqualityComparer.cs | 160 -
.../Binary/BinaryConfiguration.cs | 24 +-
.../Binary/BinaryTypeConfiguration.cs | 14 -
.../Cache/Affinity/Fair/FairAffinityFunction.cs | 32 -
.../Cache/Affinity/Fair/Package-Info.cs | 26 -
.../Cache/Affinity/IAffinityFunction.cs | 3 +-
.../Apache.Ignite.Core/Cache/CachePeekMode.cs | 7 +-
.../Cache/Configuration/CacheConfiguration.cs | 130 +-
.../Cache/Configuration/CacheMemoryMode.cs | 60 -
.../Apache.Ignite.Core/Cache/ICacheMetrics.cs | 80 -
.../Apache.Ignite.Core/Events/EventReader.cs | 1 -
.../Apache.Ignite.Core/Events/EventType.cs | 57 -
.../Apache.Ignite.Core/Events/SwapSpaceEvent.cs | 51 -
.../Apache.Ignite.Core/IgniteConfiguration.cs | 66 +-
.../IgniteConfigurationSection.xsd | 112 +-
.../dotnet/Apache.Ignite.Core/Ignition.cs | 32 +-
.../Impl/Binary/BinaryArrayEqualityComparer.cs | 159 +
.../Binary/BinaryEqualityComparerSerializer.cs | 100 +-
.../Impl/Binary/BinaryFieldEqualityComparer.cs | 138 -
.../Impl/Binary/BinaryFullTypeDescriptor.cs | 20 -
.../Impl/Binary/BinaryObject.cs | 4 +-
.../Impl/Binary/BinaryObjectBuilder.cs | 7 +-
.../Binary/BinarySurrogateTypeDescriptor.cs | 16 +-
.../Impl/Binary/BinaryUtils.cs | 18 +-
.../Impl/Binary/BinaryWriter.cs | 6 +-
.../Impl/Binary/IBinaryEqualityComparer.cs | 63 -
.../Impl/Binary/IBinaryTypeDescriptor.cs | 5 -
.../Impl/Binary/Marshaller.cs | 36 +-
.../Affinity/AffinityFunctionSerializer.cs | 18 +-
.../Impl/Cache/CacheMetricsImpl.cs | 70 -
.../dotnet/Apache.Ignite.Core/Impl/Ignite.cs | 16 +-
.../Impl/LifecycleBeanHolder.cs | 66 -
.../Impl/LifecycleHandlerHolder.cs | 66 +
.../Impl/Plugin/Cache/CachePluginContext.cs | 82 -
.../Impl/Plugin/Cache/CachePluginProcessor.cs | 77 -
.../Plugin/Cache/CachePluginProviderProxy.cs | 75 -
.../Plugin/Cache/ICachePluginProviderProxy.cs | 52 -
.../Impl/SwapSpace/SwapSpaceSerializer.cs | 99 -
.../Impl/Unmanaged/UnmanagedCallbackOp.cs | 4 -
.../Impl/Unmanaged/UnmanagedCallbacks.cs | 58 +-
.../Lifecycle/ILifecycleBean.cs | 64 -
.../Lifecycle/ILifecycleHandler.cs | 64 +
.../Lifecycle/LifecycleEventType.cs | 2 +-
.../Cache/CachePluginProviderTypeAttribute.cs | 52 -
.../Plugin/Cache/ICachePluginConfiguration.cs | 21 -
.../Plugin/Cache/ICachePluginContext.cs | 47 -
.../Plugin/Cache/ICachePluginProvider.cs | 52 -
.../SwapSpace/File/FileSwapSpaceSpi.cs | 105 -
.../SwapSpace/ISwapSpaceSpi.cs | 35 -
.../Apache.Ignite/Service/IgniteService.cs | 6 +-
.../Datagrid/MultiTieredCacheExample.cs | 26 +-
.../Misc/LifecycleExample.cs | 12 +-
.../http/jetty/GridJettyObjectMapper.java | 119 +-
.../schedule/IgniteScheduleProcessor.java | 2 +-
.../processors/schedule/ScheduleFutureImpl.java | 20 -
.../spark/JavaStandaloneIgniteRDDSelfTest.java | 41 +-
.../org/apache/ignite/spark/IgniteRDDSpec.scala | 84 +-
modules/spring-data/README.txt | 32 +
modules/spring-data/licenses/apache-2.0.txt | 202 +
modules/spring-data/pom.xml | 79 +
.../springdata/repository/IgniteRepository.java | 58 +
.../config/EnableIgniteRepositories.java | 119 +
.../config/IgniteRepositoriesRegistar.java | 36 +
.../IgniteRepositoryConfigurationExtension.java | 49 +
.../springdata/repository/config/Query.java | 37 +
.../repository/config/RepositoryConfig.java | 39 +
.../repository/config/package-info.java | 22 +
.../springdata/repository/package-info.java | 22 +
.../repository/query/IgniteQuery.java | 83 +
.../repository/query/IgniteQueryGenerator.java | 243 +
.../repository/query/IgniteRepositoryQuery.java | 306 ++
.../repository/query/package-info.java | 22 +
.../support/IgniteRepositoryFactory.java | 168 +
.../support/IgniteRepositoryFactoryBean.java | 85 +
.../support/IgniteRepositoryImpl.java | 160 +
.../repository/support/package-info.java | 22 +
.../IgniteSpringDataCrudSelfTest.java | 233 +
.../IgniteSpringDataQueriesSelfTest.java | 291 ++
.../misc/ApplicationConfiguration.java | 46 +
.../apache/ignite/springdata/misc/Person.java | 97 +
.../springdata/misc/PersonRepository.java | 92 +
.../springdata/misc/PersonSecondRepository.java | 40 +
.../testsuites/IgniteSpringDataTestSuite.java | 41 +
.../org/apache/ignite/IgniteSpringBean.java | 38 +-
.../GridSpringBeanSerializationSelfTest.java | 2 +
.../ant/beautifier/GridJavadocAntTask.java | 18 +-
.../ignite/visor/commands/VisorConsole.scala | 1 -
.../commands/cache/VisorCacheClearCommand.scala | 2 +-
.../commands/cache/VisorCacheCommand.scala | 341 +-
.../commands/cache/VisorCacheScanCommand.scala | 16 +-
.../commands/cache/VisorCacheSwapCommand.scala | 145 -
.../config/VisorConfigurationCommand.scala | 184 +-
.../commands/disco/VisorDiscoveryCommand.scala | 24 +-
.../commands/events/VisorEventsCommand.scala | 38 +-
.../visor/commands/gc/VisorGcCommand.scala | 4 +-
.../commands/tasks/VisorTasksCommand.scala | 61 +-
.../scala/org/apache/ignite/visor/visor.scala | 34 +-
.../cswap/VisorCacheSwapCommandSpec.scala | 89 -
.../testsuites/VisorConsoleSelfTestSuite.scala | 2 -
modules/web-console/backend/app/agent.js | 98 +-
modules/web-console/backend/app/browser.js | 76 +-
modules/web-console/backend/app/mongo.js | 29 +-
modules/web-console/frontend/.eslintrc | 2 +-
modules/web-console/frontend/app/app.js | 3 -
.../form-field-datepicker.pug | 59 -
.../form-field-datepicker.scss | 20 -
.../list-of-registered-users.categories.js | 4 +-
.../list-of-registered-users.column-defs.js | 44 +-
.../list-of-registered-users.controller.js | 141 +-
.../list-of-registered-users.scss | 4 +
.../list-of-registered-users.tpl.pug | 76 +-
.../ui-grid-header/ui-grid-header.scss | 91 -
.../ui-grid-header/ui-grid-header.tpl.pug | 29 -
.../ui-grid-settings/ui-grid-settings.pug | 33 -
.../ui-grid-settings/ui-grid-settings.scss | 144 -
.../frontend/app/data/pom-dependencies.json | 1 +
.../app/helpers/jade/form/form-field-text.pug | 40 +-
.../frontend/app/helpers/jade/mixins.pug | 23 +-
.../frontend/app/modules/agent/agent.module.js | 41 +-
.../generator/AbstractTransformer.js | 5 -
.../generator/ConfigurationGenerator.js | 58 +-
.../generator/JavaTransformer.service.js | 3 +
.../generator/PlatformGenerator.js | 10 +-
.../defaults/Cache.platform.service.js | 5 -
.../generator/defaults/Cache.service.js | 10 +-
.../generator/defaults/Cluster.service.js | 7 +-
.../generator/defaults/IGFS.service.js | 2 +-
.../frontend/app/modules/sql/sql.controller.js | 62 +-
.../frontend/app/modules/states/admin.state.js | 11 +-
.../states/configuration/caches/affinity.pug | 2 +-
.../states/configuration/caches/general.pug | 25 +
.../states/configuration/caches/memory.pug | 64 +-
.../states/configuration/caches/query.pug | 3 +
.../states/configuration/clusters/events.pug | 6 +-
.../states/configuration/clusters/general.pug | 3 +
.../clusters/general/discovery/kubernetes.pug | 37 +
.../configuration/clusters/marshaller.pug | 6 -
.../states/configuration/clusters/swap.pug | 72 -
.../modules/states/configuration/igfs/misc.pug | 2 +-
.../configuration/summary/summary.controller.js | 3 +
.../configuration/summary/summary.worker.js | 22 +
.../frontend/app/primitives/badge/index.scss | 4 +
.../frontend/app/primitives/btn-group/index.pug | 35 +
.../frontend/app/primitives/btn/index.scss | 41 +
.../app/primitives/datepicker/index.pug | 60 +
.../app/primitives/datepicker/index.scss | 64 +
.../frontend/app/primitives/dropdown/index.pug | 43 +
.../frontend/app/primitives/dropdown/index.scss | 82 +
.../frontend/app/primitives/index.js | 8 +
.../frontend/app/primitives/page/index.scss | 35 +
.../frontend/app/primitives/panel/index.scss | 51 +
.../frontend/app/primitives/tabs/index.scss | 15 +
.../app/primitives/ui-grid-header/index.scss | 91 +
.../app/primitives/ui-grid-header/index.tpl.pug | 29 +
.../app/primitives/ui-grid-settings/index.pug | 33 +
.../app/primitives/ui-grid-settings/index.scss | 171 +
.../frontend/app/primitives/ui-grid/index.scss | 329 ++
.../frontend/controllers/caches-controller.js | 29 -
.../frontend/controllers/clusters-controller.js | 41 +-
.../frontend/public/stylesheets/style.scss | 5 -
modules/web-console/frontend/views/base2.pug | 22 +
.../views/configuration/clusters.tpl.pug | 1 -
.../views/configuration/domains-import.tpl.pug | 2 +-
.../views/configuration/domains.tpl.pug | 1 -
.../frontend/views/settings/admin.tpl.pug | 3 +-
.../web-console/frontend/views/sql/sql.tpl.pug | 13 +-
.../ignite/console/demo/AgentClusterDemo.java | 5 +-
.../src/main/resources/log4j.properties | 1 -
.../cache/websession/WebSessionFilter.java | 22 +-
.../internal/websession/WebSessionSelfTest.java | 4 +
modules/yardstick/README.txt | 2 -
.../config/benchmark-atomic-win.properties | 8 +-
.../config/benchmark-atomic.properties | 6 -
.../config/benchmark-client-mode.properties | 9 -
.../yardstick/config/benchmark-h2.properties | 56 +
.../config/benchmark-multicast.properties | 9 -
.../yardstick/config/benchmark-mysql.properties | 56 +
.../yardstick/config/benchmark-pgsql.properties | 57 +
.../config/benchmark-query-win.properties | 5 +-
.../yardstick/config/benchmark-query.properties | 3 -
.../config/benchmark-tx-win.properties | 6 +-
.../yardstick/config/benchmark-tx.properties | 4 -
modules/yardstick/config/benchmark.properties | 11 +-
modules/yardstick/config/h2-schema.sql | 11 +
modules/yardstick/config/ignite-base-config.xml | 110 +-
.../config/ignite-base-load-config.xml | 91 -
.../config/ignite-cache-load-config.xml | 5 -
.../config/ignite-failover-base-config.xml | 43 -
.../ignite-int-max-values-offheap-config.xml | 87 -
.../ignite-int-max-values-onheap-config.xml | 1 -
.../ignite-int-max-values-swap-config.xml | 91 -
.../config/ignite-localhost-config.xml | 6 +
.../yardstick/config/ignite-store-config.xml | 2 -
modules/yardstick/config/mysql-schema.sql | 11 +
modules/yardstick/config/pgsql-schema.sql | 18 +
.../test-max-int-values-offheap.properties | 65 -
.../config/test-max-int-values-swap.properties | 64 -
modules/yardstick/pom.xml | 14 +
.../yardstick/IgniteAbstractBenchmark.java | 8 +-
.../yardstick/IgniteBenchmarkArguments.java | 78 +-
.../ignite/yardstick/IgniteBenchmarkUtils.java | 7 +-
.../org/apache/ignite/yardstick/IgniteNode.java | 23 +-
.../yardstick/cache/IgniteGetBenchmark.java | 5 +-
.../cache/IgniteGetOffHeapBenchmark.java | 32 -
.../cache/IgniteGetOffHeapValuesBenchmark.java | 32 -
.../cache/IgniteIoTestAbstractBenchmark.java | 61 +
.../cache/IgniteIoTestSendAllBenchmark.java | 32 +
.../cache/IgniteIoTestSendRandomBenchmark.java | 35 +
.../yardstick/cache/IgnitePutAllBenchmark.java | 95 +-
.../cache/IgnitePutAllTxBenchmark.java | 43 +-
.../cache/IgnitePutGetOffHeapBenchmark.java | 32 -
.../IgnitePutGetOffHeapValuesBenchmark.java | 32 -
.../cache/IgnitePutGetTxOffHeapBenchmark.java | 32 -
.../IgnitePutGetTxOffHeapValuesBenchmark.java | 32 -
.../cache/IgnitePutOffHeapBenchmark.java | 32 -
.../cache/IgnitePutOffHeapValuesBenchmark.java | 32 -
.../IgnitePutRandomValueSizeBenchmark.java | 2 +-
.../cache/IgnitePutTxOffHeapBenchmark.java | 32 -
.../IgnitePutTxOffHeapValuesBenchmark.java | 32 -
.../IgniteSqlQueryJoinOffHeapBenchmark.java | 32 -
.../cache/IgniteSqlQueryOffHeapBenchmark.java | 32 -
.../IgniteSqlQueryPutOffHeapBenchmark.java | 32 -
...IgniteAtomicOffHeapInvokeRetryBenchmark.java | 31 -
.../IgniteAtomicOffHeapRetriesBenchmark.java | 31 -
...ransactionalOffHeapInvokeRetryBenchmark.java | 33 -
...ransactionalOffHeapWriteInvokeBenchmark.java | 37 -
...eTransactionalOffHeapWriteReadBenchmark.java | 32 -
.../cache/jdbc/JdbcAbstractBenchmark.java | 163 +
.../yardstick/cache/jdbc/JdbcPutBenchmark.java | 89 +
.../cache/jdbc/JdbcPutGetBenchmark.java | 62 +
.../jdbc/JdbcPutIndexedValue8Benchmark.java | 104 +
.../cache/jdbc/JdbcSqlQueryBenchmark.java | 94 +
.../cache/jdbc/JdbcSqlQueryJoinBenchmark.java | 111 +
.../IgniteCacheRandomOperationBenchmark.java | 7 -
parent/pom.xml | 7 +-
pom.xml | 2 +
scripts/git-remoteless-branches.sh | 35 +
1983 files changed, 97266 insertions(+), 59980 deletions(-)
----------------------------------------------------------------------
[07/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
index 2ecdc8e..6759c40 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/jdk/JdkMarshaller.java
@@ -21,6 +21,7 @@ import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.util.io.GridByteArrayInputStream;
import org.apache.ignite.internal.util.io.GridByteArrayOutputStream;
@@ -36,7 +37,8 @@ import org.jetbrains.annotations.Nullable;
* <h2 class="header">Mandatory</h2>
* This marshaller has no mandatory configuration parameters.
* <h2 class="header">Java Example</h2>
- * {@code JdkMarshaller} needs to be explicitly configured to override default {@link org.apache.ignite.marshaller.optimized.OptimizedMarshaller}.
+ * {@code JdkMarshaller} needs to be explicitly configured to override default <b>binary marshaller</b> -
+ * see {@link IgniteBinary}.
* <pre name="code" class="java">
* JdkMarshaller marshaller = new JdkMarshaller();
*
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
deleted file mode 100644
index fd885f2..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
+++ /dev/null
@@ -1,1141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.io.Serializable;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.internal.util.GridUnsafe;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteProductVersion;
-import org.apache.ignite.marshaller.MarshallerContext;
-import org.apache.ignite.marshaller.MarshallerExclusions;
-import org.apache.ignite.internal.util.SerializableTransient;
-import org.apache.ignite.marshaller.MarshallerUtils;
-
-import static java.lang.reflect.Modifier.isFinal;
-import static java.lang.reflect.Modifier.isPrivate;
-import static java.lang.reflect.Modifier.isStatic;
-import static java.lang.reflect.Modifier.isTransient;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.ARRAY_LIST;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BYTE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BYTE_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CHAR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CHAR_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CLS;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DATE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.ENUM;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.EXTERNALIZABLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.FLOAT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.FLOAT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_MAP;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET_MAP_OFF;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.INT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.INT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_MAP;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_SET;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_LIST;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LONG;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LONG_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.OBJ_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.PROPS;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.PROXY;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SERIALIZABLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SHORT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SHORT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.STR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.UUID;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.computeSerialVersionUid;
-
-/**
- * Class descriptor.
- */
-class OptimizedClassDescriptor {
- /** Class. */
- private final Class<?> cls;
-
- /** Context. */
- private final MarshallerContext ctx;
-
- /** */
- private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
-
- /** ID mapper. */
- private final OptimizedMarshallerIdMapper mapper;
-
- /** Class name. */
- private final String name;
-
- /** Type ID. */
- private final int typeId;
-
- /** Short ID. */
- private final short checksum;
-
- /** Class type. */
- private int type;
-
- /** Primitive flag. */
- private boolean isPrimitive;
-
- /** Enum flag. */
- private boolean isEnum;
-
- /** Serializable flag. */
- private boolean isSerial;
-
- /** Excluded flag. */
- private boolean excluded;
-
- /** {@code True} if descriptor is for {@link Class}. */
- private boolean isCls;
-
- /** Enumeration values. */
- private Object[] enumVals;
-
- /** Constructor. */
- private Constructor<?> constructor;
-
- /** Fields. */
- private Fields fields;
-
- /** {@code writeObject} methods. */
- private List<Method> writeObjMtds;
-
- /** {@code writeReplace} method. */
- private Method writeReplaceMtd;
-
- /** {@code readObject} methods. */
- private List<Method> readObjMtds;
-
- /** {@code readResolve} method. */
- private Method readResolveMtd;
-
- /** Defaults field offset. */
- private long dfltsFieldOff;
-
- /** Load factor field offset. */
- private long loadFactorFieldOff;
-
- /** Access order field offset. */
- private long accessOrderFieldOff;
-
- /** Proxy interfaces. */
- private Class<?>[] proxyIntfs;
-
- /** Method returns serializable transient fields. */
- private Method serTransMtd;
-
- /**
- * Creates descriptor for class.
- *
- * @param typeId Type ID.
- * @param clsMap Class descriptors by class map.
- * @param cls Class.
- * @param ctx Context.
- * @param mapper ID mapper.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- OptimizedClassDescriptor(Class<?> cls,
- int typeId,
- ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
- MarshallerContext ctx,
- OptimizedMarshallerIdMapper mapper)
- throws IOException {
- this.cls = cls;
- this.typeId = typeId;
- this.clsMap = clsMap;
- this.ctx = ctx;
- this.mapper = mapper;
-
- name = cls.getName();
-
- excluded = MarshallerExclusions.isExcluded(cls);
-
- if (!excluded) {
- Class<?> parent;
-
- if (cls == byte.class || cls == Byte.class) {
- type = BYTE;
-
- isPrimitive = true;
- }
- else if (cls == short.class || cls == Short.class) {
- type = SHORT;
-
- isPrimitive = true;
- }
- else if (cls == int.class || cls == Integer.class) {
- type = INT;
-
- isPrimitive = true;
- }
- else if (cls == long.class || cls == Long.class) {
- type = LONG;
-
- isPrimitive = true;
- }
- else if (cls == float.class || cls == Float.class) {
- type = FLOAT;
-
- isPrimitive = true;
- }
- else if (cls == double.class || cls == Double.class) {
- type = DOUBLE;
-
- isPrimitive = true;
- }
- else if (cls == char.class || cls == Character.class) {
- type = CHAR;
-
- isPrimitive = true;
- }
- else if (cls == boolean.class || cls == Boolean.class) {
- type = BOOLEAN;
-
- isPrimitive = true;
- }
- else if (cls == byte[].class)
- type = BYTE_ARR;
- else if (cls == short[].class)
- type = SHORT_ARR;
- else if (cls == int[].class)
- type = INT_ARR;
- else if (cls == long[].class)
- type = LONG_ARR;
- else if (cls == float[].class)
- type = FLOAT_ARR;
- else if (cls == double[].class)
- type = DOUBLE_ARR;
- else if (cls == char[].class)
- type = CHAR_ARR;
- else if (cls == boolean[].class)
- type = BOOLEAN_ARR;
- else if (cls.isArray())
- type = OBJ_ARR;
- else if (cls == String.class)
- type = STR;
- else if (cls.isEnum()) {
- type = ENUM;
-
- isEnum = true;
- enumVals = cls.getEnumConstants();
- }
- // Support for enum constants, based on anonymous children classes.
- else if ((parent = cls.getSuperclass()) != null && parent.isEnum()) {
- type = ENUM;
-
- isEnum = true;
- enumVals = parent.getEnumConstants();
- }
- else if (cls == UUID.class)
- type = UUID;
- else if (cls == Properties.class) {
- type = PROPS;
-
- try {
- dfltsFieldOff = GridUnsafe.objectFieldOffset(Properties.class.getDeclaredField("defaults"));
- }
- catch (NoSuchFieldException e) {
- throw new IOException(e);
- }
- }
- else if (cls == ArrayList.class)
- type = ARRAY_LIST;
- else if (cls == HashMap.class) {
- type = HASH_MAP;
-
- try {
- loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
- }
- catch (NoSuchFieldException e) {
- throw new IOException(e);
- }
- }
- else if (cls == HashSet.class) {
- type = HASH_SET;
-
- try {
- loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
- }
- catch (NoSuchFieldException e) {
- throw new IOException(e);
- }
- }
- else if (cls == LinkedList.class)
- type = LINKED_LIST;
- else if (cls == LinkedHashMap.class) {
- type = LINKED_HASH_MAP;
-
- try {
- loadFactorFieldOff =
- GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
- accessOrderFieldOff =
- GridUnsafe.objectFieldOffset(LinkedHashMap.class.getDeclaredField("accessOrder"));
- }
- catch (NoSuchFieldException e) {
- throw new IOException(e);
- }
- }
- else if (cls == LinkedHashSet.class) {
- type = LINKED_HASH_SET;
-
- try {
- loadFactorFieldOff = GridUnsafe.objectFieldOffset(HashMap.class.getDeclaredField("loadFactor"));
- }
- catch (NoSuchFieldException e) {
- throw new IOException(e);
- }
- }
- else if (cls == Date.class)
- type = DATE;
- else if (cls == Class.class) {
- type = CLS;
-
- isCls = true;
- }
- else if (Proxy.class.isAssignableFrom(cls)) {
- type = PROXY;
-
- proxyIntfs = cls.getInterfaces();
- }
- else {
- Class<?> c = cls;
-
- while ((writeReplaceMtd == null || readResolveMtd == null) && c != null && !c.equals(Object.class)) {
- if (writeReplaceMtd == null) {
- try {
- writeReplaceMtd = c.getDeclaredMethod("writeReplace");
-
- if (!isStatic(writeReplaceMtd.getModifiers()) &&
- !(isPrivate(writeReplaceMtd.getModifiers()) && c != cls) &&
- writeReplaceMtd.getReturnType().equals(Object.class))
- writeReplaceMtd.setAccessible(true);
- else
- // Set method back to null if it has incorrect signature.
- writeReplaceMtd = null;
- }
- catch (NoSuchMethodException ignored) {
- // No-op.
- }
- }
-
- if (readResolveMtd == null) {
- try {
- readResolveMtd = c.getDeclaredMethod("readResolve");
-
- if (!isStatic(readResolveMtd.getModifiers()) &&
- !(isPrivate(readResolveMtd.getModifiers()) && c != cls) &&
- readResolveMtd.getReturnType().equals(Object.class))
- readResolveMtd.setAccessible(true);
- else
- // Set method back to null if it has incorrect signature.
- readResolveMtd = null;
- }
- catch (NoSuchMethodException ignored) {
- // No-op.
- }
- }
-
- c = c.getSuperclass();
- }
-
- if (Externalizable.class.isAssignableFrom(cls)) {
- type = EXTERNALIZABLE;
-
- try {
- constructor = !Modifier.isStatic(cls.getModifiers()) && cls.getDeclaringClass() != null ?
- cls.getDeclaredConstructor(cls.getDeclaringClass()) :
- cls.getDeclaredConstructor();
-
- constructor.setAccessible(true);
- }
- catch (NoSuchMethodException e) {
- throw new IOException("Externalizable class doesn't have default constructor: " + cls, e);
- }
- }
- else {
- type = SERIALIZABLE;
-
- isSerial = Serializable.class.isAssignableFrom(cls);
-
- writeObjMtds = new ArrayList<>();
- readObjMtds = new ArrayList<>();
- List<ClassFields> fields = new ArrayList<>();
-
- for (c = cls; c != null && !c.equals(Object.class); c = c.getSuperclass()) {
- Method mtd;
-
- try {
- mtd = c.getDeclaredMethod("writeObject", ObjectOutputStream.class);
-
- int mod = mtd.getModifiers();
-
- if (!isStatic(mod) && isPrivate(mod) && mtd.getReturnType() == Void.TYPE)
- mtd.setAccessible(true);
- else
- // Set method back to null if it has incorrect signature.
- mtd = null;
- }
- catch (NoSuchMethodException ignored) {
- mtd = null;
- }
-
- writeObjMtds.add(mtd);
-
- try {
- mtd = c.getDeclaredMethod("readObject", ObjectInputStream.class);
-
- int mod = mtd.getModifiers();
-
- if (!isStatic(mod) && isPrivate(mod) && mtd.getReturnType() == Void.TYPE)
- mtd.setAccessible(true);
- else
- // Set method back to null if it has incorrect signature.
- mtd = null;
- }
- catch (NoSuchMethodException ignored) {
- mtd = null;
- }
-
- readObjMtds.add(mtd);
-
- final SerializableTransient serTransAn = c.getAnnotation(SerializableTransient.class);
-
- // Custom serialization policy for transient fields.
- if (serTransAn != null) {
- try {
- serTransMtd = c.getDeclaredMethod(serTransAn.methodName(), cls, IgniteProductVersion.class);
-
- int mod = serTransMtd.getModifiers();
-
- if (isStatic(mod) && isPrivate(mod)
- && serTransMtd.getReturnType() == String[].class)
- serTransMtd.setAccessible(true);
- else
- // Set method back to null if it has incorrect signature.
- serTransMtd = null;
- }
- catch (NoSuchMethodException ignored) {
- serTransMtd = null;
- }
- }
-
- Field[] clsFields0 = c.getDeclaredFields();
-
- Map<String, Field> fieldNames = new HashMap<>();
-
- for (Field f : clsFields0)
- fieldNames.put(f.getName(), f);
-
- List<FieldInfo> clsFields = new ArrayList<>(clsFields0.length);
-
- boolean hasSerialPersistentFields = false;
-
- try {
- Field serFieldsDesc = c.getDeclaredField("serialPersistentFields");
-
- int mod = serFieldsDesc.getModifiers();
-
- if (serFieldsDesc.getType() == ObjectStreamField[].class &&
- isPrivate(mod) && isStatic(mod) && isFinal(mod)) {
- hasSerialPersistentFields = true;
-
- serFieldsDesc.setAccessible(true);
-
- ObjectStreamField[] serFields = (ObjectStreamField[]) serFieldsDesc.get(null);
-
- for (int i = 0; i < serFields.length; i++) {
- ObjectStreamField serField = serFields[i];
-
- FieldInfo fieldInfo;
-
- if (!fieldNames.containsKey(serField.getName())) {
- fieldInfo = new FieldInfo(null,
- serField.getName(),
- -1,
- fieldType(serField.getType()));
- }
- else {
- Field f = fieldNames.get(serField.getName());
-
- fieldInfo = new FieldInfo(f,
- serField.getName(),
- GridUnsafe.objectFieldOffset(f),
- fieldType(serField.getType()));
- }
-
- clsFields.add(fieldInfo);
- }
- }
- }
- catch (NoSuchFieldException ignored) {
- // No-op.
- }
- catch (IllegalAccessException e) {
- throw new IOException("Failed to get value of 'serialPersistentFields' field in class: " +
- cls.getName(), e);
- }
-
- if (!hasSerialPersistentFields) {
- for (int i = 0; i < clsFields0.length; i++) {
- Field f = clsFields0[i];
-
- int mod = f.getModifiers();
-
- if (!isStatic(mod) && !isTransient(mod)) {
- FieldInfo fieldInfo = new FieldInfo(f, f.getName(),
- GridUnsafe.objectFieldOffset(f), fieldType(f.getType()));
-
- clsFields.add(fieldInfo);
- }
- }
- }
-
- Collections.sort(clsFields, new Comparator<FieldInfo>() {
- @Override public int compare(FieldInfo t1, FieldInfo t2) {
- return t1.name().compareTo(t2.name());
- }
- });
-
- fields.add(new ClassFields(clsFields));
- }
-
- Collections.reverse(writeObjMtds);
- Collections.reverse(readObjMtds);
- Collections.reverse(fields);
-
- this.fields = new Fields(fields);
- }
- }
- }
-
- checksum = computeSerialVersionUid(cls, fields != null ? fields.ownFields() : null);
- }
-
- /**
- * @return Excluded flag.
- */
- boolean excluded() {
- return excluded;
- }
-
- /**
- * @return Class.
- */
- Class<?> describedClass() {
- return cls;
- }
-
- /**
- * @return Primitive flag.
- */
- boolean isPrimitive() {
- return isPrimitive;
- }
-
- /**
- * @return Enum flag.
- */
- boolean isEnum() {
- return isEnum;
- }
-
- /**
- * @return {@code True} if descriptor is for {@link Class}.
- */
- boolean isClass() {
- return isCls;
- }
-
- /**
- * @return {@code True} if descriptor is for {@link Proxy}.
- */
- boolean isProxy() {
- return type == PROXY;
- }
-
- /**
- * Replaces object.
- *
- * @param obj Object.
- * @return Replaced object or {@code null} if there is no {@code writeReplace} method.
- * @throws IOException In case of error.
- */
- Object replace(Object obj) throws IOException {
- if (writeReplaceMtd != null) {
- try {
- return writeReplaceMtd.invoke(obj);
- }
- catch (IllegalAccessException | InvocationTargetException e) {
- throw new IOException(e);
- }
- }
-
- return obj;
- }
-
- /**
- * Writes object to stream.
- *
- * @param out Output stream.
- * @param obj Object.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- void write(OptimizedObjectOutputStream out, Object obj) throws IOException {
- out.write(type);
-
- switch (type) {
- case BYTE:
- out.writeByte((Byte)obj);
-
- break;
-
- case SHORT:
- out.writeShort((Short)obj);
-
- break;
-
- case INT:
- out.writeInt((Integer)obj);
-
- break;
-
- case LONG:
- out.writeLong((Long)obj);
-
- break;
-
- case FLOAT:
- out.writeFloat((Float)obj);
-
- break;
-
- case DOUBLE:
- out.writeDouble((Double)obj);
-
- break;
-
- case CHAR:
- out.writeChar((Character)obj);
-
- break;
-
- case BOOLEAN:
- out.writeBoolean((Boolean)obj);
-
- break;
-
- case BYTE_ARR:
- out.writeByteArray((byte[])obj);
-
- break;
-
- case SHORT_ARR:
- out.writeShortArray((short[])obj);
-
- break;
-
- case INT_ARR:
- out.writeIntArray((int[])obj);
-
- break;
-
- case LONG_ARR:
- out.writeLongArray((long[])obj);
-
- break;
-
- case FLOAT_ARR:
- out.writeFloatArray((float[])obj);
-
- break;
-
- case DOUBLE_ARR:
- out.writeDoubleArray((double[])obj);
-
- break;
-
- case CHAR_ARR:
- out.writeCharArray((char[])obj);
-
- break;
-
- case BOOLEAN_ARR:
- out.writeBooleanArray((boolean[])obj);
-
- break;
-
- case OBJ_ARR:
- OptimizedClassDescriptor compDesc = classDescriptor(clsMap,
- obj.getClass().getComponentType(),
- ctx,
- mapper);
-
- compDesc.writeTypeData(out);
-
- out.writeArray((Object[])obj);
-
- break;
-
- case STR:
- out.writeString((String)obj);
-
- break;
-
- case UUID:
- out.writeUuid((UUID)obj);
-
- break;
-
- case PROPS:
- out.writeProperties((Properties)obj, dfltsFieldOff);
-
- break;
-
- case ARRAY_LIST:
- out.writeArrayList((ArrayList<?>)obj);
-
- break;
-
- case HASH_MAP:
- out.writeHashMap((HashMap<?, ?>)obj, loadFactorFieldOff, false);
-
- break;
-
- case HASH_SET:
- out.writeHashSet((HashSet<?>)obj, HASH_SET_MAP_OFF, loadFactorFieldOff);
-
- break;
-
- case LINKED_LIST:
- out.writeLinkedList((LinkedList<?>)obj);
-
- break;
-
- case LINKED_HASH_MAP:
- out.writeLinkedHashMap((LinkedHashMap<?, ?>)obj, loadFactorFieldOff, accessOrderFieldOff, false);
-
- break;
-
- case LINKED_HASH_SET:
- out.writeLinkedHashSet((LinkedHashSet<?>)obj, HASH_SET_MAP_OFF, loadFactorFieldOff);
-
- break;
-
- case DATE:
- out.writeDate((Date)obj);
-
- break;
-
- case CLS:
- OptimizedClassDescriptor clsDesc = classDescriptor(clsMap, (Class<?>)obj, ctx, mapper);
-
- clsDesc.writeTypeData(out);
-
- break;
-
- case PROXY:
- out.writeInt(proxyIntfs.length);
-
- for (Class<?> intf : proxyIntfs) {
- OptimizedClassDescriptor intfDesc = classDescriptor(clsMap, intf, ctx, mapper);
-
- intfDesc.writeTypeData(out);
- }
-
- InvocationHandler ih = Proxy.getInvocationHandler(obj);
-
- assert ih != null;
-
- out.writeObject(ih);
-
- break;
-
- case ENUM:
- writeTypeData(out);
-
- out.writeInt(((Enum)obj).ordinal());
-
- break;
-
- case EXTERNALIZABLE:
- writeTypeData(out);
-
- out.writeShort(checksum);
- out.writeExternalizable(obj);
-
- break;
-
- case SERIALIZABLE:
- if (out.requireSerializable() && !isSerial)
- throw new NotSerializableException("Must implement java.io.Serializable or " +
- "set OptimizedMarshaller.setRequireSerializable() to false " +
- "(note that performance may degrade if object is not Serializable): " + name);
-
- writeTypeData(out);
-
- out.writeShort(checksum);
- out.writeSerializable(obj, writeObjMtds, serializableFields(obj.getClass(), obj, null));
-
- break;
-
- default:
- throw new IllegalStateException("Invalid class type: " + type);
- }
- }
-
- /**
- * Gets list of serializable fields. If {@link #serTransMtd} method
- * returns list of transient fields, they will be added to other fields.
- * Transient fields that are not included in that list will be normally
- * ignored.
- *
- * @param cls Class.
- * @param obj Object.
- * @param ver Job sender version.
- * @return Serializable fields.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- private Fields serializableFields(Class<?> cls, Object obj, IgniteProductVersion ver) {
- if (serTransMtd == null)
- return fields;
-
- try {
- final String[] transFields = (String[])serTransMtd.invoke(cls, obj, ver);
-
- if (transFields == null || transFields.length == 0)
- return fields;
-
- List<FieldInfo> clsFields = new ArrayList<>();
-
- clsFields.addAll(fields.fields.get(0).fields);
-
- for (int i = 0; i < transFields.length; i++) {
- final String fieldName = transFields[i];
-
- final Field f = cls.getDeclaredField(fieldName);
-
- FieldInfo fieldInfo = new FieldInfo(f, f.getName(),
- GridUnsafe.objectFieldOffset(f), fieldType(f.getType()));
-
- clsFields.add(fieldInfo);
- }
-
- Collections.sort(clsFields, new Comparator<FieldInfo>() {
- @Override public int compare(FieldInfo t1, FieldInfo t2) {
- return t1.name().compareTo(t2.name());
- }
- });
-
- List<ClassFields> fields = new ArrayList<>();
-
- fields.add(new ClassFields(clsFields));
-
- return new Fields(fields);
- }
- catch (Exception ignored) {
- return fields;
- }
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- void writeTypeData(OptimizedObjectOutputStream out) throws IOException {
- out.writeInt(typeId);
-
- if (typeId == 0)
- out.writeUTF(name);
- }
-
- /**
- * Reads object from stream.
- *
- * @param in Input stream.
- * @return Object.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- Object read(OptimizedObjectInputStream in) throws ClassNotFoundException, IOException {
- switch (type) {
- case ENUM:
- return enumVals[in.readInt()];
-
- case EXTERNALIZABLE:
- verifyChecksum(in.readShort());
-
- return in.readExternalizable(constructor, readResolveMtd);
-
- case SERIALIZABLE:
- verifyChecksum(in.readShort());
-
- // If no serialize method, then unmarshal as usual.
- if (serTransMtd != null)
- return in.readSerializable(cls, readObjMtds, readResolveMtd,
- serializableFields(cls, null, MarshallerUtils.jobSenderVersion()));
- else
- return in.readSerializable(cls, readObjMtds, readResolveMtd, fields);
-
- default:
- assert false : "Unexpected type: " + type;
-
- return null;
- }
- }
-
- /**
- * @param checksum Checksum.
- * @throws ClassNotFoundException If checksum is wrong.
- * @throws IOException In case of error.
- */
- private void verifyChecksum(short checksum) throws ClassNotFoundException, IOException {
- if (checksum != this.checksum)
- throw new ClassNotFoundException("Optimized stream class checksum mismatch " +
- "(is same version of marshalled class present on all nodes?) " +
- "[expected=" + this.checksum + ", actual=" + checksum + ", cls=" + cls + ']');
- }
-
- /**
- * @param cls Class.
- * @return Type.
- */
- @SuppressWarnings("IfMayBeConditional")
- private OptimizedFieldType fieldType(Class<?> cls) {
- OptimizedFieldType type;
-
- if (cls == byte.class)
- type = OptimizedFieldType.BYTE;
- else if (cls == short.class)
- type = OptimizedFieldType.SHORT;
- else if (cls == int.class)
- type = OptimizedFieldType.INT;
- else if (cls == long.class)
- type = OptimizedFieldType.LONG;
- else if (cls == float.class)
- type = OptimizedFieldType.FLOAT;
- else if (cls == double.class)
- type = OptimizedFieldType.DOUBLE;
- else if (cls == char.class)
- type = OptimizedFieldType.CHAR;
- else if (cls == boolean.class)
- type = OptimizedFieldType.BOOLEAN;
- else
- type = OptimizedFieldType.OTHER;
-
- return type;
- }
-
- /**
- * Information about one field.
- */
- @SuppressWarnings("PackageVisibleInnerClass")
- static class FieldInfo {
- /** Field. */
- private final Field field;
-
- /** Field offset. */
- private final long fieldOffs;
-
- /** Field type. */
- private final OptimizedFieldType fieldType;
-
- /** Field name. */
- private final String fieldName;
-
- /**
- * @param field Field.
- * @param name Field name.
- * @param offset Field offset.
- * @param type Grid optimized field type.
- */
- FieldInfo(Field field, String name, long offset, OptimizedFieldType type) {
- this.field = field;
- fieldOffs = offset;
- fieldType = type;
- fieldName = name;
- }
-
- /**
- * @return Returns field.
- */
- Field field() {
- return field;
- }
-
- /**
- * @return Offset.
- */
- long offset() {
- return fieldOffs;
- }
-
- /**
- * @return Type.
- */
- OptimizedFieldType type() {
- return fieldType;
- }
-
- /**
- * @return Name.
- */
- String name() {
- return fieldName;
- }
- }
-
- /**
- * Information about one class.
- */
- static class ClassFields {
- /** Fields. */
- private final List<FieldInfo> fields;
-
- private final Map<String, Integer> nameToIndex;
-
- /**
- * @param fields Field infos.
- */
- ClassFields(List<FieldInfo> fields) {
- this.fields = fields;
-
- nameToIndex = U.newHashMap(fields.size());
-
- for (int i = 0; i < fields.size(); ++i)
- nameToIndex.put(fields.get(i).name(), i);
- }
-
- /**
- * @return Class fields.
- */
- List<FieldInfo> fields() {
- return fields;
- }
-
- /**
- * @return Fields count.
- */
- int size() {
- return fields.size();
- }
-
- /**
- * @param i Field's index.
- * @return FieldInfo.
- */
- FieldInfo get(int i) {
- return fields.get(i);
- }
-
- /**
- * @param name Field's name.
- * @return Field's index.
- */
- int getIndex(String name) {
- assert nameToIndex.containsKey(name);
-
- return nameToIndex.get(name);
- }
- }
-
- /**
- * Encapsulates data about class fields.
- */
- @SuppressWarnings("PackageVisibleInnerClass")
- static class Fields {
- /** Fields. */
- private final List<ClassFields> fields;
-
- /** Own fields (excluding inherited). */
- private final List<Field> ownFields;
-
- /**
- * Creates new instance.
- *
- * @param fields Fields.
- */
- Fields(List<ClassFields> fields) {
- this.fields = fields;
-
- if (fields.isEmpty())
- ownFields = null;
- else {
- ownFields = new ArrayList<>(fields.size());
-
- for (FieldInfo f : fields.get(fields.size() - 1).fields()) {
- if (f.field() != null)
- ownFields.add(f.field);
- }
- }
- }
-
- /**
- * Returns class's own fields (excluding inherited).
- *
- * @return List of fields or {@code null} if fields list is empty.
- */
- List<Field> ownFields() {
- return ownFields;
- }
-
- /**
- * Returns field types and their offsets.
- *
- * @param i hierarchy level where 0 corresponds to top level.
- * @return list of pairs where first value is field type and second value is its offset.
- */
- ClassFields fields(int i) {
- return fields.get(i);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedFieldType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedFieldType.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedFieldType.java
deleted file mode 100644
index aca7ce4..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedFieldType.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-/**
- * Field type used to calculate {@code Unsafe} offsets into objects.
- */
-enum OptimizedFieldType {
- /** */
- BYTE,
-
- /** */
- SHORT,
-
- /** */
- INT,
-
- /** */
- LONG,
-
- /** */
- FLOAT,
-
- /** */
- DOUBLE,
-
- /** */
- CHAR,
-
- /** */
- BOOLEAN,
-
- /** */
- OTHER
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
deleted file mode 100644
index e61e8dc..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshaller.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteSystemProperties;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller;
-import org.jetbrains.annotations.Nullable;
-import org.jsr166.ConcurrentHashMap8;
-import sun.misc.Unsafe;
-
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
-
-/**
- * Optimized implementation of {@link org.apache.ignite.marshaller.Marshaller}.
- * Unlike {@link org.apache.ignite.marshaller.jdk.JdkMarshaller},
- * which is based on standard {@link ObjectOutputStream}, this marshaller does not
- * enforce that all serialized objects implement {@link Serializable} interface. It is also
- * about 20 times faster as it removes lots of serialization overhead that exists in
- * default JDK implementation.
- * <p>
- * {@code OptimizedMarshaller} is tested only on Java HotSpot VM on other VMs
- * it could yield unexpected results. It is the default marshaller on Java HotSpot VMs
- * and will be used if no other marshaller was explicitly configured.
- * <p>
- * <h1 class="header">Configuration</h1>
- * <h2 class="header">Mandatory</h2>
- * This marshaller has no mandatory configuration parameters.
- * <h2 class="header">Java Example</h2>
- * <pre name="code" class="java">
- * OptimizedMarshaller marshaller = new OptimizedMarshaller();
- *
- * // Enforce Serializable interface.
- * marshaller.setRequireSerializable(true);
- *
- * IgniteConfiguration cfg = new IgniteConfiguration();
- *
- * // Override marshaller.
- * cfg.setMarshaller(marshaller);
- *
- * // Starts grid.
- * G.start(cfg);
- * </pre>
- * <h2 class="header">Spring Example</h2>
- * GridOptimizedMarshaller can be configured from Spring XML configuration file:
- * <pre name="code" class="xml">
- * <bean id="grid.custom.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true">
- * ...
- * <property name="marshaller">
- * <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- * <property name="requireSerializable">true</property>
- * </bean>
- * </property>
- * ...
- * </bean>
- * </pre>
- * <p>
- * <img src="http://ignite.apache.org/images/spring-small.png">
- * <br>
- * For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
- */
-public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
- /** Use default {@code serialVersionUID} for {@link Serializable} classes. */
- public static final boolean USE_DFLT_SUID =
- IgniteSystemProperties.getBoolean(IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID, false);
-
- /** Default class loader. */
- private final ClassLoader dfltClsLdr = getClass().getClassLoader();
-
- /** Whether or not to require an object to be serializable in order to be marshalled. */
- private boolean requireSer = true;
-
- /** ID mapper. */
- private OptimizedMarshallerIdMapper mapper;
-
- /** Class descriptors by class. */
- private final ConcurrentMap<Class, OptimizedClassDescriptor> clsMap = new ConcurrentHashMap8<>();
-
- /**
- * Creates new marshaller will all defaults.
- *
- * @throws IgniteException If this marshaller is not supported on the current JVM.
- */
- public OptimizedMarshaller() {
- if (!available())
- throw new IgniteException("Using OptimizedMarshaller on unsupported JVM version (some of " +
- "JVM-private APIs required for the marshaller to work are missing).");
- }
-
- /**
- * Creates new marshaller providing whether it should
- * require {@link Serializable} interface or not.
- *
- * @param requireSer Whether to require {@link Serializable}.
- */
- public OptimizedMarshaller(boolean requireSer) {
- this.requireSer = requireSer;
- }
-
- /**
- * Sets whether marshaller should require {@link Serializable} interface or not.
- *
- * @param requireSer Whether to require {@link Serializable}.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setRequireSerializable(boolean requireSer) {
- this.requireSer = requireSer;
-
- return this;
- }
-
- /**
- * Sets ID mapper.
- *
- * @param mapper ID mapper.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setIdMapper(OptimizedMarshallerIdMapper mapper) {
- this.mapper = mapper;
-
- return this;
- }
-
- /**
- * Specifies size of cached object streams used by marshaller. Object streams are cached for
- * performance reason to avoid costly recreation for every serialization routine. If {@code 0} (default),
- * pool is not used and each thread has its own cached object stream which it keeps reusing.
- * <p>
- * Since each stream has an internal buffer, creating a stream for each thread can lead to
- * high memory consumption if many large messages are marshalled or unmarshalled concurrently.
- * Consider using pool in this case. This will limit number of streams that can be created and,
- * therefore, decrease memory consumption.
- * <p>
- * NOTE: Using streams pool can decrease performance since streams will be shared between
- * different threads which will lead to more frequent context switching.
- *
- * @param poolSize Streams pool size. If {@code 0}, pool is not used.
- * @return {@code this} for chaining.
- */
- public OptimizedMarshaller setPoolSize(int poolSize) {
- OptimizedObjectStreamRegistry.poolSize(poolSize);
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override protected void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
- assert out != null;
-
- OptimizedObjectOutputStream objOut = null;
-
- try {
- objOut = OptimizedObjectStreamRegistry.out();
-
- objOut.context(clsMap, ctx, mapper, requireSer);
-
- objOut.out().outputStream(out);
-
- objOut.writeObject(obj);
- }
- catch (IOException e) {
- throw new IgniteCheckedException("Failed to serialize object: " + obj, e);
- }
- finally {
- OptimizedObjectStreamRegistry.closeOut(objOut);
- }
- }
-
- /** {@inheritDoc} */
- @Override protected byte[] marshal0(@Nullable Object obj) throws IgniteCheckedException {
- OptimizedObjectOutputStream objOut = null;
-
- try {
- objOut = OptimizedObjectStreamRegistry.out();
-
- objOut.context(clsMap, ctx, mapper, requireSer);
-
- objOut.writeObject(obj);
-
- return objOut.out().array();
- }
- catch (Exception e) {
- throw new IgniteCheckedException("Failed to serialize object: " + obj, e);
- }
- finally {
- OptimizedObjectStreamRegistry.closeOut(objOut);
- }
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Override protected <T> T unmarshal0(InputStream in, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
- assert in != null;
-
- OptimizedObjectInputStream objIn = null;
-
- try {
- objIn = OptimizedObjectStreamRegistry.in();
-
- objIn.context(clsMap, ctx, mapper, clsLdr != null ? clsLdr : dfltClsLdr);
-
- objIn.in().inputStream(in);
-
- return (T)objIn.readObject();
- }
- catch (ClassNotFoundException e) {
- throw new IgniteCheckedException("Failed to find class with given class loader for unmarshalling " +
- "(make sure same versions of all classes are available on all nodes or enable peer-class-loading) " +
- "[clsLdr=" + clsLdr + ", cls=" + e.getMessage() + "]", e);
- }
- catch (Exception e) {
- throw new IgniteCheckedException("Failed to deserialize object with given class loader: " + clsLdr, e);
- }
- finally {
- OptimizedObjectStreamRegistry.closeIn(objIn);
- }
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("unchecked")
- @Override protected <T> T unmarshal0(byte[] arr, @Nullable ClassLoader clsLdr) throws IgniteCheckedException {
- assert arr != null;
-
- OptimizedObjectInputStream objIn = null;
-
- try {
- objIn = OptimizedObjectStreamRegistry.in();
-
- objIn.context(clsMap, ctx, mapper, clsLdr != null ? clsLdr : dfltClsLdr);
-
- objIn.in().bytes(arr, arr.length);
-
- return (T)objIn.readObject();
- }
- catch (ClassNotFoundException e) {
- throw new IgniteCheckedException("Failed to find class with given class loader for unmarshalling " +
- "(make sure same version of all classes are available on all nodes or enable peer-class-loading)" +
- " [clsLdr=" + clsLdr + ", cls=" + e.getMessage() + "]", e);
- }
- catch (Exception e) {
- throw new IgniteCheckedException("Failed to deserialize object with given class loader: " + clsLdr, e);
- }
- finally {
- OptimizedObjectStreamRegistry.closeIn(objIn);
- }
- }
-
- /**
- * Checks whether {@code GridOptimizedMarshaller} is able to work on the current JVM.
- * <p>
- * As long as {@code GridOptimizedMarshaller} uses JVM-private API, which is not guaranteed
- * to be available on all JVM, this method should be called to ensure marshaller could work properly.
- * <p>
- * Result of this method is automatically checked in constructor.
- *
- * @return {@code true} if {@code GridOptimizedMarshaller} can work on the current JVM or
- * {@code false} if it can't.
- */
- @SuppressWarnings({"TypeParameterExtendsFinalClass", "ErrorNotRethrown"})
- public static boolean available() {
- try {
- Class<? extends Unsafe> unsafeCls = Unsafe.class;
-
- unsafeCls.getMethod("allocateInstance", Class.class);
- unsafeCls.getMethod("copyMemory", Object.class, long.class, Object.class, long.class, long.class);
-
- return true;
- }
- catch (Exception ignored) {
- return false;
- }
- catch (NoClassDefFoundError ignored) {
- return false;
- }
- }
-
- /**
- * Undeployment callback invoked when class loader is being undeployed.
- *
- * @param ldr Class loader being undeployed.
- */
- @Override public void onUndeploy(ClassLoader ldr) {
- for (Class<?> cls : clsMap.keySet()) {
- if (ldr.equals(cls.getClassLoader()))
- clsMap.remove(cls);
- }
-
- U.clearClassCache(ldr);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
deleted file mode 100644
index 91d07df..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerIdMapper.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-/**
- * ID mapper.
- */
-public interface OptimizedMarshallerIdMapper {
- /**
- * Gets type ID for provided class name.
- * <p>
- * If {@code 0} is returned, hash code of class name will be used.
- *
- * @param clsName Class name.
- * @return Type ID.
- */
- public int typeId(String clsName);
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
deleted file mode 100644
index 60a627a..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.IOException;
-import java.io.ObjectStreamClass;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.nio.charset.Charset;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.util.GridUnsafe;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.marshaller.MarshallerContext;
-import org.apache.ignite.marshaller.jdk.JdkMarshaller;
-
-import static org.apache.ignite.internal.MarshallerPlatformIds.JAVA_ID;
-
-/**
- * Miscellaneous utility methods to facilitate {@link OptimizedMarshaller}.
- */
-class OptimizedMarshallerUtils {
- /** */
- static final long HASH_SET_MAP_OFF;
-
- /** */
- static final byte JDK = -2;
-
- /** */
- static final byte HANDLE = -1;
-
- /** */
- static final byte NULL = 0;
-
- /** */
- static final byte BYTE = 1;
-
- /** */
- static final byte SHORT = 2;
-
- /** */
- static final byte INT = 3;
-
- /** */
- static final byte LONG = 4;
-
- /** */
- static final byte FLOAT = 5;
-
- /** */
- static final byte DOUBLE = 6;
-
- /** */
- static final byte CHAR = 7;
-
- /** */
- static final byte BOOLEAN = 8;
-
- /** */
- static final byte BYTE_ARR = 9;
-
- /** */
- static final byte SHORT_ARR = 10;
-
- /** */
- static final byte INT_ARR = 11;
-
- /** */
- static final byte LONG_ARR = 12;
-
- /** */
- static final byte FLOAT_ARR = 13;
-
- /** */
- static final byte DOUBLE_ARR = 14;
-
- /** */
- static final byte CHAR_ARR = 15;
-
- /** */
- static final byte BOOLEAN_ARR = 16;
-
- /** */
- static final byte OBJ_ARR = 17;
-
- /** */
- static final byte STR = 18;
-
- /** */
- static final byte UUID = 19;
-
- /** */
- static final byte PROPS = 20;
-
- /** */
- static final byte ARRAY_LIST = 21;
-
- /** */
- static final byte HASH_MAP = 22;
-
- /** */
- static final byte HASH_SET = 23;
-
- /** */
- static final byte LINKED_LIST = 24;
-
- /** */
- static final byte LINKED_HASH_MAP = 25;
-
- /** */
- static final byte LINKED_HASH_SET = 26;
-
- /** */
- static final byte DATE = 27;
-
- /** */
- static final byte CLS = 28;
-
- /** */
- static final byte PROXY = 29;
-
- /** */
- static final byte ENUM = 100;
-
- /** */
- static final byte EXTERNALIZABLE = 101;
-
- /** */
- static final byte SERIALIZABLE = 102;
-
- /** UTF-8 character name. */
- static final Charset UTF_8 = Charset.forName("UTF-8");
-
- /** JDK marshaller. */
- static final JdkMarshaller JDK_MARSH = new JdkMarshaller();
-
- static {
- long mapOff;
-
- try {
- mapOff = GridUnsafe.objectFieldOffset(HashSet.class.getDeclaredField("map"));
- }
- catch (NoSuchFieldException ignored) {
- try {
- // Workaround for legacy IBM JRE.
- mapOff = GridUnsafe.objectFieldOffset(HashSet.class.getDeclaredField("backingMap"));
- }
- catch (NoSuchFieldException e2) {
- throw new IgniteException("Initialization failure.", e2);
- }
- }
-
- HASH_SET_MAP_OFF = mapOff;
- }
-
- /**
- */
- private OptimizedMarshallerUtils() {
- // No-op.
- }
-
- /**
- * Gets descriptor for provided class.
- *
- * @param clsMap Class descriptors by class map.
- * @param cls Class.
- * @param ctx Context.
- * @param mapper ID mapper.
- * @return Descriptor.
- * @throws IOException In case of error.
- */
- static OptimizedClassDescriptor classDescriptor(
- ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
- Class cls,
- MarshallerContext ctx,
- OptimizedMarshallerIdMapper mapper)
- throws IOException
- {
- OptimizedClassDescriptor desc = clsMap.get(cls);
-
- if (desc == null) {
- int typeId = resolveTypeId(cls.getName(), mapper);
-
- boolean registered;
-
- try {
- registered = ctx.registerClassName(JAVA_ID, typeId, cls.getName());
- }
- catch (IgniteCheckedException e) {
- throw new IOException("Failed to register class: " + cls.getName(), e);
- }
-
- desc = new OptimizedClassDescriptor(cls, registered ? typeId : 0, clsMap, ctx, mapper);
-
- if (registered) {
- OptimizedClassDescriptor old = clsMap.putIfAbsent(cls, desc);
-
- if (old != null)
- desc = old;
- }
- }
-
- return desc;
- }
-
- /**
- * @param clsName Class name.
- * @param mapper Mapper.
- * @return Type ID.
- */
- private static int resolveTypeId(String clsName, OptimizedMarshallerIdMapper mapper) {
- int typeId;
-
- if (mapper != null) {
- typeId = mapper.typeId(clsName);
-
- if (typeId == 0)
- typeId = clsName.hashCode();
- }
- else
- typeId = clsName.hashCode();
-
- return typeId;
- }
-
- /**
- * Gets descriptor for provided ID.
- *
- * @param clsMap Class descriptors by class map.
- * @param typeId ID.
- * @param ldr Class loader.
- * @param ctx Context.
- * @param mapper ID mapper.
- * @return Descriptor.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class was not found.
- */
- static OptimizedClassDescriptor classDescriptor(
- ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
- int typeId,
- ClassLoader ldr,
- MarshallerContext ctx,
- OptimizedMarshallerIdMapper mapper) throws IOException, ClassNotFoundException {
- Class cls;
-
- try {
- cls = ctx.getClass(typeId, ldr);
- }
- catch (IgniteCheckedException e) {
- throw new IOException("Failed to resolve class for ID: " + typeId, e);
- }
-
- OptimizedClassDescriptor desc = clsMap.get(cls);
-
- if (desc == null) {
- OptimizedClassDescriptor old = clsMap.putIfAbsent(cls, desc =
- new OptimizedClassDescriptor(cls, resolveTypeId(cls.getName(), mapper), clsMap, ctx, mapper));
-
- if (old != null)
- desc = old;
- }
-
- return desc;
- }
-
- /**
- * Computes the serial version UID value for the given class. The code is taken from {@link
- * ObjectStreamClass#computeDefaultSUID(Class)}.
- *
- * @param cls A class.
- * @param fields Fields.
- * @return A serial version UID.
- * @throws IOException If failed.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- static short computeSerialVersionUid(Class cls, List<Field> fields) throws IOException {
- if (Serializable.class.isAssignableFrom(cls) && !Enum.class.isAssignableFrom(cls)) {
- try {
- Field field = cls.getDeclaredField("serialVersionUID");
-
- if (field.getType() == long.class) {
- int mod = field.getModifiers();
-
- if (Modifier.isStatic(mod) && Modifier.isFinal(mod)) {
- field.setAccessible(true);
-
- return (short)field.getLong(null);
- }
- }
- }
- catch (NoSuchFieldException ignored) {
- // No-op.
- }
- catch (IllegalAccessException e) {
- throw new IOException(e);
- }
-
- if (OptimizedMarshaller.USE_DFLT_SUID)
- return (short)ObjectStreamClass.lookup(cls).getSerialVersionUID();
- }
-
- MessageDigest md;
-
- try {
- md = MessageDigest.getInstance("SHA");
- }
- catch (NoSuchAlgorithmException e) {
- throw new IOException("Failed to get digest for SHA.", e);
- }
-
- md.update(cls.getName().getBytes(UTF_8));
-
- if (!F.isEmpty(fields)) {
- for (int i = 0; i < fields.size(); i++) {
- Field f = fields.get(i);
-
- md.update(f.getName().getBytes(UTF_8));
- md.update(f.getType().getName().getBytes(UTF_8));
- }
- }
-
- byte[] hashBytes = md.digest();
-
- long hash = 0;
-
- // Composes a single-long hash from the byte[] hash.
- for (int i = Math.min(hashBytes.length, 8) - 1; i >= 0; i--)
- hash = (hash << 8) | (hashBytes[i] & 0xFF);
-
- return (short)hash;
- }
-
- /**
- * Gets byte field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Byte value.
- */
- static byte getByte(Object obj, long off) {
- return GridUnsafe.getByteField(obj, off);
- }
-
- /**
- * Sets byte field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setByte(Object obj, long off, byte val) {
- GridUnsafe.putByteField(obj, off, val);
- }
-
- /**
- * Gets short field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Short value.
- */
- static short getShort(Object obj, long off) {
- return GridUnsafe.getShortField(obj, off);
- }
-
- /**
- * Sets short field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setShort(Object obj, long off, short val) {
- GridUnsafe.putShortField(obj, off, val);
- }
-
- /**
- * Gets integer field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Integer value.
- */
- static int getInt(Object obj, long off) {
- return GridUnsafe.getIntField(obj, off);
- }
-
- /**
- * Sets integer field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setInt(Object obj, long off, int val) {
- GridUnsafe.putIntField(obj, off, val);
- }
-
- /**
- * Gets long field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Long value.
- */
- static long getLong(Object obj, long off) {
- return GridUnsafe.getLongField(obj, off);
- }
-
- /**
- * Sets long field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setLong(Object obj, long off, long val) {
- GridUnsafe.putLongField(obj, off, val);
- }
-
- /**
- * Gets float field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Float value.
- */
- static float getFloat(Object obj, long off) {
- return GridUnsafe.getFloatField(obj, off);
- }
-
- /**
- * Sets float field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setFloat(Object obj, long off, float val) {
- GridUnsafe.putFloatField(obj, off, val);
- }
-
- /**
- * Gets double field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Double value.
- */
- static double getDouble(Object obj, long off) {
- return GridUnsafe.getDoubleField(obj, off);
- }
-
- /**
- * Sets double field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setDouble(Object obj, long off, double val) {
- GridUnsafe.putDoubleField(obj, off, val);
- }
-
- /**
- * Gets char field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Char value.
- */
- static char getChar(Object obj, long off) {
- return GridUnsafe.getCharField(obj, off);
- }
-
- /**
- * Sets char field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setChar(Object obj, long off, char val) {
- GridUnsafe.putCharField(obj, off, val);
- }
-
- /**
- * Gets boolean field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Boolean value.
- */
- static boolean getBoolean(Object obj, long off) {
- return GridUnsafe.getBooleanField(obj, off);
- }
-
- /**
- * Sets boolean field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setBoolean(Object obj, long off, boolean val) {
- GridUnsafe.putBooleanField(obj, off, val);
- }
-
- /**
- * Gets field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @return Value.
- */
- static Object getObject(Object obj, long off) {
- return GridUnsafe.getObjectField(obj, off);
- }
-
- /**
- * Sets field value.
- *
- * @param obj Object.
- * @param off Field offset.
- * @param val Value.
- */
- static void setObject(Object obj, long off, Object val) {
- GridUnsafe.putObjectField(obj, off, val);
- }
-}
[04/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
new file mode 100644
index 0000000..b1d071c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamSelfTest.java
@@ -0,0 +1,2157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.NotActiveException;
+import java.io.NotSerializableException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.text.SimpleDateFormat;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.IdentityHashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.PriorityQueue;
+import java.util.Properties;
+import java.util.Queue;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.Vector;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.io.GridUnsafeDataInput;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.MarshallerContext;
+import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.marshaller.MarshallerExclusions;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.Nullable;
+import org.jsr166.ConcurrentHashMap8;
+
+import static org.junit.Assert.assertArrayEquals;
+
+/**
+ * Test for optimized object streams.
+ */
+public class OptimizedObjectStreamSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final MarshallerContext CTX = new MarshallerContextTestImpl();
+
+ /** */
+ private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap = new ConcurrentHashMap8<>();
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNull() throws Exception {
+ assertNull(marshalUnmarshal(null));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testByte() throws Exception {
+ byte val = 10;
+
+ assertEquals(new Byte(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testShort() throws Exception {
+ short val = 100;
+
+ assertEquals(new Short(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testInteger() throws Exception {
+ int val = 100;
+
+ assertEquals(new Integer(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLong() throws Exception {
+ long val = 1000L;
+
+ assertEquals(new Long(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testFloat() throws Exception {
+ float val = 10.0f;
+
+ assertEquals(val, marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDouble() throws Exception {
+ double val = 100.0d;
+
+ assertEquals(val, marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testBoolean() throws Exception {
+ boolean val = true;
+
+ assertEquals(new Boolean(val), marshalUnmarshal(val));
+
+ val = false;
+
+ assertEquals(new Boolean(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testChar() throws Exception {
+ char val = 10;
+
+ assertEquals(new Character(val), marshalUnmarshal(val));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testByteArray() throws Exception {
+ byte[] arr = marshalUnmarshal(new byte[] {1, 2});
+
+ assertArrayEquals(new byte[] {1, 2}, arr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testShortArray() throws Exception {
+ short[] arr = marshalUnmarshal(new short[] {1, 2});
+
+ assertArrayEquals(new short[] {1, 2}, arr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testIntArray() throws Exception {
+ int[] arr = marshalUnmarshal(new int[] {1, 2});
+
+ assertArrayEquals(new int[] {1, 2}, arr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLongArray() throws Exception {
+ long[] arr = marshalUnmarshal(new long[] {1L, 2L});
+
+ assertArrayEquals(new long[] {1, 2}, arr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testFloatArray() throws Exception {
+ float[] arr = marshalUnmarshal(new float[] {1.0f, 2.0f});
+
+ assertArrayEquals(new float[] {1.0f, 2.0f}, arr, 0.1f);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDoubleArray() throws Exception {
+ double[] arr = marshalUnmarshal(new double[] {1.0d, 2.0d});
+
+ assertArrayEquals(new double[] {1.0d, 2.0d}, arr, 0.1d);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testBooleanArray() throws Exception {
+ boolean[] arr = marshalUnmarshal(new boolean[] {true, false, false});
+
+ assertEquals(3, arr.length);
+ assertEquals(true, arr[0]);
+ assertEquals(false, arr[1]);
+ assertEquals(false, arr[2]);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testCharArray() throws Exception {
+ char[] arr = marshalUnmarshal(new char[] {1, 2});
+
+ assertArrayEquals(new char[] {1, 2}, arr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testObject() throws Exception {
+ TestObject obj = new TestObject();
+
+ obj.longVal = 100L;
+ obj.doubleVal = 100.0d;
+ obj.longArr = new Long[] {200L, 300L};
+ obj.doubleArr = new Double[] {200.0d, 300.0d};
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testRequireSerializable() throws Exception {
+ try {
+ OptimizedMarshaller marsh = new OptimizedMarshaller(true);
+
+ marsh.setContext(CTX);
+
+ marsh.marshal(new Object());
+
+ assert false : "Exception not thrown.";
+ }
+ catch (IgniteCheckedException e) {
+ NotSerializableException serEx = e.getCause(NotSerializableException.class);
+
+ if (serEx == null)
+ throw e;
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testPool() throws Exception {
+ final TestObject obj = new TestObject();
+
+ obj.longVal = 100L;
+ obj.doubleVal = 100.0d;
+ obj.longArr = new Long[100 * 1024];
+ obj.doubleArr = new Double[100 * 1024];
+
+ Arrays.fill(obj.longArr, 100L);
+ Arrays.fill(obj.doubleArr, 100.0d);
+
+ final OptimizedMarshaller marsh = new OptimizedMarshaller();
+
+ marsh.setContext(CTX);
+
+ marsh.setPoolSize(5);
+
+ try {
+ multithreaded(new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ for (int i = 0; i < 50; i++)
+ assertEquals(obj, marsh.unmarshal(marsh.marshal(obj), null));
+
+ return null;
+ }
+ }, 20);
+ }
+ finally {
+ marsh.setPoolSize(0);
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testObjectWithNulls() throws Exception {
+ TestObject obj = new TestObject();
+
+ obj.longVal = 100L;
+ obj.longArr = new Long[] {200L, 300L};
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testObjectArray() throws Exception {
+ TestObject obj1 = new TestObject();
+
+ obj1.longVal = 100L;
+ obj1.doubleVal = 100.0d;
+ obj1.longArr = new Long[] {200L, 300L};
+ obj1.doubleArr = new Double[] {200.0d, 300.0d};
+
+ TestObject obj2 = new TestObject();
+
+ obj2.longVal = 400L;
+ obj2.doubleVal = 400.0d;
+ obj2.longArr = new Long[] {500L, 600L};
+ obj2.doubleArr = new Double[] {500.0d, 600.0d};
+
+ TestObject[] arr = {obj1, obj2};
+
+ assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
+
+ String[] strArr = {"str1", "str2"};
+
+ assertArrayEquals(strArr, (String[])marshalUnmarshal(strArr));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testExternalizable() throws Exception {
+ ExternalizableTestObject1 obj = new ExternalizableTestObject1();
+
+ obj.longVal = 100L;
+ obj.doubleVal = 100.0d;
+ obj.longArr = new Long[] {200L, 300L};
+ obj.doubleArr = new Double[] {200.0d, 300.0d};
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testExternalizableWithNulls() throws Exception {
+ ExternalizableTestObject2 obj = new ExternalizableTestObject2();
+
+ obj.longVal = 100L;
+ obj.doubleVal = 100.0d;
+ obj.longArr = new Long[] {200L, 300L};
+ obj.doubleArr = new Double[] {200.0d, 300.0d};
+
+ obj = marshalUnmarshal(obj);
+
+ assertEquals(100L, obj.longVal.longValue());
+ assertNull(obj.doubleVal);
+ assertArrayEquals(new Long[] {200L, 300L}, obj.longArr);
+ assertNull(obj.doubleArr);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLink() throws Exception {
+ for (int i = 0; i < 20; i++) {
+ LinkTestObject1 obj1 = new LinkTestObject1();
+ LinkTestObject2 obj2 = new LinkTestObject2();
+ LinkTestObject2 obj3 = new LinkTestObject2();
+
+ obj1.val = 100;
+ obj2.ref = obj1;
+ obj3.ref = obj1;
+
+ LinkTestObject2[] arr = new LinkTestObject2[] {obj2, obj3};
+
+ assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testCycleLink() throws Exception {
+ for (int i = 0; i < 20; i++) {
+ CycleLinkTestObject obj = new CycleLinkTestObject();
+
+ obj.val = 100;
+ obj.ref = obj;
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNoDefaultConstructor() throws Exception {
+ NoDefaultConstructorTestObject obj = new NoDefaultConstructorTestObject(100);
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testEnum() throws Exception {
+ assertEquals(TestEnum.B, marshalUnmarshal(TestEnum.B));
+
+ TestEnum[] arr = new TestEnum[] {TestEnum.C, TestEnum.A, TestEnum.B, TestEnum.A};
+
+ assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testCollection() throws Exception {
+ TestObject obj1 = new TestObject();
+
+ obj1.longVal = 100L;
+ obj1.doubleVal = 100.0d;
+ obj1.longArr = new Long[] {200L, 300L};
+ obj1.doubleArr = new Double[] {200.0d, 300.0d};
+
+ TestObject obj2 = new TestObject();
+
+ obj2.longVal = 400L;
+ obj2.doubleVal = 400.0d;
+ obj2.longArr = new Long[] {500L, 600L};
+ obj2.doubleArr = new Double[] {500.0d, 600.0d};
+
+ Collection<TestObject> col = F.asList(obj1, obj2);
+
+ assertEquals(col, marshalUnmarshal(col));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testMap() throws Exception {
+ TestObject obj1 = new TestObject();
+
+ obj1.longVal = 100L;
+ obj1.doubleVal = 100.0d;
+ obj1.longArr = new Long[] {200L, 300L};
+ obj1.doubleArr = new Double[] {200.0d, 300.0d};
+
+ TestObject obj2 = new TestObject();
+
+ obj2.longVal = 400L;
+ obj2.doubleVal = 400.0d;
+ obj2.longArr = new Long[] {500L, 600L};
+ obj2.doubleArr = new Double[] {500.0d, 600.0d};
+
+ Map<Integer, TestObject> map = F.asMap(1, obj1, 2, obj2);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testUuid() throws Exception {
+ UUID uuid = UUID.randomUUID();
+
+ assertEquals(uuid, marshalUnmarshal(uuid));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDate() throws Exception {
+ Date date = new Date();
+
+ assertEquals(date, marshalUnmarshal(date));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testTransient() throws Exception {
+ TransientTestObject obj = marshalUnmarshal(new TransientTestObject(100, 200, "str1", "str2"));
+
+ assertEquals(100, obj.val1);
+ assertEquals(0, obj.val2);
+ assertEquals("str1", obj.str1);
+ assertNull(obj.str2);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testWriteReadObject() throws Exception {
+ WriteReadTestObject obj = marshalUnmarshal(new WriteReadTestObject(100, "str"));
+
+ assertEquals(100, obj.val);
+ assertEquals("Optional data", obj.str);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testWriteReplace() throws Exception {
+ ReplaceTestObject obj = marshalUnmarshal(new ReplaceTestObject(100));
+
+ assertEquals(200, obj.value());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testWriteReplaceNull() throws Exception {
+ ReplaceNullTestObject obj = marshalUnmarshal(new ReplaceNullTestObject());
+
+ assertNull(obj);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadResolve() throws Exception {
+ ResolveTestObject obj = marshalUnmarshal(new ResolveTestObject(100));
+
+ assertEquals(200, obj.value());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testArrayDeque() throws Exception {
+ Queue<Integer> queue = new ArrayDeque<>();
+
+ for (int i = 0; i < 100; i++)
+ queue.add(i);
+
+ Queue<Integer> newQueue = marshalUnmarshal(queue);
+
+ assertEquals(queue.size(), newQueue.size());
+
+ Integer i;
+
+ while ((i = newQueue.poll()) != null)
+ assertEquals(queue.poll(), i);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testArrayList() throws Exception {
+ Collection<Integer> list = new ArrayList<>();
+
+ for (int i = 0; i < 100; i++)
+ list.add(i);
+
+ assertEquals(list, marshalUnmarshal(list));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testHashMap() throws Exception {
+ Map<Integer, Integer> map = new HashMap<>();
+
+ for (int i = 0; i < 100; i++)
+ map.put(i, i);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testHashSet() throws Exception {
+ Collection<Integer> set = new HashSet<>();
+
+ for (int i = 0; i < 100; i++)
+ set.add(i);
+
+ assertEquals(set, marshalUnmarshal(set));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("UseOfObsoleteCollectionType")
+ public void testHashtable() throws Exception {
+ Map<Integer, Integer> map = new Hashtable<>();
+
+ for (int i = 0; i < 100; i++)
+ map.put(i, i);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testIdentityHashMap() throws Exception {
+ Map<Integer, Integer> map = new IdentityHashMap<>();
+
+ for (int i = 0; i < 100; i++)
+ map.put(i, i);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLinkedHashMap() throws Exception {
+ Map<Integer, Integer> map = new LinkedHashMap<>();
+
+ for (int i = 0; i < 100; i++)
+ map.put(i, i);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLinkedHashSet() throws Exception {
+ Collection<Integer> set = new LinkedHashSet<>();
+
+ for (int i = 0; i < 100; i++)
+ set.add(i);
+
+ assertEquals(set, marshalUnmarshal(set));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testLinkedList() throws Exception {
+ Collection<Integer> list = new LinkedList<>();
+
+ for (int i = 0; i < 100; i++)
+ list.add(i);
+
+ assertEquals(list, marshalUnmarshal(list));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testPriorityQueue() throws Exception {
+ Queue<Integer> queue = new PriorityQueue<>();
+
+ for (int i = 0; i < 100; i++)
+ queue.add(i);
+
+ Queue<Integer> newQueue = marshalUnmarshal(queue);
+
+ assertEquals(queue.size(), newQueue.size());
+
+ Integer i;
+
+ while ((i = newQueue.poll()) != null)
+ assertEquals(queue.poll(), i);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testProperties() throws Exception {
+ Properties dflts = new Properties();
+
+ dflts.setProperty("key1", "val1");
+ dflts.setProperty("key2", "wrong");
+
+ Properties props = new Properties(dflts);
+
+ props.setProperty("key2", "val2");
+
+ Properties newProps = marshalUnmarshal(props);
+
+ assertEquals("val1", newProps.getProperty("key1"));
+ assertEquals("val2", newProps.getProperty("key2"));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testTreeMap() throws Exception {
+ Map<Integer, Integer> map = new TreeMap<>();
+
+ for (int i = 0; i < 100; i++)
+ map.put(i, i);
+
+ assertEquals(map, marshalUnmarshal(map));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testTreeSet() throws Exception {
+ Collection<Integer> set = new TreeSet<>();
+
+ for (int i = 0; i < 100; i++)
+ set.add(i);
+
+ assertEquals(set, marshalUnmarshal(set));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("UseOfObsoleteCollectionType")
+ public void testVector() throws Exception {
+ Collection<Integer> vector = new Vector<>();
+
+ for (int i = 0; i < 100; i++)
+ vector.add(i);
+
+ assertEquals(vector, marshalUnmarshal(vector));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testString() throws Exception {
+ assertEquals("Latin", marshalUnmarshal("Latin"));
+ assertEquals("\u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430", marshalUnmarshal("\u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430"));
+ assertEquals("\u4e2d\u56fd\u7684", marshalUnmarshal("\u4e2d\u56fd\u7684"));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadLine() throws Exception {
+ OptimizedObjectInputStream in = new OptimizedObjectInputStream(new GridUnsafeDataInput());
+
+ byte[] bytes = "line1\nline2\r\nli\rne3\nline4".getBytes();
+
+ in.in().bytes(bytes, bytes.length);
+
+ assertEquals("line1", in.readLine());
+ assertEquals("line2", in.readLine());
+ assertEquals("line3", in.readLine());
+ assertEquals("line4", in.readLine());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testHierarchy() throws Exception {
+ C c = new C(100, "str", 200, "str", 300, "str");
+
+ C newC = marshalUnmarshal(c);
+
+ assertEquals(100, newC.valueA());
+ assertEquals("Optional data", newC.stringA());
+ assertEquals(200, newC.valueB());
+ assertNull(newC.stringB());
+ assertEquals(0, newC.valueC());
+ assertEquals("Optional data", newC.stringC());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testInet4Address() throws Exception {
+ Inet4Address addr = (Inet4Address)InetAddress.getByName("localhost");
+
+ assertEquals(addr, marshalUnmarshal(addr));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClass() throws Exception {
+ assertEquals(int.class, marshalUnmarshal(int.class));
+ assertEquals(Long.class, marshalUnmarshal(Long.class));
+ assertEquals(TestObject.class, marshalUnmarshal(TestObject.class));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testWriteReadFields() throws Exception {
+ WriteReadFieldsTestObject obj = marshalUnmarshal(new WriteReadFieldsTestObject(100, "str"));
+
+ assertEquals(100, obj.val);
+ assertEquals("Optional data", obj.str);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testWriteFields() throws Exception {
+ WriteFieldsTestObject obj = marshalUnmarshal(new WriteFieldsTestObject(100, "str"));
+
+ assertEquals(100, obj.val);
+ assertEquals("Optional data", obj.str);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testBigInteger() throws Exception {
+ BigInteger b = new BigInteger("54654865468745468465321414646834562346475457488");
+
+ assertEquals(b, marshalUnmarshal(b));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testBigDecimal() throws Exception {
+ BigDecimal b = new BigDecimal("849572389457208934572093574.123512938654126458542145");
+
+ assertEquals(b, marshalUnmarshal(b));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testSimpleDateFormat() throws Exception {
+ SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy");
+
+ assertEquals(f, marshalUnmarshal(f));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testComplexObject() throws Exception {
+ ComplexTestObject obj = new ComplexTestObject();
+
+ assertEquals(obj, marshalUnmarshal(obj));
+
+ ExternalizableTestObject1 extObj1 = new ExternalizableTestObject1();
+
+ extObj1.longVal = 1000L;
+ extObj1.doubleVal = 1000.0d;
+ extObj1.longArr = new Long[] {1000L, 2000L, 3000L};
+ extObj1.doubleArr = new Double[] {1000.0d, 2000.0d, 3000.0d};
+
+ ExternalizableTestObject1 extObj2 = new ExternalizableTestObject1();
+
+ extObj2.longVal = 2000L;
+ extObj2.doubleVal = 2000.0d;
+ extObj2.longArr = new Long[] {4000L, 5000L, 6000L};
+ extObj2.doubleArr = new Double[] {4000.0d, 5000.0d, 6000.0d};
+
+ Properties props = new Properties();
+
+ props.setProperty("name", "value");
+
+ Collection<Integer> col = F.asList(10, 20, 30);
+
+ Map<Integer, String> map = F.asMap(10, "str1", 20, "str2", 30, "str3");
+
+ obj = new ComplexTestObject(
+ (byte)1,
+ (short)10,
+ 100,
+ 1000L,
+ 100.0f,
+ 1000.0d,
+ 'a',
+ false,
+ (byte)2,
+ (short)20,
+ 200,
+ 2000L,
+ 200.0f,
+ 2000.0d,
+ 'b',
+ true,
+ new byte[] {1, 2, 3},
+ new short[] {10, 20, 30},
+ new int[] {100, 200, 300},
+ new long[] {1000, 2000, 3000},
+ new float[] {100.0f, 200.0f, 300.0f},
+ new double[] {1000.0d, 2000.0d, 3000.0d},
+ new char[] {'a', 'b', 'c'},
+ new boolean[] {false, true},
+ new ExternalizableTestObject1[] {extObj1, extObj2},
+ "String",
+ TestEnum.A,
+ UUID.randomUUID(),
+ props,
+ new ArrayList<>(col),
+ new HashMap<>(map),
+ new HashSet<>(col),
+ new LinkedList<>(col),
+ new LinkedHashMap<>(map),
+ new LinkedHashSet<>(col),
+ new Date(),
+ ExternalizableTestObject2.class
+ );
+
+ assertEquals(obj, marshalUnmarshal(obj));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadToArray() throws Exception {
+ OptimizedObjectInputStream in = OptimizedObjectStreamRegistry.in();
+
+ try {
+ byte[] arr = new byte[50];
+
+ for (int i = 0; i < arr.length; i++)
+ arr[i] = (byte)i;
+
+ in.in().bytes(arr, arr.length);
+
+ byte[] buf = new byte[10];
+
+ assertEquals(10, in.read(buf));
+
+ for (int i = 0; i < buf.length; i++)
+ assertEquals(i, buf[i]);
+
+ buf = new byte[30];
+
+ assertEquals(20, in.read(buf, 0, 20));
+
+ for (int i = 0; i < buf.length; i++)
+ assertEquals(i < 20 ? 10 + i : 0, buf[i]);
+
+ buf = new byte[30];
+
+ assertEquals(10, in.read(buf, 10, 10));
+
+ for (int i = 0; i < buf.length; i++)
+ assertEquals(i >= 10 && i < 20 ? 30 + (i - 10) : 0, buf[i]);
+
+ buf = new byte[20];
+
+ assertEquals(10, in.read(buf));
+
+ for (int i = 0; i < buf.length; i++)
+ assertEquals(i < 10 ? 40 + i : 0, buf[i]);
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeIn(in);
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testHandleTableGrow() throws Exception {
+ List<String> c = new ArrayList<>();
+
+ for (int i = 0; i < 29; i++)
+ c.add("str");
+
+ String str = c.get(28);
+
+ c.add("str");
+ c.add(str);
+
+ List<Object> c0 = marshalUnmarshal(c);
+
+ assertTrue(c0.get(28) == c0.get(30));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testIncorrectExternalizable() throws Exception {
+ GridTestUtils.assertThrows(
+ log,
+ new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ return marshalUnmarshal(new IncorrectExternalizable());
+ }
+ },
+ IOException.class,
+ null);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testExcludedClass() throws Exception {
+ Class<?>[] exclClasses = U.staticField(MarshallerExclusions.class, "EXCL_CLASSES");
+
+ assertFalse(F.isEmpty(exclClasses));
+
+ for (Class<?> cls : exclClasses)
+ assertEquals(cls, marshalUnmarshal(cls));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testInet6Address() throws Exception {
+ final InetAddress address = Inet6Address.getByAddress(new byte[16]);
+
+ assertEquals(address, marshalUnmarshal(address));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+ public void testPutFieldsWithDefaultWriteObject() throws Exception {
+ try {
+ marshalUnmarshal(new CustomWriteObjectMethodObject("test"));
+ }
+ catch (IOException e) {
+ assert e.getCause() instanceof NotActiveException;
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @SuppressWarnings("ThrowableInstanceNeverThrown")
+ public void testThrowable() throws Exception {
+ Throwable t = new Throwable("Throwable");
+
+ assertEquals(t.getMessage(), ((Throwable)marshalUnmarshal(t)).getMessage());
+ }
+
+ /**
+ * Marshals and unmarshals object.
+ *
+ * @param obj Original object.
+ * @return Object after marshalling and unmarshalling.
+ * @throws Exception In case of error.
+ */
+ private <T> T marshalUnmarshal(@Nullable Object obj) throws Exception {
+ OptimizedObjectOutputStream out = null;
+ OptimizedObjectInputStream in = null;
+
+ try {
+ out = OptimizedObjectStreamRegistry.out();
+
+ out.context(clsMap, CTX, null, true);
+
+ out.writeObject(obj);
+
+ byte[] arr = out.out().array();
+
+ in = OptimizedObjectStreamRegistry.in();
+
+ in.context(clsMap, CTX, null, getClass().getClassLoader());
+
+ in.in().bytes(arr, arr.length);
+
+ Object obj0 = in.readObject();
+
+ checkHandles(out, in);
+
+ return (T)obj0;
+ }
+ finally {
+ OptimizedObjectStreamRegistry.closeOut(out);
+ OptimizedObjectStreamRegistry.closeIn(in);
+ }
+ }
+
+ /**
+ * Checks that handles are equal in output and input streams.
+ *
+ * @param out Output stream.
+ * @param in Input stream.
+ * @throws Exception If failed.
+ */
+ private void checkHandles(OptimizedObjectOutputStream out, OptimizedObjectInputStream in)
+ throws Exception {
+ Object[] outHandles = out.handledObjects();
+ Object[] inHandles = in.handledObjects();
+
+ assertEquals(outHandles.length, inHandles.length);
+
+ for (int i = 0; i < outHandles.length; i++) {
+ if (outHandles[i] == null)
+ assertTrue(inHandles[i] == null);
+ else {
+ assertFalse(inHandles[i] == null);
+
+ assertTrue(outHandles[i].getClass() == inHandles[i].getClass());
+ }
+ }
+ }
+
+ /** */
+ private static class IncorrectExternalizable implements Externalizable {
+ /**
+ * Required by {@link Externalizable}.
+ */
+ public IncorrectExternalizable() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeInt(0);
+ out.writeInt(200);
+ out.writeObject("str");
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ in.readInt();
+ in.readObject();
+ }
+ }
+
+ /**
+ * Test object.
+ */
+ private static class TestObject implements Serializable {
+ /** */
+ private Long longVal;
+
+ /** */
+ private Double doubleVal;
+
+ /** */
+ private Long[] longArr;
+
+ /** */
+ private Double[] doubleArr;
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ TestObject obj = (TestObject)o;
+
+ return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
+ doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
+ Arrays.equals(longArr, obj.longArr) &&
+ Arrays.equals(doubleArr, obj.doubleArr);
+ }
+ }
+
+ /**
+ * Externalizable test object.
+ */
+ private static class ExternalizableTestObject1 implements Externalizable {
+ /** */
+ private Long longVal;
+
+ /** */
+ private Double doubleVal;
+
+ /** */
+ private Long[] longArr;
+
+ /** */
+ private Double[] doubleArr;
+
+ /**
+ * Required by {@link Externalizable}.
+ */
+ public ExternalizableTestObject1() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ ExternalizableTestObject1 obj = (ExternalizableTestObject1)o;
+
+ return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
+ doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
+ Arrays.equals(longArr, obj.longArr) &&
+ Arrays.equals(doubleArr, obj.doubleArr);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeLong(longVal);
+ out.writeDouble(doubleVal);
+ U.writeArray(out, longArr);
+ U.writeArray(out, doubleArr);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ longVal = in.readLong();
+ doubleVal = in.readDouble();
+
+ Object[] arr = U.readArray(in);
+
+ longArr = Arrays.copyOf(arr, arr.length, Long[].class);
+
+ arr = U.readArray(in);
+
+ doubleArr = Arrays.copyOf(arr, arr.length, Double[].class);
+ }
+ }
+
+ /**
+ * Externalizable test object.
+ */
+ private static class ExternalizableTestObject2 implements Externalizable {
+ /** */
+ private Long longVal;
+
+ /** */
+ private Double doubleVal;
+
+ /** */
+ private Long[] longArr;
+
+ /** */
+ private Double[] doubleArr;
+
+ /**
+ * Required by {@link Externalizable}.
+ */
+ public ExternalizableTestObject2() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ ExternalizableTestObject2 obj = (ExternalizableTestObject2)o;
+
+ return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
+ doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
+ Arrays.equals(longArr, obj.longArr) &&
+ Arrays.equals(doubleArr, obj.doubleArr);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeLong(longVal);
+ U.writeArray(out, longArr);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ longVal = in.readLong();
+
+ Object[] arr = U.readArray(in);
+
+ longArr = Arrays.copyOf(arr, arr.length, Long[].class);
+ }
+ }
+
+ /**
+ * Test object.
+ */
+ private static class LinkTestObject1 implements Serializable {
+ /** */
+ private int val;
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ LinkTestObject1 obj = (LinkTestObject1)o;
+
+ return val == obj.val;
+ }
+ }
+
+ /**
+ * Test object.
+ */
+ private static class LinkTestObject2 implements Serializable {
+ /** */
+ private LinkTestObject1 ref;
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ LinkTestObject2 obj = (LinkTestObject2)o;
+
+ return ref != null ? ref.equals(obj.ref) : obj.ref == null;
+ }
+ }
+
+ /**
+ * Cycle link test object.
+ */
+ private static class CycleLinkTestObject implements Serializable {
+ /** */
+ private int val;
+
+ /** */
+ private CycleLinkTestObject ref;
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ CycleLinkTestObject obj = (CycleLinkTestObject)o;
+
+ return val == obj.val && ref != null ? ref.val == val : obj.ref == null;
+ }
+ }
+
+ /**
+ * Test object without default constructor.
+ */
+ private static class NoDefaultConstructorTestObject implements Serializable {
+ /** */
+ private int val;
+
+ /**
+ * @param val Value.
+ */
+ private NoDefaultConstructorTestObject(int val) {
+ this.val = val;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ NoDefaultConstructorTestObject obj = (NoDefaultConstructorTestObject)o;
+
+ return val == obj.val;
+ }
+ }
+
+ /**
+ * Test object with transient fields.
+ */
+ @SuppressWarnings("TransientFieldNotInitialized")
+ private static class TransientTestObject implements Serializable {
+ /** */
+ private int val1;
+
+ /** */
+ private transient int val2;
+
+ /** */
+ private String str1;
+
+ /** */
+ private transient String str2;
+
+ /**
+ * @param val1 Value 1.
+ * @param val2 Value 2.
+ * @param str1 String 1.
+ * @param str2 String 2.
+ */
+ private TransientTestObject(int val1, int val2, String str1, String str2) {
+ this.val1 = val1;
+ this.val2 = val2;
+ this.str1 = str1;
+ this.str2 = str2;
+ }
+ }
+
+ /**
+ * Test object with {@code writeObject} and {@code readObject} methods.
+ */
+ @SuppressWarnings("TransientFieldNotInitialized")
+ private static class WriteReadTestObject implements Serializable {
+ /** */
+ private int val;
+
+ /** */
+ private transient String str;
+
+ /**
+ * @param val Value.
+ * @param str String.
+ */
+ private WriteReadTestObject(int val, String str) {
+ this.val = val;
+ this.str = str;
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.defaultWriteObject();
+
+ out.writeUTF("Optional data");
+ }
+
+ /**
+ * @param in Input stream.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class not found.
+ */
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ in.defaultReadObject();
+
+ str = in.readUTF();
+ }
+ }
+
+ /**
+ * Test object that uses {@code writeFields} and {@code readFields} methods.
+ */
+ private static class WriteReadFieldsTestObject implements Serializable {
+ /** */
+ private int val;
+
+ /** */
+ private String str;
+
+ /**
+ * @param val Value.
+ * @param str String.
+ */
+ private WriteReadFieldsTestObject(int val, String str) {
+ this.val = val;
+ this.str = str;
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ ObjectOutputStream.PutField fields = out.putFields();
+
+ fields.put("val", val);
+ fields.put("str", "Optional data");
+
+ out.writeFields();
+ }
+
+ /**
+ * @param in Input stream.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class not found.
+ */
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ ObjectInputStream.GetField fields = in.readFields();
+
+ val = fields.get("val", 0);
+ str = (String)fields.get("str", null);
+ }
+ }
+
+ /**
+ * Test object that uses {@code writeFields} and {@code readFields} methods.
+ */
+ private static class WriteFieldsTestObject implements Serializable {
+ /** */
+ private int val;
+
+ /** */
+ @SuppressWarnings("UnusedDeclaration")
+ private String str;
+
+ /**
+ * @param val Value.
+ * @param str String.
+ */
+ private WriteFieldsTestObject(int val, String str) {
+ this.val = val;
+ this.str = str;
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ ObjectOutputStream.PutField fields = out.putFields();
+
+ fields.put("val", val);
+ fields.put("str", "Optional data");
+
+ out.writeFields();
+ }
+ }
+
+ /**
+ * Base object with {@code writeReplace} method.
+ */
+ private abstract static class ReplaceTestBaseObject implements Serializable {
+ /** */
+ private int val;
+
+ /**
+ * @param val Value.
+ */
+ private ReplaceTestBaseObject(int val) {
+ this.val = val;
+ }
+
+ /**
+ * @return Value.
+ */
+ public int value() {
+ return val;
+ }
+
+ /**
+ * @return Replaced object.
+ * @throws ObjectStreamException In case of error.
+ */
+ protected Object writeReplace() throws ObjectStreamException {
+ return new ReplaceTestObject(val * 2);
+ }
+ }
+
+ /**
+ * Test object for {@code writeReplace} method.
+ */
+ private static class ReplaceTestObject extends ReplaceTestBaseObject {
+ /**
+ * @param val Value.
+ */
+ private ReplaceTestObject(int val) {
+ super(val);
+ }
+ }
+
+ /**
+ * Test object with {@code writeReplace} method.
+ */
+ private static class ReplaceNullTestObject implements Serializable {
+ /**
+ * @return Replaced object.
+ * @throws ObjectStreamException In case of error.
+ */
+ protected Object writeReplace() throws ObjectStreamException {
+ return null;
+ }
+ }
+
+ /**
+ * Base object with {@code readResolve} method.
+ */
+ private abstract static class ResolveTestBaseObject implements Serializable {
+ /** */
+ private int val;
+
+ /**
+ * @param val Value.
+ */
+ private ResolveTestBaseObject(int val) {
+ this.val = val;
+ }
+
+ /**
+ * @return Value.
+ */
+ public int value() {
+ return val;
+ }
+
+ /**
+ * @return Replaced object.
+ * @throws ObjectStreamException In case of error.
+ */
+ protected Object readResolve() throws ObjectStreamException {
+ return new ResolveTestObject(val * 2);
+ }
+ }
+
+ /**
+ * Test object for {@code readResolve} method.
+ */
+ private static class ResolveTestObject extends ResolveTestBaseObject {
+ /**
+ * @param val Value.
+ */
+ private ResolveTestObject(int val) {
+ super(val);
+ }
+ }
+
+ /**
+ * Class A.
+ */
+ private static class A implements Serializable {
+ /** */
+ private int valA;
+
+ /** */
+ private transient String strA;
+
+ /**
+ * @param valA Value A.
+ * @param strA String A.
+ */
+ A(int valA, String strA) {
+ this.valA = valA;
+ this.strA = strA;
+ }
+
+ /**
+ * @return Value.
+ */
+ int valueA() {
+ return valA;
+ }
+
+ /**
+ * @return String.
+ */
+ String stringA() {
+ return strA;
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.defaultWriteObject();
+
+ out.writeUTF("Optional data");
+ }
+
+ /**
+ * @param in Input stream.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class not found.
+ */
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ in.defaultReadObject();
+
+ strA = in.readUTF();
+ }
+ }
+
+ /**
+ * Class B.
+ */
+ private static class B extends A {
+ /** */
+ private int valB;
+
+ /** */
+ @SuppressWarnings("TransientFieldNotInitialized")
+ private transient String strB;
+
+ /**
+ * @param valA Value A.
+ * @param strA String A.
+ * @param valB Value B.
+ * @param strB String B.
+ */
+ B(int valA, String strA, int valB, String strB) {
+ super(valA, strA);
+
+ this.valB = valB;
+ this.strB = strB;
+ }
+
+ /**
+ * @return Value.
+ */
+ int valueB() {
+ return valB;
+ }
+
+ /**
+ * @return String.
+ */
+ String stringB() {
+ return strB;
+ }
+ }
+
+ /**
+ * Class C.
+ */
+ @SuppressWarnings("MethodOverridesPrivateMethodOfSuperclass")
+ private static class C extends B {
+ /** */
+ @SuppressWarnings("InstanceVariableMayNotBeInitializedByReadObject")
+ private int valC;
+
+ /** */
+ private transient String strC;
+
+ /**
+ * @param valA Value A.
+ * @param strA String A.
+ * @param valB Value B.
+ * @param strB String B.
+ * @param valC Value C.
+ * @param strC String C.
+ */
+ C(int valA, String strA, int valB, String strB, int valC, String strC) {
+ super(valA, strA, valB, strB);
+
+ this.valC = valC;
+ this.strC = strC;
+ }
+
+ /**
+ * @return Value.
+ */
+ int valueC() {
+ return valC;
+ }
+
+ /**
+ * @return String.
+ */
+ String stringC() {
+ return strC;
+ }
+
+ /**
+ * @param out Output stream.
+ * @throws IOException In case of error.
+ */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ out.writeUTF("Optional data");
+ }
+
+ /**
+ * @param in Input stream.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class not found.
+ */
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ strC = in.readUTF();
+ }
+ }
+
+ /**
+ * Complex test object.
+ */
+ private static class ComplexTestObject implements Serializable {
+ /** */
+ private byte byteVal1;
+
+ /** */
+ private short shortVal1;
+
+ /** */
+ private int intVal1;
+
+ /** */
+ private long longVal1;
+
+ /** */
+ private float floatVal1;
+
+ /** */
+ private double doubleVal1;
+
+ /** */
+ private char cVal1;
+
+ /** */
+ private boolean boolVal1;
+
+ /** */
+ private Byte byteVal2;
+
+ /** */
+ private Short shortVal2;
+
+ /** */
+ private Integer intVal2;
+
+ /** */
+ private Long longVal2;
+
+ /** */
+ private Float floatVal2;
+
+ /** */
+ private Double doubleVal2;
+
+ /** */
+ private Character cVal2;
+
+ /** */
+ private Boolean boolVal2;
+
+ /** */
+ private byte[] byteArr;
+
+ /** */
+ private short[] shortArr;
+
+ /** */
+ private int[] intArr;
+
+ /** */
+ private long[] longArr;
+
+ /** */
+ private float[] floatArr;
+
+ /** */
+ private double[] doubleArr;
+
+ /** */
+ private char[] cArr;
+
+ /** */
+ private boolean[] boolArr;
+
+ /** */
+ private ExternalizableTestObject1[] objArr;
+
+ /** */
+ private String str;
+
+ /** */
+ private TestEnum enumVal;
+
+ /** */
+ private UUID uuid;
+
+ /** */
+ private Properties props;
+
+ /** */
+ private ArrayList<Integer> arrList;
+
+ /** */
+ private HashMap<Integer, String> hashMap;
+
+ /** */
+ private HashSet<Integer> hashSet;
+
+ /** */
+ private LinkedList<Integer> linkedList;
+
+ /** */
+ private LinkedHashMap<Integer, String> linkedHashMap;
+
+ /** */
+ private LinkedHashSet<Integer> linkedHashSet;
+
+ /** */
+ private Date date;
+
+ /** */
+ private Class<?> cls;
+
+ /** */
+ private ComplexTestObject self;
+
+ /** */
+ private ComplexTestObject() {
+ self = this;
+ }
+
+ /**
+ * @param byteVal1 Byte value.
+ * @param shortVal1 Short value.
+ * @param intVal1 Integer value.
+ * @param longVal1 Long value.
+ * @param floatVal1 Float value.
+ * @param doubleVal1 Double value.
+ * @param cVal1 Char value.
+ * @param boolVal1 Boolean value.
+ * @param byteVal2 Byte value.
+ * @param shortVal2 Short value.
+ * @param intVal2 Integer value.
+ * @param longVal2 Long value.
+ * @param floatVal2 Float value.
+ * @param doubleVal2 Double value.
+ * @param cVal2 Char value.
+ * @param boolVal2 Boolean value.
+ * @param byteArr Bytes array.
+ * @param shortArr Shorts array.
+ * @param intArr Integers array.
+ * @param longArr Longs array.
+ * @param floatArr Floats array.
+ * @param doubleArr Doubles array.
+ * @param cArr Chars array.
+ * @param boolArr Booleans array.
+ * @param objArr Objects array.
+ * @param str String.
+ * @param enumVal Enum.
+ * @param uuid UUID.
+ * @param props Properties.
+ * @param arrList ArrayList.
+ * @param hashMap HashMap.
+ * @param hashSet HashSet.
+ * @param linkedList LinkedList.
+ * @param linkedHashMap LinkedHashMap.
+ * @param linkedHashSet LinkedHashSet.
+ * @param date Date.
+ * @param cls Class.
+ */
+ private ComplexTestObject(byte byteVal1, short shortVal1, int intVal1, long longVal1, float floatVal1,
+ double doubleVal1, char cVal1, boolean boolVal1, Byte byteVal2, Short shortVal2, Integer intVal2,
+ Long longVal2, Float floatVal2, Double doubleVal2, Character cVal2, Boolean boolVal2, byte[] byteArr,
+ short[] shortArr, int[] intArr, long[] longArr, float[] floatArr, double[] doubleArr, char[] cArr,
+ boolean[] boolArr, ExternalizableTestObject1[] objArr, String str, TestEnum enumVal, UUID uuid,
+ Properties props, ArrayList<Integer> arrList, HashMap<Integer, String> hashMap, HashSet<Integer> hashSet,
+ LinkedList<Integer> linkedList, LinkedHashMap<Integer, String> linkedHashMap,
+ LinkedHashSet<Integer> linkedHashSet, Date date, Class<?> cls) {
+ this.byteVal1 = byteVal1;
+ this.shortVal1 = shortVal1;
+ this.intVal1 = intVal1;
+ this.longVal1 = longVal1;
+ this.floatVal1 = floatVal1;
+ this.doubleVal1 = doubleVal1;
+ this.cVal1 = cVal1;
+ this.boolVal1 = boolVal1;
+ this.byteVal2 = byteVal2;
+ this.shortVal2 = shortVal2;
+ this.intVal2 = intVal2;
+ this.longVal2 = longVal2;
+ this.floatVal2 = floatVal2;
+ this.doubleVal2 = doubleVal2;
+ this.cVal2 = cVal2;
+ this.boolVal2 = boolVal2;
+ this.byteArr = byteArr;
+ this.shortArr = shortArr;
+ this.intArr = intArr;
+ this.longArr = longArr;
+ this.floatArr = floatArr;
+ this.doubleArr = doubleArr;
+ this.cArr = cArr;
+ this.boolArr = boolArr;
+ this.objArr = objArr;
+ this.str = str;
+ this.enumVal = enumVal;
+ this.uuid = uuid;
+ this.props = props;
+ this.arrList = arrList;
+ this.hashMap = hashMap;
+ this.hashSet = hashSet;
+ this.linkedList = linkedList;
+ this.linkedHashMap = linkedHashMap;
+ this.linkedHashSet = linkedHashSet;
+ this.date = date;
+ this.cls = cls;
+
+ self = this;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("RedundantIfStatement")
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ ComplexTestObject obj = (ComplexTestObject)o;
+
+ if (boolVal1 != obj.boolVal1)
+ return false;
+
+ if (byteVal1 != obj.byteVal1)
+ return false;
+
+ if (cVal1 != obj.cVal1)
+ return false;
+
+ if (Double.compare(obj.doubleVal1, doubleVal1) != 0)
+ return false;
+
+ if (Float.compare(obj.floatVal1, floatVal1) != 0)
+ return false;
+
+ if (intVal1 != obj.intVal1)
+ return false;
+
+ if (longVal1 != obj.longVal1)
+ return false;
+
+ if (shortVal1 != obj.shortVal1)
+ return false;
+
+ if (arrList != null ? !arrList.equals(obj.arrList) : obj.arrList != null)
+ return false;
+
+ if (!Arrays.equals(boolArr, obj.boolArr))
+ return false;
+
+ if (boolVal2 != null ? !boolVal2.equals(obj.boolVal2) : obj.boolVal2 != null)
+ return false;
+
+ if (!Arrays.equals(byteArr, obj.byteArr))
+ return false;
+
+ if (byteVal2 != null ? !byteVal2.equals(obj.byteVal2) : obj.byteVal2 != null)
+ return false;
+
+ if (!Arrays.equals(cArr, obj.cArr))
+ return false;
+
+ if (cVal2 != null ? !cVal2.equals(obj.cVal2) : obj.cVal2 != null)
+ return false;
+
+ if (cls != null ? !cls.equals(obj.cls) : obj.cls != null)
+ return false;
+
+ if (date != null ? !date.equals(obj.date) : obj.date != null)
+ return false;
+
+ if (!Arrays.equals(doubleArr, obj.doubleArr))
+ return false;
+
+ if (doubleVal2 != null ? !doubleVal2.equals(obj.doubleVal2) : obj.doubleVal2 != null)
+ return false;
+
+ if (enumVal != obj.enumVal)
+ return false;
+
+ if (!Arrays.equals(floatArr, obj.floatArr))
+ return false;
+
+ if (floatVal2 != null ? !floatVal2.equals(obj.floatVal2) : obj.floatVal2 != null)
+ return false;
+
+ if (hashMap != null ? !hashMap.equals(obj.hashMap) : obj.hashMap != null)
+ return false;
+
+ if (hashSet != null ? !hashSet.equals(obj.hashSet) : obj.hashSet != null)
+ return false;
+
+ if (!Arrays.equals(intArr, obj.intArr))
+ return false;
+
+ if (intVal2 != null ? !intVal2.equals(obj.intVal2) : obj.intVal2 != null)
+ return false;
+
+ if (linkedHashMap != null ? !linkedHashMap.equals(obj.linkedHashMap) : obj.linkedHashMap != null)
+ return false;
+
+ if (linkedHashSet != null ? !linkedHashSet.equals(obj.linkedHashSet) : obj.linkedHashSet != null)
+ return false;
+
+ if (linkedList != null ? !linkedList.equals(obj.linkedList) : obj.linkedList != null)
+ return false;
+
+ if (!Arrays.equals(longArr, obj.longArr))
+ return false;
+
+ if (longVal2 != null ? !longVal2.equals(obj.longVal2) : obj.longVal2 != null)
+ return false;
+
+ if (!Arrays.equals(objArr, obj.objArr))
+ return false;
+
+ if (props != null ? !props.equals(obj.props) : obj.props != null)
+ return false;
+
+ if (!Arrays.equals(shortArr, obj.shortArr))
+ return false;
+
+ if (shortVal2 != null ? !shortVal2.equals(obj.shortVal2) : obj.shortVal2 != null)
+ return false;
+
+ if (str != null ? !str.equals(obj.str) : obj.str != null)
+ return false;
+
+ if (uuid != null ? !uuid.equals(obj.uuid) : obj.uuid != null)
+ return false;
+
+ if (self != this)
+ return false;
+
+ return true;
+ }
+ }
+
+ /**
+ * Test enum.
+ */
+ @SuppressWarnings("JavaDoc")
+ private enum TestEnum {
+ /** */
+ A,
+
+ /** */
+ B,
+
+ /** */
+ C
+ }
+
+ /**
+ * Class with custom serialization method which at the beginning invokes
+ * {@link ObjectOutputStream#defaultWriteObject()} and {@link ObjectOutputStream#putFields()} then.
+ */
+ public static class CustomWriteObjectMethodObject implements Serializable {
+ /** */
+ private final String name;
+
+ /**
+ * Creates new instance.
+ * @param name Object name.
+ */
+ public CustomWriteObjectMethodObject(String name) {
+ this.name = name;
+ }
+
+ /** {@inheritDoc} */
+ private void writeObject(ObjectOutputStream stream) throws IOException {
+ stream.defaultWriteObject();
+
+ ObjectOutputStream.PutField fields = stream.putFields();
+ fields.put("name", "test");
+
+ stream.writeFields();
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
new file mode 100644
index 0000000..fcf1750
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.net.InetSocketAddress;
+import java.util.Collection;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
+
+/**
+ * Test TCP discovery IP finder adapter.
+ */
+public class TestTcpDiscoveryIpFinderAdapter extends TcpDiscoveryIpFinderAdapter {
+ /** {@inheritDoc} */
+ @Override public Collection<InetSocketAddress> getRegisteredAddresses() throws IgniteSpiException {
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void registerAddresses(Collection<InetSocketAddress> addrs) throws IgniteSpiException {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void unregisterAddresses(Collection<InetSocketAddress> addrs) throws IgniteSpiException {
+ // No-op.
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/package-info.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
new file mode 100644
index 0000000..d255fac
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Optimized marchalling test package.
+ */
+package org.apache.ignite.internal.marshaller.optimized;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
index 6f65545..be039e4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStartupInDeploymentModesTest.java
@@ -24,7 +24,6 @@ import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
@@ -73,26 +72,6 @@ public class CacheStartupInDeploymentModesTest extends GridCommonAbstractTest {
/**
* @throws Exception If fail.
*/
- public void testFailedInIsolatedMode() throws Exception {
- deploymentMode = DeploymentMode.ISOLATED;
- marshaller = new OptimizedMarshaller();
-
- doCheckFailed();
- }
-
- /**
- * @throws Exception If fail.
- */
- public void testFailedInPrivateMode() throws Exception {
- deploymentMode = DeploymentMode.PRIVATE;
- marshaller = new OptimizedMarshaller();
-
- doCheckFailed();
- }
-
- /**
- * @throws Exception If fail.
- */
public void testStartedInIsolatedMode() throws Exception {
deploymentMode = DeploymentMode.ISOLATED;
marshaller = new BinaryMarshaller();
@@ -133,22 +112,6 @@ public class CacheStartupInDeploymentModesTest extends GridCommonAbstractTest {
}
/**
- * @throws Exception If failed.
- */
- private void doCheckFailed() throws Exception {
- try {
- startGridsMultiThreaded(2);
- }
- catch (Exception e) {
- assert e.getMessage().contains("Cache can be started in PRIVATE or ISOLATED deployment mode only ");
-
- return;
- }
-
- fail("Unexpected start of the caches!");
- }
-
- /**
* @param cache IgniteCache
*/
private void checkPutCache(IgniteCache cache) {
@@ -224,6 +187,5 @@ public class CacheStartupInDeploymentModesTest extends GridCommonAbstractTest {
", name='" + name + '\'' +
'}';
}
-
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
index 452aa21..c086c35 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheEntryMemorySizeSelfTest.java
@@ -28,12 +28,12 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContext;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
index 73d01fe..da1a395 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java
@@ -35,10 +35,10 @@ import org.apache.ignite.cache.store.CacheStoreAdapter;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.extras.GridCacheObsoleteEntryExtras;
import org.apache.ignite.internal.processors.cache.store.CacheLocalStore;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
index 8179dc5..45db0bb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheVersionSelfTest.java
@@ -18,10 +18,10 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java
index d4e4269..46669ac 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheAffinityEarlyTest.java
@@ -29,7 +29,7 @@ import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -66,10 +66,7 @@ public class CacheAffinityEarlyTest extends GridCommonAbstractTest {
cfg.setDiscoverySpi(discoSpi);
- OptimizedMarshaller marsh = new OptimizedMarshaller();
- marsh.setRequireSerializable(false);
-
- cfg.setMarshaller(marsh);
+ cfg.setMarshaller(new BinaryMarshaller());
return cfg;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
index 78cb817..1b2ed1b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetFutureHangsSelfTest.java
@@ -30,9 +30,9 @@ import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -67,10 +67,7 @@ public class CacheGetFutureHangsSelfTest extends GridCommonAbstractTest {
((TcpCommunicationSpi)cfg.getCommunicationSpi()).setSharedMemoryPort(-1);
- OptimizedMarshaller marsh = new OptimizedMarshaller();
- marsh.setRequireSerializable(false);
-
- cfg.setMarshaller(marsh);
+ cfg.setMarshaller(new BinaryMarshaller());
CacheConfiguration ccfg = defaultCacheConfiguration();
ccfg.setCacheMode(CacheMode.PARTITIONED);
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
index 0ba2228..3b7fa4f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutMultiNodeSelfTest.java
@@ -29,7 +29,7 @@ import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
index 97bd202..42d6a12 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
@@ -26,8 +26,8 @@ import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
index f1c791e..e4624d5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxForceKeyTest.java
@@ -22,7 +22,7 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
index b462417..3d5e008 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
@@ -30,7 +30,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -83,7 +83,7 @@ public class CacheEntryProcessorNonSerializableTest extends GridCommonAbstractTe
((TcpCommunicationSpi)cfg.getCommunicationSpi()).setSharedMemoryPort(-1);
cfg.setClientMode(client);
- cfg.setMarshaller(new OptimizedMarshaller());
+ cfg.setMarshaller(new BinaryMarshaller());
return cfg;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
index 6a2af15..8886f57 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
@@ -47,6 +47,7 @@ import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
@@ -54,7 +55,6 @@ import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
index b2b87dc..435ff15 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfoSelfTest.java
@@ -17,17 +17,16 @@
package org.apache.ignite.internal.processors.igfs;
+import java.io.Externalizable;
+import java.util.Random;
+import java.util.concurrent.Callable;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.jetbrains.annotations.Nullable;
-import java.io.Externalizable;
-import java.util.Random;
-import java.util.concurrent.Callable;
-
/**
* {@link IgfsEntryInfo} test case.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
index 3119f2d..c1af323 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
@@ -27,10 +27,10 @@ import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cluster.ClusterGroup;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteCallable;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.resources.LoggerResource;
import org.apache.ignite.services.Service;
@@ -59,7 +59,7 @@ public class ClosureServiceClientsNodesTest extends GridCommonAbstractTest {
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
- cfg.setMarshaller(new OptimizedMarshaller(false));
+ cfg.setMarshaller(new BinaryMarshaller());
cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder).setForceServerMode(true));
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
index f2988cc..b0cdf1f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeployment2ClassLoadersOptimizedMarshallerTest.java
@@ -16,8 +16,8 @@
*/
package org.apache.ignite.internal.processors.service;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
/**
* Tests that not all nodes in cluster need user's service definition (only nodes according to filter).
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
index cb0c911..d021517 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/IgniteServiceDeploymentClassLoadingOptimizedMarshallerTest.java
@@ -16,8 +16,8 @@
*/
package org.apache.ignite.internal.processors.service;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
/**
* Tests that not all nodes in cluster need user's service definition (only nodes according to filter).
[05/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
index 6591776..2345dd6 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
@@ -22,15 +22,15 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_SERVICES_COMPATIBILITY_MODE;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
import static org.apache.ignite.configuration.DeploymentMode.CONTINUOUS;
import static org.apache.ignite.configuration.DeploymentMode.SHARED;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
new file mode 100644
index 0000000..c7a58f7
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import junit.framework.TestCase;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.testframework.junits.GridTestKernalContext;
+import org.apache.ignite.testframework.junits.logger.GridTestLog4jLogger;
+
+/**
+ *
+ */
+public class OptimizedMarshallerEnumSelfTest extends TestCase {
+
+ private String igniteHome = System.getProperty("user.dir");
+
+ private final IgniteLogger rootLog = new GridTestLog4jLogger(false);
+ /**
+ * @throws Exception If failed.
+ */
+ public void testEnumSerialisation() throws Exception {
+ OptimizedMarshaller marsh = new OptimizedMarshaller();
+
+ MarshallerContextTestImpl context = new MarshallerContextTestImpl();
+
+ context.onMarshallerProcessorStarted(newContext(), null);
+
+ marsh.setContext(context);
+
+ byte[] bytes = marsh.marshal(TestEnum.Bond);
+
+ TestEnum unmarshalled = marsh.unmarshal(bytes, Thread.currentThread().getContextClassLoader());
+
+ assertEquals(TestEnum.Bond, unmarshalled);
+ assertEquals(TestEnum.Bond.desc, unmarshalled.desc);
+ }
+
+ private GridKernalContext newContext() throws IgniteCheckedException {
+ IgniteConfiguration cfg = new IgniteConfiguration();
+
+ cfg.setIgniteHome(igniteHome);
+ cfg.setClientMode(false);
+
+ return new GridTestKernalContext(rootLog.getLogger(OptimizedMarshallerEnumSelfTest.class), cfg);
+ }
+
+ private enum TestEnum {
+ Equity("Equity") {
+ @Override public String getTestString() {
+ return "eee";
+ }
+ },
+
+ Bond("Bond") {
+ @Override public String getTestString() {
+ return "qqq";
+ }
+ };
+
+ public final String desc;
+
+ TestEnum(String desc) {
+ this.desc = desc;
+ }
+
+ public abstract String getTestString();
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
new file mode 100644
index 0000000..077447c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
@@ -0,0 +1,357 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
+
+/**
+ *
+ */
+public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest {
+ /** */
+ private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** */
+ private boolean cache;
+
+ /** */
+ private String workDir;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+ disco.setIpFinder(ipFinder);
+
+ cfg.setDiscoverySpi(disco);
+
+ cfg.setMarshaller(new OptimizedMarshaller());
+
+ cfg.setWorkDirectory(workDir);
+
+ if (cache) {
+ CacheConfiguration ccfg = new CacheConfiguration();
+
+ ccfg.setCacheMode(PARTITIONED);
+ ccfg.setBackups(1);
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+
+ cfg.setCacheConfiguration(ccfg);
+ }
+ else
+ cfg.setClientMode(true);
+
+ return cfg;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClassCacheUpdateFailover1() throws Exception {
+ classCacheUpdateFailover(false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClassCacheUpdateFailover2() throws Exception {
+ classCacheUpdateFailover(true);
+ }
+
+ /**
+ * @param stopSrv If {@code true} restarts server node, otherwise client node.
+ * @throws Exception If failed.
+ */
+ private void classCacheUpdateFailover(boolean stopSrv) throws Exception {
+ cache = true;
+
+ startGridsMultiThreaded(2);
+
+ cache = stopSrv;
+
+ IgniteCache<Integer, Object> cache0 = ignite(0).cache(null);
+
+ for (int i = 0; i < 20; i++) {
+ log.info("Iteration: " + i);
+
+ Map<Integer, Object> map = new HashMap<>();
+
+ for (int j = 0; j < 10_000; j++)
+ map.put(j, create(i + 1));
+
+ final Ignite ignite = startGrid(2);
+
+ IgniteInternalFuture fut = GridTestUtils.runAsync(new Callable() {
+ @Override public Object call() throws Exception {
+ ignite.close();
+
+ return null;
+ }
+ });
+
+ cache0.putAll(map);
+
+ fut.get();
+ }
+
+ cache = true;
+
+ Ignite ignite = startGrid(2); // Check can start one more cache node.
+
+ assertNotNull(ignite.cache(null));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testRestartAllNodes() throws Exception {
+ cache = true;
+
+ String home = U.getIgniteHome();
+
+ String[] workDirs = new String[3];
+
+ for (int i = 0; i < 3; i++) {
+ workDirs[i] = home + "/work/marshallerTestNode_" + i;
+
+ File file = new File(workDirs[i]);
+
+ if (file.exists())
+ assert U.delete(file);
+ }
+
+ try {
+ for (int i = 0; i < workDirs.length; i++) {
+ workDir = workDirs[i];
+
+ startGrid(i);
+ }
+
+ Marshaller marsh = ignite(0).configuration().getMarshaller();
+
+ TestClass1 obj = new TestClass1();
+
+ obj.val = 111;
+
+ byte[] bytes = marsh.marshal(obj);
+
+ stopAllGrids();
+
+ for (int i = 0; i < workDirs.length; i++) {
+ workDir = workDirs[i];
+
+ startGrid(i);
+ }
+
+ for (int i = 0; i < 3; i++) {
+ marsh = ignite(i).configuration().getMarshaller();
+
+ TestClass1 obj0 = marsh.unmarshal(bytes, null);
+
+ assertEquals(111, obj0.val);
+ }
+ }
+ finally {
+ for (String dir : workDirs)
+ assert U.delete(new File(dir));
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ stopAllGrids();
+ }
+
+ /**
+ * @param id Class ID.
+ * @return Test class instance.
+ */
+ private static Object create(int id) {
+ switch (id) {
+ case 1: return new TestClass1();
+
+ case 2: return new TestClass2();
+
+ case 3: return new TestClass3();
+
+ case 4: return new TestClass4();
+
+ case 5: return new TestClass5();
+
+ case 6: return new TestClass6();
+
+ case 7: return new TestClass7();
+
+ case 8: return new TestClass8();
+
+ case 9: return new TestClass9();
+
+ case 10: return new TestClass10();
+
+ case 11: return new TestClass11();
+
+ case 12: return new TestClass12();
+
+ case 13: return new TestClass13();
+
+ case 14: return new TestClass14();
+
+ case 15: return new TestClass15();
+
+ case 16: return new TestClass16();
+
+ case 17: return new TestClass17();
+
+ case 18: return new TestClass18();
+
+ case 19: return new TestClass19();
+
+ case 20: return new TestClass20();
+ }
+
+ fail();
+
+ return null;
+ }
+
+ /**
+ *
+ */
+ static class TestClass1 implements Serializable {
+ /** */
+ int val;
+ }
+
+ /**
+ *
+ */
+ static class TestClass2 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass3 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass4 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass5 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass6 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass7 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass8 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass9 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass10 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass11 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass12 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass13 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass14 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass15 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass16 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass17 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass18 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass19 implements Serializable {}
+
+ /**
+ *
+ */
+ static class TestClass20 implements Serializable {}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
new file mode 100644
index 0000000..276f67e
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.testframework.junits.common.GridCommonTest;
+
+/**
+ * Optimized marshaller self test.
+ */
+@GridCommonTest(group = "Marshaller")
+public class OptimizedMarshallerPooledSelfTest extends OptimizedMarshallerSelfTest {
+ /** {@inheritDoc} */
+ @Override protected Marshaller marshaller() {
+ OptimizedMarshaller m = new OptimizedMarshaller(false);
+
+ m.setPoolSize(8);
+
+ return m;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ // Reset static registry.
+ new OptimizedMarshaller().setPoolSize(0);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
new file mode 100644
index 0000000..1653693
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSelfTest.java
@@ -0,0 +1,283 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.concurrent.Callable;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonTest;
+
+/**
+ * Optimized marshaller self test.
+ */
+@GridCommonTest(group = "Marshaller")
+public class OptimizedMarshallerSelfTest extends GridMarshallerAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected Marshaller marshaller() {
+ return new OptimizedMarshaller(false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testTestMarshalling() throws Exception {
+ final String msg = "PASSED";
+
+ byte[] buf = marshal(new IgniteRunnable() {
+ @Override public void run() {
+ c1.apply(msg);
+ c2.apply(msg);
+
+ c3.apply();
+ c4.reduce();
+
+ System.out.println("Test message: " + msg);
+ }
+ });
+
+ Runnable r = unmarshal(buf);
+
+ assertNotNull(r);
+
+ r.run();
+ }
+
+ /**
+ * Tests marshal self-linked object.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testMarshallingSelfLink() throws IgniteCheckedException {
+ SelfLink sl = new SelfLink("a string 1");
+
+ sl.link(sl);
+
+ SelfLink sl1 = unmarshal(marshal(sl));
+
+ assert sl1.link() == sl1;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testInvalid() throws Exception {
+ GridTestUtils.assertThrows(
+ log,
+ new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ byte[] arr = new byte[10];
+
+ arr[0] = (byte)200;
+
+ unmarshal(arr);
+
+ return null;
+ }
+ },
+ IgniteCheckedException.class,
+ null
+ );
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNested() throws Exception {
+ NestedTestObject obj = new NestedTestObject("String", 100);
+
+ NestedTestObject newObj = unmarshal(marshal(obj));
+
+ assertEquals("String", newObj.str);
+ assertEquals(100, newObj.val);
+ }
+
+ /**
+ * Class for nested execution test.
+ */
+ private static class NestedTestObject implements Serializable {
+ /** */
+ private String str;
+
+ /** */
+ private int val;
+
+ /**
+ * @param str String.
+ * @param val Value.
+ */
+ private NestedTestObject(String str, int val) {
+ this.str = str;
+ this.val = val;
+ }
+
+ /** {@inheritDoc} */
+ private void writeObject(ObjectOutputStream out) throws IOException {
+ try {
+ byte[] arr = marshal(str);
+
+ out.writeInt(arr.length);
+ out.write(arr);
+
+ out.writeInt(val);
+ }
+ catch (IgniteCheckedException e) {
+ throw new IOException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("UnusedParameters")
+ private void readObject(ObjectInputStream in) throws IOException {
+ try {
+ byte[] arr = new byte[in.readInt()];
+
+ in.read(arr);
+
+ str = unmarshal(arr);
+
+ val = in.readInt();
+ }
+ catch (IgniteCheckedException e) {
+ throw new IOException(e);
+ }
+ }
+ }
+
+ /** */
+ private static class TestObject2 {
+ /** */
+ private final int i;
+
+ /**
+ * Constructor for TestObject2 instances.
+ *
+ * @param i Integer value to hold.
+ */
+ private TestObject2(int i) {
+ this.i = i;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ return i == ((TestObject2)o).i;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return i;
+ }
+ }
+
+ /**
+ * Static nested class.
+ */
+ private static class TestObject {
+ /** */
+ private final TestObject2 o2;
+
+ /** The only meaningful field in the class, used for {@link #equals(Object o)} and {@link #hashCode()}. */
+ private final String str;
+
+ /**
+ * @param str String to hold.
+ * @param i Integer.
+ */
+ TestObject(String str, int i) {
+ this.str = str;
+
+ o2 = new TestObject2(i);
+ }
+
+ /**
+ * Method for accessing value of the hold string after the object is created.
+ *
+ * @return Wrapped string.
+ */
+ public String string() {
+ return str;
+ }
+
+ /**
+ * @return Object held in this wrapped.
+ */
+ public TestObject2 obj() {
+ return o2;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return 31 * o2.hashCode() + str.hashCode();
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("RedundantIfStatement")
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ TestObject obj = (TestObject)o;
+
+ if (o2 != null ? !o2.equals(obj.o2) : obj.o2 != null)
+ return false;
+
+ if (str != null ? !str.equals(obj.str) : obj.str != null)
+ return false;
+
+ return true;
+ }
+ }
+
+ /**
+ * Static nested class.
+ */
+ private static class SelfLink extends TestObject {
+ /** */
+ private SelfLink link;
+
+ /**
+ * @param str String to hold.
+ */
+ SelfLink(String str) {
+ super(str, 1);
+ }
+
+ /**
+ * @return The object this link points to,.
+ */
+ public SelfLink link() {
+ return link;
+ }
+
+ /**
+ * @param link The object this link should points to,
+ */
+ public void link(SelfLink link) {
+ this.link = link;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
new file mode 100644
index 0000000..0a9b6ce
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamField;
+import java.io.Serializable;
+import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
+import org.apache.ignite.marshaller.Marshaller;
+
+/**
+ * Test that Optimized Marshaller works with classes with serialPersistentFields.
+ */
+public class OptimizedMarshallerSerialPersistentFieldsSelfTest extends GridMarshallerAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected Marshaller marshaller() {
+ return new OptimizedMarshaller(false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testOptimizedMarshaller() throws Exception {
+ unmarshal(marshal(new TestClass()));
+
+ TestClass2 val = unmarshal(marshal(new TestClass2()));
+
+ assertNull(val.field3);
+ }
+
+ /**
+ * Test class with serialPersistentFields fields.
+ */
+ private static class TestClass implements Serializable {
+ private static final long serialVersionUID = 0L;
+
+ /** For serialization compatibility. */
+ private static final ObjectStreamField[] serialPersistentFields = {
+ new ObjectStreamField("field1", Integer.TYPE),
+ new ObjectStreamField("field2", Integer.TYPE)
+ };
+
+ /**
+ * @param s Object output stream.
+ */
+ private void writeObject(ObjectOutputStream s) throws IOException {
+ s.putFields().put("field1", 1);
+ s.putFields().put("field2", 2);
+ s.writeFields();
+
+ s.writeObject(null);
+ }
+
+ /**
+ * @param s Object input stream.
+ */
+ private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
+ s.defaultReadObject();
+
+ s.readObject();
+ }
+ }
+
+ /**
+ * Test class with serialPersistentFields fields.
+ */
+ private static class TestClass2 implements Serializable {
+ private static final long serialVersionUID = 0L;
+
+ private Integer field3 = 1;
+
+ /** For serialization compatibility. */
+ private static final ObjectStreamField[] serialPersistentFields = {
+ new ObjectStreamField("field1", Integer.TYPE),
+ new ObjectStreamField("field2", Integer.TYPE)
+ };
+
+ /**
+ * @param s Object output stream.
+ */
+ private void writeObject(ObjectOutputStream s) throws IOException {
+ s.putFields().put("field1", 1);
+ s.putFields().put("field2", 2);
+ s.writeFields();
+
+ s.writeObject(null);
+ }
+
+ /**
+ * @param s Object input stream.
+ */
+ private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
+ s.defaultReadObject();
+
+ s.readObject();
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
new file mode 100644
index 0000000..2698042
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerTest.java
@@ -0,0 +1,790 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.compute.ComputeJobAdapter;
+import org.apache.ignite.compute.ComputeTask;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.GridMarshallerTestInheritedBean;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.marshaller.MarshallerContextTestImpl;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+public class OptimizedMarshallerTest extends GridCommonAbstractTest {
+ /**
+ * @return Marshaller.
+ */
+ private OptimizedMarshaller marshaller() {
+ U.clearClassCache();
+
+ OptimizedMarshaller marsh = new OptimizedMarshaller();
+
+ marsh.setContext(new MarshallerContextTestImpl());
+
+ return marsh;
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ NonSerializable outObj = marsh.unmarshal(marsh.marshal(new NonSerializable(null)), null);
+
+ outObj.checkAfterUnmarshalled();
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable1() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ byte[] bytes = marsh.marshal(new TcpDiscoveryVmIpFinder());
+
+ TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null);
+
+ assertFalse(ipFinder.isShared());
+
+ ipFinder = marsh.unmarshal(marsh.marshal(new TcpDiscoveryVmIpFinder(true)), null);
+
+ assertTrue(ipFinder.isShared());
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable2() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ TcpDiscoveryIpFinderAdapter ipFinder = new TcpDiscoveryIpFinderAdapter() {
+ @Override public Collection<InetSocketAddress> getRegisteredAddresses() {
+ return null;
+ }
+
+ @Override public void registerAddresses(Collection<InetSocketAddress> addrs) {
+ //No-op.
+ }
+
+ @Override public void unregisterAddresses(Collection<InetSocketAddress> addrs) {
+ //No-op.
+ }
+ };
+
+ ipFinder.setShared(false);
+
+ byte[] bytes = marsh.marshal(ipFinder);
+
+ ipFinder = marsh.unmarshal(bytes, null);
+
+ assertFalse(ipFinder.isShared());
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable3() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ byte[] bytes = marsh.marshal(new TestTcpDiscoveryIpFinderAdapter());
+
+ TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null);
+
+ assertFalse(ipFinder.isShared());
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable4() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ byte[] bytes = marsh.marshal(new GridMarshallerTestInheritedBean());
+
+ info(Arrays.toString(bytes));
+
+ GridMarshallerTestInheritedBean bean = marsh.unmarshal(bytes, null);
+
+ assertTrue(bean.isFlag());
+ }
+
+ /**
+ * Tests ability to marshal non-serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testNonSerializable5() throws IgniteCheckedException {
+ Marshaller marsh = marshaller();
+
+ byte[] bytes = marsh.marshal(true);
+
+ Boolean val = marsh.unmarshal(bytes, null);
+
+ assertTrue(val);
+ }
+
+ /**
+ * Tests ability to marshal serializable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testSerializable() throws IgniteCheckedException {
+ Marshaller marsh = marshaller();
+
+ SomeSerializable outObj = marsh.unmarshal(marsh.marshal(new SomeSerializable(null)), null);
+
+ outObj.checkAfterUnmarshalled();
+ }
+
+ /**
+ * @throws IgniteCheckedException If failed.
+ */
+ public void testSerializableAfterChangingValue() throws IgniteCheckedException {
+ Marshaller marsh = marshaller();
+
+ SomeSimpleSerializable newObj = new SomeSimpleSerializable();
+
+ assert(newObj.flag);
+
+ newObj.setFlagValue(false);
+
+ assert(! newObj.flag);
+
+ SomeSimpleSerializable outObj = marsh.unmarshal(marsh.marshal(newObj), null);
+
+ assert (! outObj.flag);
+ }
+
+ /**
+ * Tests ability to marshal externalizable objects.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testExternalizable() throws IgniteCheckedException {
+ Marshaller marsh = marshaller();
+
+ ExternalizableA outObj = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, true)), null);
+ ExternalizableA outObj1 = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, false)), null);
+
+ assertNotNull(outObj);
+ assertNotNull(outObj1);
+ }
+
+ /**
+ * Tests {@link OptimizedMarshaller#setRequireSerializable(boolean)}.
+ */
+ public void testRequireSerializable() {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(true);
+
+ try {
+ marsh.marshal(new NonSerializable(null));
+
+ fail();
+ }
+ catch (IgniteCheckedException ignore) {
+ // No-op.
+ }
+ }
+
+ /**
+ * Tests {@link Proxy}.
+ *
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public void testProxy() throws IgniteCheckedException {
+ OptimizedMarshaller marsh = marshaller();
+
+ marsh.setRequireSerializable(false);
+
+ SomeItf inItf = (SomeItf)Proxy.newProxyInstance(
+ OptimizedMarshallerTest.class.getClassLoader(), new Class[] {SomeItf.class},
+ new InvocationHandler() {
+ private NonSerializable obj = new NonSerializable(null);
+
+ @Override public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable {
+ obj.checkAfterUnmarshalled();
+
+ return 17;
+ }
+ }
+ );
+
+ SomeItf outItf = marsh.unmarshal(marsh.marshal(inItf), null);
+
+ assertEquals(outItf.checkAfterUnmarshalled(), 17);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDescriptorCache() throws Exception {
+ try {
+ Ignite ignite = startGridsMultiThreaded(2);
+
+ String taskClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask";
+ String jobClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask$SingleSplitTestJob";
+
+ ClassLoader ldr = getExternalClassLoader();
+
+ Class<? extends ComputeTask<?, ?>> taskCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(taskClsName);
+ Class<? extends ComputeTask<?, ?>> jobCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(jobClsName);
+
+ ignite.compute().localDeployTask(taskCls, ldr);
+
+ ignite.compute().execute(taskClsName, 2);
+
+ ConcurrentMap<Class<?>, OptimizedClassDescriptor> cache =
+ U.field(ignite.configuration().getMarshaller(), "clsMap");
+
+ assertTrue(cache.containsKey(jobCls));
+
+ ignite.compute().undeployTask(taskClsName);
+
+ // Wait for undeploy.
+ Thread.sleep(1000);
+
+ assertFalse(cache.containsKey(jobCls));
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testPerformance() throws Exception {
+ System.gc();
+
+ checkPerformance(10000, 4);
+ }
+
+ /**
+ * @param cnt Number of marshalling attempts.
+ * @param tries Number of retries.
+ * @throws Exception If failed.
+ */
+ private void checkPerformance(int cnt, int tries) throws Exception {
+ Marshaller marsh = marshaller();
+
+ for (int j = 0; j < tries; j++) {
+ System.gc();
+
+ long start = System.currentTimeMillis();
+
+ for (int i = 0; i < cnt; i++) {
+ TestCacheKey key = new TestCacheKey("key", "id");
+
+ TestCacheKey outKey = marsh.unmarshal(marsh.marshal(key), null);
+
+ assert key.equals(outKey);
+ assert key.hashCode() == outKey.hashCode();
+ }
+
+ info("Time non-serializable: " + (System.currentTimeMillis() - start));
+
+ System.gc();
+
+ start = System.currentTimeMillis();
+
+ for (int i = 0; i < cnt; i++) {
+ TestCacheKeySerializable key1 = new TestCacheKeySerializable("key", "id");
+
+ TestCacheKeySerializable outKey = marsh.unmarshal(marsh.marshal(key1), null);
+
+ assert key1.equals(outKey);
+ assert key1.hashCode() == outKey.hashCode();
+ }
+
+ info("Time serializable: " + (System.currentTimeMillis() - start));
+
+ System.gc();
+
+ start = System.currentTimeMillis();
+
+ for (int i = 0; i < cnt; i++) {
+ TestCacheKeyExternalizable key2 = new TestCacheKeyExternalizable("key", "id");
+
+ TestCacheKeyExternalizable outKey = marsh.unmarshal(marsh.marshal(key2), null);
+
+ assert key2.equals(outKey);
+ assert key2.hashCode() == outKey.hashCode();
+ }
+
+ info("Time externalizable: " + (System.currentTimeMillis() - start));
+
+ info(">>>");
+ }
+
+ info(">>> Finished performance check <<<");
+ }
+
+ /**
+ * Some non-serializable class.
+ */
+ @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","FieldMayBeStatic"})
+ private static class NonSerializableA {
+ /** */
+ private final long longVal = 0x33445566778899AAL;
+
+ /** */
+ protected Short shortVal = (short)0xAABB;
+
+ /** */
+ public String[] strArr = {"AA","BB"};
+
+ /** */
+ public boolean flag1 = true;
+
+ /** */
+ public boolean flag2;
+
+ /** */
+ public Boolean flag3;
+
+ /** */
+ public Boolean flag4 = true;
+
+ /** */
+ public Boolean flag5 = false;
+
+ /** */
+ private transient int intVal = 0xAABBCCDD;
+
+ /**
+ * @param strArr Array.
+ * @param shortVal Short value.
+ */
+ @SuppressWarnings( {"UnusedDeclaration"})
+ private NonSerializableA(@Nullable String[] strArr, @Nullable Short shortVal) {
+ // No-op.
+ }
+
+ /**
+ * Checks correctness of the state after unmarshalling.
+ */
+ void checkAfterUnmarshalled() {
+ assertEquals(longVal, 0x33445566778899AAL);
+
+ assertEquals(shortVal.shortValue(), (short)0xAABB);
+
+ assertTrue(Arrays.equals(strArr, new String[] {"AA","BB"}));
+
+ assertEquals(intVal, 0);
+
+ assertTrue(flag1);
+ assertFalse(flag2);
+ assertNull(flag3);
+ assertTrue(flag4);
+ assertFalse(flag5);
+ }
+ }
+
+ /**
+ * Some non-serializable class.
+ */
+ @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"})
+ static class NonSerializableB extends NonSerializableA {
+ /** */
+ public Short shortVal = 0x1122;
+
+ /** */
+ public long longVal = 0x8877665544332211L;
+
+ /** */
+ private transient NonSerializableA[] aArr = {
+ new NonSerializableA(null, null),
+ new NonSerializableA(null, null),
+ new NonSerializableA(null, null)
+ };
+
+ /** */
+ protected Double doubleVal = 123.456;
+
+ /**
+ * Just to eliminate the default constructor.
+ */
+ private NonSerializableB() {
+ super(null, null);
+ }
+
+ /**
+ * Checks correctness of the state after unmarshalling.
+ */
+ @Override void checkAfterUnmarshalled() {
+ super.checkAfterUnmarshalled();
+
+ assertEquals(shortVal.shortValue(), 0x1122);
+
+ assertEquals(longVal, 0x8877665544332211L);
+
+ assertNull(aArr);
+
+ assertEquals(doubleVal, 123.456);
+ }
+ }
+
+ /**
+ * Some non-serializable class.
+ */
+ @SuppressWarnings( {"TransientFieldInNonSerializableClass","PublicField"})
+ private static class NonSerializable extends NonSerializableB {
+ /** */
+ private int idVal = -17;
+
+ /** */
+ private final NonSerializableA aVal = new NonSerializableB();
+
+ /** */
+ private transient NonSerializableB bVal = new NonSerializableB();
+
+ /** */
+ private NonSerializableA[] bArr = new NonSerializableA[] {
+ new NonSerializableB(),
+ new NonSerializableA(null, null)
+ };
+
+ /** */
+ public float floatVal = 567.89F;
+
+ /**
+ * Just to eliminate the default constructor.
+ *
+ * @param aVal Unused.
+ */
+ @SuppressWarnings( {"UnusedDeclaration"})
+ private NonSerializable(NonSerializableA aVal) {
+ }
+
+ /**
+ * Checks correctness of the state after unmarshalling.
+ */
+ @Override void checkAfterUnmarshalled() {
+ super.checkAfterUnmarshalled();
+
+ assertEquals(idVal, -17);
+
+ aVal.checkAfterUnmarshalled();
+
+ assertNull(bVal);
+
+ for (NonSerializableA a : bArr) {
+ a.checkAfterUnmarshalled();
+ }
+
+ assertEquals(floatVal, 567.89F);
+ }
+ }
+
+ /**
+ * Some serializable class.
+ */
+ @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"})
+ static class ForSerializableB {
+ /** */
+ public Short shortVal = 0x1122;
+
+ /** */
+ public long longVal = 0x8877665544332211L;
+
+ /** */
+ private transient NonSerializableA[] aArr;
+
+ /** */
+ private transient String strVal = "abc";
+
+ /** */
+ protected Double doubleVal = 123.456;
+
+ /**
+ */
+ protected void init() {
+ shortVal = 0x1122;
+
+ longVal = 0x8877665544332211L;
+
+ aArr = new NonSerializableA[] {
+ new NonSerializableA(null, null),
+ new NonSerializableA(null, null),
+ new NonSerializableA(null, null)
+ };
+ }
+
+ /**
+ * Checks correctness of the state after unmarshalling.
+ */
+ void checkAfterUnmarshalled() {
+ assertEquals(shortVal.shortValue(), 0x1122);
+
+ assertEquals(longVal, 0x8877665544332211L);
+
+ assertNull(aArr);
+
+ assertNull(strVal);
+
+ assertEquals(doubleVal, 123.456);
+ }
+ }
+
+ /**
+ * Some serializable class.
+ */
+ private static class SomeSimpleSerializable extends ComputeJobAdapter {
+ /** */
+ private boolean flag = true;
+
+ /**
+ * @param newFlagVal - The new value of flag field.
+ */
+ public void setFlagValue(boolean newFlagVal) {
+ flag = newFlagVal;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object execute() {
+ assert false;
+
+ return null;
+ }
+ }
+ /**
+ * Some serializable class.
+ */
+ private static class SomeSerializable extends ForSerializableB implements Serializable {
+ /**
+ * Just to eliminate the default constructor.
+ *
+ * @param id Unused.
+ */
+ @SuppressWarnings( {"UnusedDeclaration"})
+ private SomeSerializable(Long id) {
+ init();
+ }
+ }
+
+ /**
+ */
+ private static interface SomeItf {
+ /**
+ * @return Check result.
+ */
+ int checkAfterUnmarshalled();
+ }
+
+ /**
+ * Some externalizable class.
+ */
+ @SuppressWarnings( {"UnusedDeclaration", "PublicField"})
+ private static class ExternalizableA implements Externalizable {
+ /** */
+ private boolean boolVal;
+
+ /** */
+ public String[] strArr;
+
+ /** No-arg constructor is required by externalization. */
+ public ExternalizableA() {
+ // No-op.
+ }
+
+ /**
+ *
+ * @param strArr String array.
+ * @param boolVal Boolean value.
+ */
+ private ExternalizableA(String[] strArr, boolean boolVal) {
+ this.strArr = strArr;
+ this.boolVal = boolVal;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeBoolean(false);
+ out.writeBoolean(false);
+ out.writeBoolean(false);
+ out.writeBoolean(false);
+ out.writeBoolean(false);
+ out.writeBoolean(false);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ boolVal = in.readBoolean();
+ in.readBoolean();
+ in.readBoolean();
+ in.readBoolean();
+ in.readBoolean();
+ in.readBoolean();
+ }
+ }
+
+ /**
+ *
+ */
+ private static class TestCacheKey implements Serializable {
+ /** */
+ private String key;
+
+ /** */
+ @SuppressWarnings({"UnusedDeclaration"})
+ private String terminalId;
+
+ /**
+ * @param key Key.
+ * @param terminalId Some ID.
+ */
+ TestCacheKey(String key, String terminalId) {
+ this.key = key;
+ this.terminalId = terminalId;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return key.hashCode();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object obj) {
+ return obj instanceof TestCacheKey && key.equals(((TestCacheKey)obj).key);
+ }
+ }
+
+ /**
+ *
+ */
+ private static class TestCacheKeySerializable implements Serializable {
+ /** */
+ private String key;
+
+ /** */
+ @SuppressWarnings({"UnusedDeclaration"})
+ private String terminalId;
+
+ /**
+ * @param key Key.
+ * @param terminalId Some ID.
+ */
+ TestCacheKeySerializable(String key, String terminalId) {
+ this.key = key;
+ this.terminalId = terminalId;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return key.hashCode();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object obj) {
+ return obj instanceof TestCacheKeySerializable && key.equals(((TestCacheKeySerializable)obj).key);
+ }
+ }
+
+ /**
+ *
+ */
+ private static class TestCacheKeyExternalizable implements Externalizable {
+ /** */
+ private String key;
+
+ /** */
+ private String terminalId;
+
+ /**
+ *
+ */
+ public TestCacheKeyExternalizable() {
+ // No-op.
+ }
+
+ /**
+ * @param key Key.
+ * @param terminalId Some ID.
+ */
+ TestCacheKeyExternalizable(String key, String terminalId) {
+ this.key = key;
+ this.terminalId = terminalId;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return key.hashCode();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object obj) {
+ return obj instanceof TestCacheKeyExternalizable && key.equals(((TestCacheKeyExternalizable)obj).key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ U.writeString(out, key);
+ U.writeString(out, terminalId);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ key = U.readString(in);
+ terminalId = U.readString(in);
+ }
+ }
+}
\ No newline at end of file
[06/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
deleted file mode 100644
index 95a301b..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ /dev/null
@@ -1,1231 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.NotActiveException;
-import java.io.ObjectInputStream;
-import java.io.ObjectInputValidation;
-import java.io.ObjectStreamClass;
-import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.util.GridUnsafe;
-import org.apache.ignite.internal.util.io.GridDataInput;
-import org.apache.ignite.internal.util.typedef.internal.SB;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.MarshallerContext;
-
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.ARRAY_LIST;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BYTE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.BYTE_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CHAR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CHAR_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.CLS;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DATE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.ENUM;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.EXTERNALIZABLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.FLOAT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.FLOAT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HANDLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_MAP;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET_MAP_OFF;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.INT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.INT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.JDK;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.JDK_MARSH;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_MAP;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_SET;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LINKED_LIST;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LONG;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.LONG_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.NULL;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.OBJ_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.PROPS;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.PROXY;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SERIALIZABLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SHORT;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.SHORT_ARR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.STR;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.UUID;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setBoolean;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setByte;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setChar;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setDouble;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setFloat;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setInt;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setLong;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setObject;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.setShort;
-
-/**
- * Optimized object input stream.
- */
-class OptimizedObjectInputStream extends ObjectInputStream {
- /** Dummy object for HashSet. */
- private static final Object DUMMY = new Object();
-
- /** */
- private final HandleTable handles = new HandleTable(10);
-
- /** */
- private MarshallerContext ctx;
-
- /** */
- private OptimizedMarshallerIdMapper mapper;
-
- /** */
- private ClassLoader clsLdr;
-
- /** */
- private GridDataInput in;
-
- /** */
- private Object curObj;
-
- /** */
- private OptimizedClassDescriptor.ClassFields curFields;
-
- /** */
- private Class<?> curCls;
-
- /** */
- private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
-
- /**
- * @param in Input.
- * @throws IOException In case of error.
- */
- OptimizedObjectInputStream(GridDataInput in) throws IOException {
- this.in = in;
- }
-
- /**
- * @param clsMap Class descriptors by class map.
- * @param ctx Context.
- * @param mapper ID mapper.
- * @param clsLdr Class loader.
- */
- void context(
- ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
- MarshallerContext ctx,
- OptimizedMarshallerIdMapper mapper,
- ClassLoader clsLdr)
- {
- this.clsMap = clsMap;
- this.ctx = ctx;
- this.mapper = mapper;
- this.clsLdr = clsLdr;
- }
-
- /**
- * @return Input.
- */
- public GridDataInput in() {
- return in;
- }
-
- /**
- * @param in Input.
- */
- public void in(GridDataInput in) {
- this.in = in;
- }
-
- /** {@inheritDoc} */
- @Override public void close() throws IOException {
- reset();
-
- ctx = null;
- clsLdr = null;
- clsMap = null;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("NonSynchronizedMethodOverridesSynchronizedMethod")
- @Override public void reset() throws IOException {
- in.reset();
- handles.clear();
-
- curObj = null;
- curFields = null;
- }
-
- /** {@inheritDoc} */
- @Override public Object readObjectOverride() throws ClassNotFoundException, IOException {
- curObj = null;
- curFields = null;
-
- byte ref = in.readByte();
-
- switch (ref) {
- case NULL:
- return null;
-
- case HANDLE:
- return handles.lookup(readInt());
-
- case JDK:
- try {
- return JDK_MARSH.unmarshal(this, clsLdr);
- }
- catch (IgniteCheckedException e) {
- IOException ioEx = e.getCause(IOException.class);
-
- if (ioEx != null)
- throw ioEx;
- else
- throw new IOException("Failed to deserialize object with JDK marshaller.", e);
- }
-
- case BYTE:
- return readByte();
-
- case SHORT:
- return readShort();
-
- case INT:
- return readInt();
-
- case LONG:
- return readLong();
-
- case FLOAT:
- return readFloat();
-
- case DOUBLE:
- return readDouble();
-
- case CHAR:
- return readChar();
-
- case BOOLEAN:
- return readBoolean();
-
- case BYTE_ARR:
- return readByteArray();
-
- case SHORT_ARR:
- return readShortArray();
-
- case INT_ARR:
- return readIntArray();
-
- case LONG_ARR:
- return readLongArray();
-
- case FLOAT_ARR:
- return readFloatArray();
-
- case DOUBLE_ARR:
- return readDoubleArray();
-
- case CHAR_ARR:
- return readCharArray();
-
- case BOOLEAN_ARR:
- return readBooleanArray();
-
- case OBJ_ARR:
- return readArray(readClass());
-
- case STR:
- return readString();
-
- case UUID:
- return readUuid();
-
- case PROPS:
- return readProperties();
-
- case ARRAY_LIST:
- return readArrayList();
-
- case HASH_MAP:
- return readHashMap(false);
-
- case HASH_SET:
- return readHashSet(HASH_SET_MAP_OFF);
-
- case LINKED_LIST:
- return readLinkedList();
-
- case LINKED_HASH_MAP:
- return readLinkedHashMap(false);
-
- case LINKED_HASH_SET:
- return readLinkedHashSet(HASH_SET_MAP_OFF);
-
- case DATE:
- return readDate();
-
- case CLS:
- return readClass();
-
- case PROXY:
- Class<?>[] intfs = new Class<?>[readInt()];
-
- for (int i = 0; i < intfs.length; i++)
- intfs[i] = readClass();
-
- InvocationHandler ih = (InvocationHandler)readObject();
-
- return Proxy.newProxyInstance(clsLdr != null ? clsLdr : U.gridClassLoader(), intfs, ih);
-
- case ENUM:
- case EXTERNALIZABLE:
- case SERIALIZABLE:
- int typeId = readInt();
-
- OptimizedClassDescriptor desc = typeId == 0 ?
- classDescriptor(clsMap, U.forName(readUTF(), clsLdr), ctx, mapper):
- classDescriptor(clsMap, typeId, clsLdr, ctx, mapper);
-
- curCls = desc.describedClass();
-
- return desc.read(this);
-
- default:
- SB msg = new SB("Unexpected error occurred during unmarshalling");
-
- if (curCls != null)
- msg.a(" of an instance of the class: ").a(curCls.getName());
-
- msg.a(". Check that all nodes are running the same version of Ignite and that all nodes have " +
- "GridOptimizedMarshaller configured with identical optimized classes lists, if any " +
- "(see setClassNames and setClassNamesPath methods). If your serialized classes implement " +
- "java.io.Externalizable interface, verify that serialization logic is correct.");
-
- throw new IOException(msg.toString());
- }
- }
-
- /**
- * @return Class.
- * @throws ClassNotFoundException If class was not found.
- * @throws IOException In case of other error.
- */
- private Class<?> readClass() throws ClassNotFoundException, IOException {
- int compTypeId = readInt();
-
- return compTypeId == 0 ? U.forName(readUTF(), clsLdr) :
- classDescriptor(clsMap, compTypeId, clsLdr, ctx, mapper).describedClass();
- }
-
- /**
- * Reads array from this stream.
- *
- * @param compType Array component type.
- * @return Array.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("unchecked")
- <T> T[] readArray(Class<T> compType) throws ClassNotFoundException, IOException {
- int len = in.readInt();
-
- T[] arr = (T[])Array.newInstance(compType, len);
-
- handles.assign(arr);
-
- for (int i = 0; i < len; i++)
- arr[i] = (T)readObject();
-
- return arr;
- }
-
- /**
- * Reads {@link UUID} from this stream.
- *
- * @return UUID.
- * @throws IOException In case of error.
- */
- UUID readUuid() throws IOException {
- UUID uuid = new UUID(readLong(), readLong());
-
- handles.assign(uuid);
-
- return uuid;
- }
-
- /**
- * Reads {@link Properties} from this stream.
- *
- * @return Properties.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- Properties readProperties() throws ClassNotFoundException, IOException {
- Properties dflts = readBoolean() ? null : (Properties)readObject();
-
- Properties props = new Properties(dflts);
-
- int size = in.readInt();
-
- for (int i = 0; i < size; i++)
- props.setProperty(readUTF(), readUTF());
-
- handles.assign(props);
-
- return props;
- }
-
- /**
- * Reads and sets all non-static and non-transient field values from this stream.
- *
- * @param obj Object.
- * @param fieldOffs Field offsets.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- void readFields(Object obj, OptimizedClassDescriptor.ClassFields fieldOffs) throws ClassNotFoundException,
- IOException {
- for (int i = 0; i < fieldOffs.size(); i++) {
- OptimizedClassDescriptor.FieldInfo t = fieldOffs.get(i);
-
- switch ((t.type())) {
- case BYTE:
- byte resByte = readByte();
-
- if (t.field() != null)
- setByte(obj, t.offset(), resByte);
-
- break;
-
- case SHORT:
- short resShort = readShort();
-
- if (t.field() != null)
- setShort(obj, t.offset(), resShort);
-
- break;
-
- case INT:
- int resInt = readInt();
-
- if (t.field() != null)
- setInt(obj, t.offset(), resInt);
-
- break;
-
- case LONG:
- long resLong = readLong();
-
- if (t.field() != null)
- setLong(obj, t.offset(), resLong);
-
- break;
-
- case FLOAT:
- float resFloat = readFloat();
-
- if (t.field() != null)
- setFloat(obj, t.offset(), resFloat);
-
- break;
-
- case DOUBLE:
- double resDouble = readDouble();
-
- if (t.field() != null)
- setDouble(obj, t.offset(), resDouble);
-
- break;
-
- case CHAR:
- char resChar = readChar();
-
- if (t.field() != null)
- setChar(obj, t.offset(), resChar);
-
- break;
-
- case BOOLEAN:
- boolean resBoolean = readBoolean();
-
- if (t.field() != null)
- setBoolean(obj, t.offset(), resBoolean);
-
- break;
-
- case OTHER:
- Object resObject = readObject();
-
- if (t.field() != null)
- setObject(obj, t.offset(), resObject);
- }
- }
- }
-
- /**
- * Reads {@link Externalizable} object.
- *
- * @param constructor Constructor.
- * @param readResolveMtd {@code readResolve} method.
- * @return Object.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- Object readExternalizable(Constructor<?> constructor, Method readResolveMtd)
- throws ClassNotFoundException, IOException {
- Object obj;
-
- try {
- obj = constructor.newInstance();
- }
- catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
- throw new IOException(e);
- }
-
- int handle = handles.assign(obj);
-
- Externalizable extObj = ((Externalizable)obj);
-
- extObj.readExternal(this);
-
- if (readResolveMtd != null) {
- try {
- obj = readResolveMtd.invoke(obj);
-
- handles.set(handle, obj);
- }
- catch (IllegalAccessException | InvocationTargetException e) {
- throw new IOException(e);
- }
- }
-
- return obj;
- }
-
- /**
- * Reads serializable object.
- *
- * @param cls Class.
- * @param mtds {@code readObject} methods.
- * @param readResolveMtd {@code readResolve} method.
- * @param fields class fields details.
- * @return Object.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- Object readSerializable(Class<?> cls, List<Method> mtds, Method readResolveMtd,
- OptimizedClassDescriptor.Fields fields) throws ClassNotFoundException, IOException {
- Object obj;
-
- try {
- obj = GridUnsafe.allocateInstance(cls);
- }
- catch (InstantiationException e) {
- throw new IOException(e);
- }
-
- int handle = handles.assign(obj);
-
- for (int i = 0; i < mtds.size(); i++) {
- Method mtd = mtds.get(i);
-
- if (mtd != null) {
- curObj = obj;
- curFields = fields.fields(i);
-
- try {
- mtd.invoke(obj, this);
- }
- catch (IllegalAccessException | InvocationTargetException e) {
- throw new IOException(e);
- }
- }
- else
- readFields(obj, fields.fields(i));
- }
-
- if (readResolveMtd != null) {
- try {
- obj = readResolveMtd.invoke(obj);
-
- handles.set(handle, obj);
- }
- catch (IllegalAccessException | InvocationTargetException e) {
- throw new IOException(e);
- }
- }
-
- return obj;
- }
-
- /**
- * Reads {@link ArrayList}.
- *
- * @return List.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- ArrayList<?> readArrayList() throws ClassNotFoundException, IOException {
- int size = readInt();
-
- ArrayList<Object> list = new ArrayList<>(size);
-
- handles.assign(list);
-
- for (int i = 0; i < size; i++)
- list.add(readObject());
-
- return list;
- }
-
- /**
- * Reads {@link HashMap}.
- *
- * @param set Whether reading underlying map from {@link HashSet}.
- * @return Map.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- HashMap<?, ?> readHashMap(boolean set) throws ClassNotFoundException, IOException {
- int size = readInt();
- float loadFactor = readFloat();
-
- HashMap<Object, Object> map = new HashMap<>(size, loadFactor);
-
- if (!set)
- handles.assign(map);
-
- for (int i = 0; i < size; i++) {
- Object key = readObject();
- Object val = !set ? readObject() : DUMMY;
-
- map.put(key, val);
- }
-
- return map;
- }
-
- /**
- * Reads {@link HashSet}.
- *
- * @param mapFieldOff Map field offset.
- * @return Set.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("unchecked")
- HashSet<?> readHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
- try {
- HashSet<Object> set = (HashSet<Object>)GridUnsafe.allocateInstance(HashSet.class);
-
- handles.assign(set);
-
- setObject(set, mapFieldOff, readHashMap(true));
-
- return set;
- }
- catch (InstantiationException e) {
- throw new IOException(e);
- }
- }
-
- /**
- * Reads {@link LinkedList}.
- *
- * @return List.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- LinkedList<?> readLinkedList() throws ClassNotFoundException, IOException {
- int size = readInt();
-
- LinkedList<Object> list = new LinkedList<>();
-
- handles.assign(list);
-
- for (int i = 0; i < size; i++)
- list.add(readObject());
-
- return list;
- }
-
- /**
- * Reads {@link LinkedHashMap}.
- *
- * @param set Whether reading underlying map from {@link LinkedHashSet}.
- * @return Map.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- LinkedHashMap<?, ?> readLinkedHashMap(boolean set) throws ClassNotFoundException, IOException {
- int size = readInt();
- float loadFactor = readFloat();
- boolean accessOrder = readBoolean();
-
- LinkedHashMap<Object, Object> map = new LinkedHashMap<>(size, loadFactor, accessOrder);
-
- if (!set)
- handles.assign(map);
-
- for (int i = 0; i < size; i++) {
- Object key = readObject();
- Object val = !set ? readObject() : DUMMY;
-
- map.put(key, val);
- }
-
- return map;
- }
-
- /**
- * Reads {@link LinkedHashSet}.
- *
- * @param mapFieldOff Map field offset.
- * @return Set.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("unchecked")
- LinkedHashSet<?> readLinkedHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
- try {
- LinkedHashSet<Object> set = (LinkedHashSet<Object>)GridUnsafe.allocateInstance(LinkedHashSet.class);
-
- handles.assign(set);
-
- setObject(set, mapFieldOff, readLinkedHashMap(true));
-
- return set;
- }
- catch (InstantiationException e) {
- throw new IOException(e);
- }
- }
-
- /**
- * Reads {@link Date}.
- *
- * @return Date.
- * @throws ClassNotFoundException If class not found.
- * @throws IOException In case of error.
- */
- Date readDate() throws ClassNotFoundException, IOException {
- Date date = new Date(readLong());
-
- handles.assign(date);
-
- return date;
- }
-
- /**
- * Reads array of {@code byte}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- byte[] readByteArray() throws IOException {
- byte[] arr = in.readByteArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code short}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- short[] readShortArray() throws IOException {
- short[] arr = in.readShortArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code int}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- int[] readIntArray() throws IOException {
- int[] arr = in.readIntArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code long}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- long[] readLongArray() throws IOException {
- long[] arr = in.readLongArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code float}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- float[] readFloatArray() throws IOException {
- float[] arr = in.readFloatArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code double}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- double[] readDoubleArray() throws IOException {
- double[] arr = in.readDoubleArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code char}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- char[] readCharArray() throws IOException {
- char[] arr = in.readCharArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads array of {@code boolean}s.
- *
- * @return Array.
- * @throws IOException In case of error.
- */
- boolean[] readBooleanArray() throws IOException {
- boolean[] arr = in.readBooleanArray();
-
- handles.assign(arr);
-
- return arr;
- }
-
- /**
- * Reads {@link String}.
- *
- * @return String.
- * @throws IOException In case of error.
- */
- public String readString() throws IOException {
- String str = in.readUTF();
-
- handles.assign(str);
-
- return str;
- }
-
- /** {@inheritDoc} */
- @Override public void readFully(byte[] b) throws IOException {
- in.readFully(b);
- }
-
- /** {@inheritDoc} */
- @Override public void readFully(byte[] b, int off, int len) throws IOException {
- in.readFully(b, off, len);
- }
-
- /** {@inheritDoc} */
- @Override public int skipBytes(int n) throws IOException {
- return in.skipBytes(n);
- }
-
- /** {@inheritDoc} */
- @Override public boolean readBoolean() throws IOException {
- return in.readBoolean();
- }
-
- /** {@inheritDoc} */
- @Override public byte readByte() throws IOException {
- return in.readByte();
- }
-
- /** {@inheritDoc} */
- @Override public int readUnsignedByte() throws IOException {
- return in.readUnsignedByte();
- }
-
- /** {@inheritDoc} */
- @Override public short readShort() throws IOException {
- return in.readShort();
- }
-
- /** {@inheritDoc} */
- @Override public int readUnsignedShort() throws IOException {
- return in.readUnsignedShort();
- }
-
- /** {@inheritDoc} */
- @Override public char readChar() throws IOException {
- return in.readChar();
- }
-
- /** {@inheritDoc} */
- @Override public int readInt() throws IOException {
- return in.readInt();
- }
-
- /** {@inheritDoc} */
- @Override public long readLong() throws IOException {
- return in.readLong();
- }
-
- /** {@inheritDoc} */
- @Override public float readFloat() throws IOException {
- return in.readFloat();
- }
-
- /** {@inheritDoc} */
- @Override public double readDouble() throws IOException {
- return in.readDouble();
- }
-
- /** {@inheritDoc} */
- @Override public int read() throws IOException {
- return in.read();
- }
-
- /** {@inheritDoc} */
- @Override public int read(byte[] b) throws IOException {
- return in.read(b);
- }
-
- /** {@inheritDoc} */
- @Override public int read(byte[] b, int off, int len) throws IOException {
- return in.read(b, off, len);
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("deprecation")
- @Override public String readLine() throws IOException {
- return in.readLine();
- }
-
- /** {@inheritDoc} */
- @Override public String readUTF() throws IOException {
- return in.readUTF();
- }
-
- /** {@inheritDoc} */
- @Override public Object readUnshared() throws IOException, ClassNotFoundException {
- return readObject();
- }
-
- /** {@inheritDoc} */
- @Override public void defaultReadObject() throws IOException, ClassNotFoundException {
- if (curObj == null)
- throw new NotActiveException("Not in readObject() call.");
-
- readFields(curObj, curFields);
- }
-
- /** {@inheritDoc} */
- @Override public ObjectInputStream.GetField readFields() throws IOException, ClassNotFoundException {
- if (curObj == null)
- throw new NotActiveException("Not in readObject() call.");
-
- return new GetFieldImpl(this);
- }
-
- /** {@inheritDoc} */
- @Override public void registerValidation(ObjectInputValidation obj, int pri) {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public int available() throws IOException {
- return -1;
- }
-
- /**
- * Returns objects that were added to handles table.
- * Used ONLY for test purposes.
- *
- * @return Handled objects.
- */
- Object[] handledObjects() {
- return handles.entries;
- }
-
- /**
- * Lightweight identity hash table which maps objects to integer handles,
- * assigned in ascending order.
- */
- private static class HandleTable {
- /** Array mapping handle -> object/exception (depending on status). */
- private Object[] entries;
-
- /** Number of handles in table. */
- private int size;
-
- /**
- * Creates handle table with the given initial capacity.
- *
- * @param initCap Initial capacity.
- */
- HandleTable(int initCap) {
- entries = new Object[initCap];
- }
-
- /**
- * Assigns next available handle to given object, and returns assigned
- * handle.
- *
- * @param obj Object.
- * @return Handle.
- */
- int assign(Object obj) {
- if (size >= entries.length)
- grow();
-
- entries[size] = obj;
-
- return size++;
- }
-
- /**
- * Assigns new object to existing handle. Old object is forgotten.
- *
- * @param handle Handle.
- * @param obj Object.
- */
- void set(int handle, Object obj) {
- entries[handle] = obj;
- }
-
- /**
- * Looks up and returns object associated with the given handle.
- *
- * @param handle Handle.
- * @return Object.
- */
- Object lookup(int handle) {
- return entries[handle];
- }
-
- /**
- * Resets table to its initial state.
- */
- void clear() {
- Arrays.fill(entries, 0, size, null);
-
- size = 0;
- }
-
- /**
- * Expands capacity of internal arrays.
- */
- private void grow() {
- int newCap = (entries.length << 1) + 1;
-
- Object[] newEntries = new Object[newCap];
-
- System.arraycopy(entries, 0, newEntries, 0, size);
-
- entries = newEntries;
- }
- }
-
- /**
- * {@link GetField} implementation.
- */
- private static class GetFieldImpl extends GetField {
- /** Field info. */
- private final OptimizedClassDescriptor.ClassFields fieldInfo;
-
- /** Values. */
- private final Object[] objs;
-
- /**
- * @param in Stream.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class not found.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- private GetFieldImpl(OptimizedObjectInputStream in) throws IOException, ClassNotFoundException {
- fieldInfo = in.curFields;
-
- objs = new Object[fieldInfo.size()];
-
- for (int i = 0; i < fieldInfo.size(); i++) {
- OptimizedClassDescriptor.FieldInfo t = fieldInfo.get(i);
-
- Object obj = null;
-
- switch (t.type()) {
- case BYTE:
- obj = in.readByte();
-
- break;
-
- case SHORT:
- obj = in.readShort();
-
- break;
-
- case INT:
- obj = in.readInt();
-
- break;
-
- case LONG:
- obj = in.readLong();
-
- break;
-
- case FLOAT:
- obj = in.readFloat();
-
- break;
-
- case DOUBLE:
- obj = in.readDouble();
-
- break;
-
- case CHAR:
- obj = in.readChar();
-
- break;
-
- case BOOLEAN:
- obj = in.readBoolean();
-
- break;
-
- case OTHER:
- obj = in.readObject();
- }
-
- objs[i] = obj;
- }
- }
-
- /** {@inheritDoc} */
- @Override public ObjectStreamClass getObjectStreamClass() {
- throw new UnsupportedOperationException();
- }
-
- /** {@inheritDoc} */
- @Override public boolean defaulted(String name) throws IOException {
- return objs[fieldInfo.getIndex(name)] == null;
- }
-
- /** {@inheritDoc} */
- @Override public boolean get(String name, boolean dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public byte get(String name, byte dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public char get(String name, char dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public short get(String name, short dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public int get(String name, int dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public long get(String name, long dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public float get(String name, float dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public double get(String name, double dflt) throws IOException {
- return value(name, dflt);
- }
-
- /** {@inheritDoc} */
- @Override public Object get(String name, Object dflt) throws IOException {
- return value(name, dflt);
- }
-
- /**
- * @param name Field name.
- * @param dflt Default value.
- * @return Value.
- */
- @SuppressWarnings("unchecked")
- private <T> T value(String name, T dflt) {
- return objs[fieldInfo.getIndex(name)] != null ? (T)objs[fieldInfo.getIndex(name)] : dflt;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
deleted file mode 100644
index 98d85a0..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ /dev/null
@@ -1,875 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.NotActiveException;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.util.GridHandleTable;
-import org.apache.ignite.internal.util.io.GridDataOutput;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.marshaller.MarshallerContext;
-
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.HANDLE;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.JDK;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.JDK_MARSH;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.NULL;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getBoolean;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getByte;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getChar;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getDouble;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getFloat;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getInt;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getLong;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getObject;
-import static org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.getShort;
-
-/**
- * Optimized object output stream.
- */
-class OptimizedObjectOutputStream extends ObjectOutputStream {
- /** */
- private final GridHandleTable handles = new GridHandleTable(10, 3.00f);
-
- /** */
- private final GridDataOutput out;
-
- /** */
- private MarshallerContext ctx;
-
- /** */
- private OptimizedMarshallerIdMapper mapper;
-
- /** */
- private boolean requireSer;
-
- /** */
- private Object curObj;
-
- /** */
- private OptimizedClassDescriptor.ClassFields curFields;
-
- /** */
- private PutFieldImpl curPut;
-
- /** */
- private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
-
- /**
- * @param out Output.
- * @throws IOException In case of error.
- */
- OptimizedObjectOutputStream(GridDataOutput out) throws IOException {
- this.out = out;
- }
-
- /**
- * @param clsMap Class descriptors by class map.
- * @param ctx Context.
- * @param mapper ID mapper.
- * @param requireSer Require {@link Serializable} flag.
- */
- void context(ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
- MarshallerContext ctx,
- OptimizedMarshallerIdMapper mapper,
- boolean requireSer) {
- this.clsMap = clsMap;
- this.ctx = ctx;
- this.mapper = mapper;
- this.requireSer = requireSer;
- }
-
- /**
- * @return Require {@link Serializable} flag.
- */
- boolean requireSerializable() {
- return requireSer;
- }
-
- /**
- * @return Output.
- */
- public GridDataOutput out() {
- return out;
- }
-
- /** {@inheritDoc} */
- @Override public void close() throws IOException {
- reset();
-
- ctx = null;
- clsMap = null;
- }
-
- /** {@inheritDoc} */
- @Override public void write(byte[] b) throws IOException {
- out.write(b);
- }
-
- /** {@inheritDoc} */
- @Override public void write(byte[] b, int off, int len) throws IOException {
- out.write(b, off, len);
- }
-
- /** {@inheritDoc} */
- @Override protected void writeObjectOverride(Object obj) throws IOException {
- writeObject0(obj);
- }
-
- /**
- * Writes object to stream.
- *
- * @param obj Object.
- * @throws IOException In case of error.
- */
- private void writeObject0(Object obj) throws IOException {
- curObj = null;
- curFields = null;
- curPut = null;
-
- if (obj == null)
- writeByte(NULL);
- else {
- if (obj instanceof Throwable && !(obj instanceof Externalizable)) {
- writeByte(JDK);
-
- try {
- JDK_MARSH.marshal(obj, this);
- }
- catch (IgniteCheckedException e) {
- IOException ioEx = e.getCause(IOException.class);
-
- if (ioEx != null)
- throw ioEx;
- else
- throw new IOException("Failed to serialize object with JDK marshaller: " + obj, e);
- }
- }
- else {
- OptimizedClassDescriptor desc = classDescriptor(
- clsMap,
- obj instanceof Object[] ? Object[].class : obj.getClass(),
- ctx,
- mapper);
-
- if (desc.excluded()) {
- writeByte(NULL);
-
- return;
- }
-
- Object obj0 = desc.replace(obj);
-
- if (obj0 == null) {
- writeByte(NULL);
-
- return;
- }
-
- int handle = -1;
-
- if (!desc.isPrimitive() && !desc.isEnum() && !desc.isClass() && !desc.isProxy())
- handle = handles.lookup(obj);
-
- if (obj0 != obj) {
- obj = obj0;
-
- desc = classDescriptor(clsMap,
- obj instanceof Object[] ? Object[].class : obj.getClass(),
- ctx,
- mapper);
- }
-
- if (handle >= 0) {
- writeByte(HANDLE);
- writeInt(handle);
- }
- else
- desc.write(this, obj);
- }
- }
- }
-
- /**
- * Writes array to this stream.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- void writeArray(Object[] arr) throws IOException {
- int len = arr.length;
-
- writeInt(len);
-
- for (int i = 0; i < len; i++) {
- Object obj = arr[i];
-
- writeObject0(obj);
- }
- }
-
- /**
- * Writes {@link UUID} to this stream.
- *
- * @param uuid UUID.
- * @throws IOException In case of error.
- */
- void writeUuid(UUID uuid) throws IOException {
- writeLong(uuid.getMostSignificantBits());
- writeLong(uuid.getLeastSignificantBits());
- }
-
- /**
- * Writes {@link Properties} to this stream.
- *
- * @param props Properties.
- * @param dfltsFieldOff Defaults field offset.
- * @throws IOException In case of error.
- */
- void writeProperties(Properties props, long dfltsFieldOff) throws IOException {
- Properties dflts = (Properties)getObject(props, dfltsFieldOff);
-
- if (dflts == null)
- writeBoolean(true);
- else {
- writeBoolean(false);
-
- writeObject0(dflts);
- }
-
- Set<String> names = props.stringPropertyNames();
-
- writeInt(names.size());
-
- for (String name : names) {
- writeUTF(name);
- writeUTF(props.getProperty(name));
- }
- }
-
- /**
- * Writes externalizable object.
- *
- * @param obj Object.
- * @throws IOException In case of error.
- */
- void writeExternalizable(Object obj) throws IOException {
- Externalizable extObj = (Externalizable)obj;
-
- extObj.writeExternal(this);
- }
-
- /**
- * Writes serializable object.
- *
- * @param obj Object.
- * @param mtds {@code writeObject} methods.
- * @param fields class fields details.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- void writeSerializable(Object obj, List<Method> mtds, OptimizedClassDescriptor.Fields fields)
- throws IOException {
- for (int i = 0; i < mtds.size(); i++) {
- Method mtd = mtds.get(i);
-
- if (mtd != null) {
- curObj = obj;
- curFields = fields.fields(i);
-
- try {
- mtd.invoke(obj, this);
- }
- catch (IllegalAccessException e) {
- throw new IOException(e);
- }
- catch (InvocationTargetException e) {
- throw new IOException(e.getCause());
- }
- }
- else
- writeFields(obj, fields.fields(i));
- }
- }
-
- /**
- * Writes {@link ArrayList}.
- *
- * @param list List.
- * @throws IOException In case of error.
- */
- @SuppressWarnings({"ForLoopReplaceableByForEach", "TypeMayBeWeakened"})
- void writeArrayList(ArrayList<?> list) throws IOException {
- int size = list.size();
-
- writeInt(size);
-
- for (int i = 0; i < size; i++)
- writeObject0(list.get(i));
- }
-
- /**
- * Writes {@link HashMap}.
- *
- * @param map Map.
- * @param loadFactorFieldOff Load factor field offset.
- * @param set Whether writing underlying map from {@link HashSet}.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("TypeMayBeWeakened")
- void writeHashMap(HashMap<?, ?> map, long loadFactorFieldOff, boolean set) throws IOException {
- int size = map.size();
-
- writeInt(size);
- writeFloat(getFloat(map, loadFactorFieldOff));
-
- for (Map.Entry<?, ?> e : map.entrySet()) {
- writeObject0(e.getKey());
-
- if (!set)
- writeObject0(e.getValue());
- }
- }
-
- /**
- * Writes {@link HashSet}.
- *
- * @param set Set.
- * @param mapFieldOff Map field offset.
- * @param loadFactorFieldOff Load factor field offset.
- * @throws IOException In case of error.
- */
- void writeHashSet(HashSet<?> set, long mapFieldOff, long loadFactorFieldOff) throws IOException {
- writeHashMap((HashMap<?, ?>)getObject(set, mapFieldOff), loadFactorFieldOff, true);
- }
-
- /**
- * Writes {@link LinkedList}.
- *
- * @param list List.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("TypeMayBeWeakened")
- void writeLinkedList(LinkedList<?> list) throws IOException {
- int size = list.size();
-
- writeInt(size);
-
- for (Object obj : list)
- writeObject0(obj);
- }
-
- /**
- * Writes {@link LinkedHashMap}.
- *
- * @param map Map.
- * @param loadFactorFieldOff Load factor field offset.
- * @param accessOrderFieldOff access order field offset.
- * @param set Whether writing underlying map from {@link LinkedHashSet}.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("TypeMayBeWeakened")
- void writeLinkedHashMap(LinkedHashMap<?, ?> map, long loadFactorFieldOff, long accessOrderFieldOff, boolean set)
- throws IOException {
- int size = map.size();
-
- writeInt(size);
- writeFloat(getFloat(map, loadFactorFieldOff));
-
- if (accessOrderFieldOff >= 0)
- writeBoolean(getBoolean(map, accessOrderFieldOff));
- else
- writeBoolean(false);
-
- for (Map.Entry<?, ?> e : map.entrySet()) {
- writeObject0(e.getKey());
-
- if (!set)
- writeObject0(e.getValue());
- }
- }
-
- /**
- * Writes {@link LinkedHashSet}.
- *
- * @param set Set.
- * @param mapFieldOff Map field offset.
- * @param loadFactorFieldOff Load factor field offset.
- * @throws IOException In case of error.
- */
- void writeLinkedHashSet(LinkedHashSet<?> set, long mapFieldOff, long loadFactorFieldOff) throws IOException {
- LinkedHashMap<?, ?> map = (LinkedHashMap<?, ?>)getObject(set, mapFieldOff);
-
- writeLinkedHashMap(map, loadFactorFieldOff, -1, true);
- }
-
- /**
- * Writes {@link Date}.
- *
- * @param date Date.
- * @throws IOException In case of error.
- */
- void writeDate(Date date) throws IOException {
- writeLong(date.getTime());
- }
-
- /**
- * Writes all non-static and non-transient field values to this stream.
- *
- * @param obj Object.
- * @param fields Fields.
- * @throws IOException In case of error.
- */
- @SuppressWarnings("ForLoopReplaceableByForEach")
- private void writeFields(Object obj, OptimizedClassDescriptor.ClassFields fields) throws IOException {
- for (int i = 0; i < fields.size(); i++) {
- OptimizedClassDescriptor.FieldInfo t = fields.get(i);
-
- switch (t.type()) {
- case BYTE:
- if (t.field() != null)
- writeByte(getByte(obj, t.offset()));
-
- break;
-
- case SHORT:
- if (t.field() != null)
- writeShort(getShort(obj, t.offset()));
-
- break;
-
- case INT:
- if (t.field() != null)
- writeInt(getInt(obj, t.offset()));
-
- break;
-
- case LONG:
- if (t.field() != null)
- writeLong(getLong(obj, t.offset()));
-
- break;
-
- case FLOAT:
- if (t.field() != null)
- writeFloat(getFloat(obj, t.offset()));
-
- break;
-
- case DOUBLE:
- if (t.field() != null)
- writeDouble(getDouble(obj, t.offset()));
-
- break;
-
- case CHAR:
- if (t.field() != null)
- writeChar(getChar(obj, t.offset()));
-
- break;
-
- case BOOLEAN:
- if (t.field() != null)
- writeBoolean(getBoolean(obj, t.offset()));
-
- break;
-
- case OTHER:
- if (t.field() != null)
- writeObject0(getObject(obj, t.offset()));
- }
- }
- }
-
- /**
- * Writes array of {@code byte}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeByteArray(byte[] arr) throws IOException {
- out.writeByteArray(arr);
- }
-
- /**
- * Writes array of {@code short}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeShortArray(short[] arr) throws IOException {
- out.writeShortArray(arr);
- }
-
- /**
- * Writes array of {@code int}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeIntArray(int[] arr) throws IOException {
- out.writeIntArray(arr);
- }
-
- /**
- * Writes array of {@code long}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeLongArray(long[] arr) throws IOException {
- out.writeLongArray(arr);
- }
-
- /**
- * Writes array of {@code float}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeFloatArray(float[] arr) throws IOException {
- out.writeFloatArray(arr);
- }
-
- /**
- * Writes array of {@code double}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeDoubleArray(double[] arr) throws IOException {
- out.writeDoubleArray(arr);
- }
-
- /**
- * Writes array of {@code char}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeCharArray(char[] arr) throws IOException {
- out.writeCharArray(arr);
- }
-
- /**
- * Writes array of {@code boolean}s.
- *
- * @param arr Array.
- * @throws IOException In case of error.
- */
- void writeBooleanArray(boolean[] arr) throws IOException {
- out.writeBooleanArray(arr);
- }
-
- /**
- * Writes {@link String}.
- *
- * @param str String.
- * @throws IOException In case of error.
- */
- void writeString(String str) throws IOException {
- out.writeUTF(str);
- }
-
- /** {@inheritDoc} */
- @Override public void writeBoolean(boolean v) throws IOException {
- out.writeBoolean(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeByte(int v) throws IOException {
- out.writeByte(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeShort(int v) throws IOException {
- out.writeShort(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeChar(int v) throws IOException {
- out.writeChar(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeInt(int v) throws IOException {
- out.writeInt(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeLong(long v) throws IOException {
- out.writeLong(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeFloat(float v) throws IOException {
- out.writeFloat(v);
- }
-
- /** {@inheritDoc} */
- @Override public void writeDouble(double v) throws IOException {
- out.writeDouble(v);
- }
-
- /** {@inheritDoc} */
- @Override public void write(int b) throws IOException {
- writeByte(b);
- }
-
- /** {@inheritDoc} */
- @Override public void writeBytes(String s) throws IOException {
- out.writeBytes(s);
- }
-
- /** {@inheritDoc} */
- @Override public void writeChars(String s) throws IOException {
- out.writeChars(s);
- }
-
- /** {@inheritDoc} */
- @Override public void writeUTF(String s) throws IOException {
- out.writeUTF(s);
- }
-
- /** {@inheritDoc} */
- @Override public void useProtocolVersion(int ver) throws IOException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void writeUnshared(Object obj) throws IOException {
- writeObject0(obj);
- }
-
- /** {@inheritDoc} */
- @Override public void defaultWriteObject() throws IOException {
- if (curObj == null)
- throw new NotActiveException("Not in writeObject() call.");
-
- writeFields(curObj, curFields);
- }
-
- /** {@inheritDoc} */
- @Override public ObjectOutputStream.PutField putFields() throws IOException {
- if (curObj == null)
- throw new NotActiveException("Not in writeObject() call or fields already written.");
-
- if (curPut == null)
- curPut = new PutFieldImpl(this);
-
- return curPut;
- }
-
- /** {@inheritDoc} */
- @Override public void writeFields() throws IOException {
- if (curObj == null)
- throw new NotActiveException("Not in writeObject() call.");
-
- if (curPut == null)
- throw new NotActiveException("putFields() was not called.");
-
- for (IgniteBiTuple<OptimizedFieldType, Object> t : curPut.objs) {
- switch (t.get1()) {
- case BYTE:
- writeByte((Byte)t.get2());
-
- break;
-
- case SHORT:
- writeShort((Short)t.get2());
-
- break;
-
- case INT:
- writeInt((Integer)t.get2());
-
- break;
-
- case LONG:
- writeLong((Long)t.get2());
-
- break;
-
- case FLOAT:
- writeFloat((Float)t.get2());
-
- break;
-
- case DOUBLE:
- writeDouble((Double)t.get2());
-
- break;
-
- case CHAR:
- writeChar((Character)t.get2());
-
- break;
-
- case BOOLEAN:
- writeBoolean((Boolean)t.get2());
-
- break;
-
- case OTHER:
- writeObject0(t.get2());
- }
- }
- }
-
- /** {@inheritDoc} */
- @Override public void reset() throws IOException {
- out.reset();
- handles.clear();
-
- curObj = null;
- curFields = null;
- curPut = null;
- }
-
- /** {@inheritDoc} */
- @Override public void flush() throws IOException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void drain() throws IOException {
- // No-op.
- }
-
- /**
- * Returns objects that were added to handles table.
- * Used ONLY for test purposes.
- *
- * @return Handled objects.
- */
- Object[] handledObjects() {
- return handles.objects();
- }
-
- /**
- * {@link PutField} implementation.
- */
- private static class PutFieldImpl extends PutField {
- /** Stream. */
- private final OptimizedObjectOutputStream out;
-
- /** Fields info. */
- private final OptimizedClassDescriptor.ClassFields curFields;
- /** Values. */
- private final IgniteBiTuple<OptimizedFieldType, Object>[] objs;
-
- /**
- * @param out Output stream.
- */
- @SuppressWarnings("unchecked")
- private PutFieldImpl(OptimizedObjectOutputStream out) {
- this.out = out;
-
- curFields = out.curFields;
-
- objs = new IgniteBiTuple[curFields.size()];
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, boolean val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, byte val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, char val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, short val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, int val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, long val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, float val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, double val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void put(String name, Object val) {
- value(name, val);
- }
-
- /** {@inheritDoc} */
- @Override public void write(ObjectOutput out) throws IOException {
- if (out != this.out)
- throw new IllegalArgumentException("Wrong stream.");
-
- this.out.writeFields();
- }
-
- /**
- * @param name Field name.
- * @param val Value.
- */
- private void value(String name, Object val) {
- int i = curFields.getIndex(name);
-
- OptimizedClassDescriptor.FieldInfo info = curFields.get(i);
-
- objs[i] = F.t(info.type(), val);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamRegistry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamRegistry.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamRegistry.java
deleted file mode 100644
index fd1b917..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamRegistry.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.IOException;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.IgniteInterruptedCheckedException;
-import org.apache.ignite.internal.util.io.GridUnsafeDataInput;
-import org.apache.ignite.internal.util.io.GridUnsafeDataOutput;
-import org.apache.ignite.internal.util.typedef.internal.U;
-
-/**
- * Storage for object streams.
- */
-class OptimizedObjectStreamRegistry {
- /** Holders. */
- private static final ThreadLocal<StreamHolder> holders = new ThreadLocal<>();
-
- /** Output streams pool. */
- private static BlockingQueue<OptimizedObjectOutputStream> outPool;
-
- /** Input streams pool. */
- private static BlockingQueue<OptimizedObjectInputStream> inPool;
-
- /**
- * Ensures singleton.
- */
- private OptimizedObjectStreamRegistry() {
- // No-op.
- }
-
- /**
- * Sets streams pool size.
- *
- * @param size Streams pool size.
- */
- static void poolSize(int size) {
- if (size > 0) {
- outPool = new LinkedBlockingQueue<>(size);
- inPool = new LinkedBlockingQueue<>(size);
-
- for (int i = 0; i < size; i++) {
- outPool.offer(createOut());
- inPool.offer(createIn());
- }
- }
- else {
- outPool = null;
- inPool = null;
- }
- }
-
- /**
- * Gets output stream.
- *
- * @return Object output stream.
- * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
- */
- static OptimizedObjectOutputStream out() throws IgniteInterruptedCheckedException {
- if (outPool != null) {
- try {
- return outPool.take();
- }
- catch (InterruptedException e) {
- throw new IgniteInterruptedCheckedException(
- "Failed to take output object stream from pool (thread interrupted).", e);
- }
- }
- else
- return holder().acquireOut();
- }
-
- /**
- * Gets input stream.
- *
- * @return Object input stream.
- * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
- */
- static OptimizedObjectInputStream in() throws IgniteInterruptedCheckedException {
- if (inPool != null) {
- try {
- return inPool.take();
- }
- catch (InterruptedException e) {
- throw new IgniteInterruptedCheckedException(
- "Failed to take input object stream from pool (thread interrupted).", e);
- }
- }
- else
- return holder().acquireIn();
- }
-
- /**
- * Closes and releases output stream.
- *
- * @param out Object output stream.
- */
- static void closeOut(OptimizedObjectOutputStream out) {
- U.close(out, null);
-
- if (outPool != null) {
- boolean b = outPool.offer(out);
-
- assert b;
- }
- else {
- StreamHolder holder = holders.get();
-
- if (holder != null)
- holder.releaseOut();
- }
- }
-
- /**
- * Closes and releases input stream.
- *
- * @param in Object input stream.
- */
- @SuppressWarnings("TypeMayBeWeakened")
- static void closeIn(OptimizedObjectInputStream in) {
- U.close(in, null);
-
- if (inPool != null) {
- boolean b = inPool.offer(in);
-
- assert b;
- }
- else {
- StreamHolder holder = holders.get();
-
- if (holder != null)
- holder.releaseIn();
- }
- }
-
- /**
- * Gets holder from pool or thread local.
- *
- * @return Stream holder.
- * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
- */
- private static StreamHolder holder() throws IgniteInterruptedCheckedException {
- StreamHolder holder = holders.get();
-
- if (holder == null)
- holders.set(holder = new StreamHolder());
-
- return holder;
- }
-
- /**
- * Creates output stream.
- *
- * @return Object output stream.
- */
- private static OptimizedObjectOutputStream createOut() {
- try {
- return new OptimizedObjectOutputStream(new GridUnsafeDataOutput(4 * 1024));
- }
- catch (IOException e) {
- throw new IgniteException("Failed to create object output stream.", e);
- }
- }
-
- /**
- * Creates input stream.
- *
- * @return Object input stream.
- */
- private static OptimizedObjectInputStream createIn() {
- try {
- return new OptimizedObjectInputStream(new GridUnsafeDataInput());
- }
- catch (IOException e) {
- throw new IgniteException("Failed to create object input stream.", e);
- }
- }
-
- /**
- * Streams holder.
- */
- private static class StreamHolder {
- /** Output stream. */
- private final OptimizedObjectOutputStream out = createOut();
-
- /** Input stream. */
- private final OptimizedObjectInputStream in = createIn();
-
- /** Output streams counter. */
- private int outAcquireCnt;
-
- /** Input streams counter. */
- private int inAcquireCnt;
-
- /**
- * Gets output stream.
- *
- * @return Object output stream.
- */
- OptimizedObjectOutputStream acquireOut() {
- return outAcquireCnt++ > 0 ? createOut() : out;
- }
-
- /**
- * Gets input stream.
- *
- * @return Object input stream.
- */
- OptimizedObjectInputStream acquireIn() {
- return inAcquireCnt++ > 0 ? createIn() : in;
- }
-
- /**
- * Releases output stream.
- */
- void releaseOut() {
- outAcquireCnt--;
- }
-
- /**
- * Releases input stream.
- */
- void releaseIn() {
- inAcquireCnt--;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/package-info.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/package-info.java
deleted file mode 100644
index bb61add..0000000
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Contains Optimized marshaller.
- */
-package org.apache.ignite.marshaller.optimized;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties
index 9cce826..b68af96 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1867,7 +1867,7 @@ org.apache.ignite.lang.IgniteRunnable
org.apache.ignite.lang.IgniteUuid
org.apache.ignite.lifecycle.LifecycleEventType
org.apache.ignite.marshaller.jdk.JdkMarshallerDummySerializable
-org.apache.ignite.marshaller.optimized.OptimizedFieldType
+org.apache.ignite.internal.marshaller.optimized.OptimizedFieldType
org.apache.ignite.messaging.MessagingListenActor
org.apache.ignite.platform.dotnet.PlatformDotNetAffinityFunction
org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/example-cache.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/example-cache.xml b/modules/core/src/test/config/example-cache.xml
index d9556af..770d6df 100644
--- a/modules/core/src/test/config/example-cache.xml
+++ b/modules/core/src/test/config/example-cache.xml
@@ -44,10 +44,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- <!-- Set to false to allow non-serializable objects in examples, default is true. -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!-- Enable cache events for examples. -->
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/igfs-loopback.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/igfs-loopback.xml b/modules/core/src/test/config/igfs-loopback.xml
index 5bfbdae..7ec5f10 100644
--- a/modules/core/src/test/config/igfs-loopback.xml
+++ b/modules/core/src/test/config/igfs-loopback.xml
@@ -57,7 +57,7 @@
Configure optimized marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<!--
For better performance set this property to true in case
all marshalled classes implement java.io.Serializable.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/igfs-shmem.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/igfs-shmem.xml b/modules/core/src/test/config/igfs-shmem.xml
index 5876b41..f6b1790 100644
--- a/modules/core/src/test/config/igfs-shmem.xml
+++ b/modules/core/src/test/config/igfs-shmem.xml
@@ -57,7 +57,7 @@
Configure optimized marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<!--
For better performance set this property to true in case
all marshalled classes implement java.io.Serializable.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/spring-start-nodes-attr.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/spring-start-nodes-attr.xml b/modules/core/src/test/config/spring-start-nodes-attr.xml
index 8db8598..b329973 100644
--- a/modules/core/src/test/config/spring-start-nodes-attr.xml
+++ b/modules/core/src/test/config/spring-start-nodes-attr.xml
@@ -37,7 +37,7 @@
<property name="connectorConfiguration"><null/></property>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/spring-start-nodes.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/spring-start-nodes.xml b/modules/core/src/test/config/spring-start-nodes.xml
index 8ab68fb..9b2ee94 100644
--- a/modules/core/src/test/config/spring-start-nodes.xml
+++ b/modules/core/src/test/config/spring-start-nodes.xml
@@ -31,7 +31,7 @@
<property name="connectorConfiguration"><null/></property>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<property name="requireSerializable" value="false"/>
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/config/websession/example-cache-base.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/websession/example-cache-base.xml b/modules/core/src/test/config/websession/example-cache-base.xml
index d3d5b46..1eeb06e 100644
--- a/modules/core/src/test/config/websession/example-cache-base.xml
+++ b/modules/core/src/test/config/websession/example-cache-base.xml
@@ -30,10 +30,7 @@
<property name="peerClassLoadingEnabled" value="true"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
- <!-- Set to false to allow non-serializable objects in examples, default is true. -->
- <property name="requireSerializable" value="false"/>
- </bean>
+ <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<!-- Enable cache events for examples. -->
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
index 63436ab..bfb8326 100644
--- a/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/IgniteExternalizableAbstractTest.java
@@ -19,11 +19,11 @@ package org.apache.ignite;
import java.util.ArrayList;
import java.util.List;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerSelfTest.java
deleted file mode 100644
index 3f6c9b4..0000000
--- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerSelfTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.cache.store.jdbc;
-
-import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
-
-/**
- * Test for {@link CacheJdbcPojoStore} with optimized marshaller.
- */
-public class CacheJdbcPojoStoreOptimizedMarshallerSelfTest extends CacheJdbcPojoStoreAbstractSelfTest {
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller(){
- return new OptimizedMarshaller();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest.java
deleted file mode 100644
index d1ce726..0000000
--- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.cache.store.jdbc;
-
-/**
- * Test for {@link CacheJdbcPojoStore} with optimized marshaller and enabled SQL escaping.
- */
-public class CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest extends CacheJdbcPojoStoreOptimizedMarshallerSelfTest {
- /** {@inheritDoc} */
- @Override protected boolean sqlEscapeAll(){
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
index 3092374..110ea30 100644
--- a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
@@ -24,8 +24,8 @@ import java.net.URI;
import java.util.Arrays;
import java.util.concurrent.Callable;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
index 17ef65a..7b80f6a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridLifecycleAwareSelfTest.java
@@ -24,11 +24,11 @@ import org.apache.ignite.configuration.ConnectorConfiguration;
import org.apache.ignite.configuration.ConnectorMessageInterceptor;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.client.ssl.GridSslContextFactory;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.lifecycle.LifecycleAware;
import org.apache.ignite.lifecycle.LifecycleBean;
import org.apache.ignite.lifecycle.LifecycleEventType;
import org.apache.ignite.logger.java.JavaLogger;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.plugin.segmentation.SegmentationResolver;
import org.apache.ignite.testframework.junits.common.GridAbstractLifecycleAwareSelfTest;
import org.jetbrains.annotations.Nullable;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
index 328b775..27b7825 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridManagerStopSelfTest.java
@@ -27,9 +27,9 @@ import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
import org.apache.ignite.internal.managers.swapspace.GridSwapSpaceManager;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.pool.PoolProcessor;
import org.apache.ignite.internal.processors.resource.GridResourceProcessor;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.resources.LoggerResource;
import org.apache.ignite.spi.IgniteSpi;
import org.apache.ignite.spi.checkpoint.sharedfs.SharedFsCheckpointSpi;
[10/14] ignite git commit: Merge branch 'master' into ignite-4938
Posted by ag...@apache.org.
Merge branch 'master' into ignite-4938
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a3686db0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a3686db0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a3686db0
Branch: refs/heads/ignite-4938
Commit: a3686db055a55c87484ebad04e37f13ad06f93ce
Parents: faa8681 c9d08d3
Author: Alexander Paschenko <al...@gmail.com>
Authored: Tue Apr 11 14:43:48 2017 +0300
Committer: Alexander Paschenko <al...@gmail.com>
Committed: Tue Apr 11 14:43:48 2017 +0300
----------------------------------------------------------------------
.gitignore | 31 +-
.../communication/GridIoMessageFactory.java | 8 +-
.../processors/cache/GridCacheAtomicFuture.java | 2 +-
.../processors/cache/GridCacheMvccManager.java | 84 +++-
.../GridCachePartitionExchangeManager.java | 7 +-
.../processors/cache/GridCachePreloader.java | 4 +-
.../cache/GridCachePreloaderAdapter.java | 4 +-
.../cache/GridDeferredAckMessageSender.java | 11 +-
.../GridDhtAtomicAbstractUpdateFuture.java | 4 +-
.../GridNearAtomicAbstractUpdateFuture.java | 2 +-
.../GridNearAtomicSingleUpdateFuture.java | 21 +-
.../dht/atomic/GridNearAtomicUpdateFuture.java | 23 +-
.../dht/preloader/GridDhtPartitionDemander.java | 2 +-
.../dht/preloader/GridDhtPartitionSupplier.java | 310 +--------------
.../GridDhtPartitionSupplyMessage.java | 99 ++---
.../GridDhtPartitionSupplyMessageV2.java | 384 -------------------
.../dht/preloader/GridDhtPreloader.java | 3 +-
.../cache/transactions/IgniteTxManager.java | 2 +-
.../datastructures/GridCacheSemaphoreImpl.java | 74 +++-
.../datastructures/GridCacheSemaphoreState.java | 22 ++
.../resources/META-INF/classnames.properties | 1 -
...eAbstractDataStructuresFailoverSelfTest.java | 21 +-
.../CacheLateAffinityAssignmentTest.java | 6 +-
.../IgniteCacheReadFromBackupTest.java | 6 +-
.../atomic/IgniteCacheAtomicProtocolTest.java | 3 +-
modules/log4j2/pom.xml | 4 +-
.../ignite/logger/log4j2/Log4J2Logger.java | 23 +-
.../binary/include/ignite/binary/binary_type.h | 129 ++-----
.../ignite/impl/binary/binary_id_resolver.h | 33 +-
.../ignite/impl/binary/binary_object_impl.h | 3 +-
.../ignite/impl/binary/binary_reader_impl.h | 80 +++-
.../ignite/impl/binary/binary_type_impl.h | 12 +-
.../include/ignite/impl/binary/binary_utils.h | 6 +-
.../ignite/impl/binary/binary_writer_impl.h | 15 +-
.../core-test/include/ignite/binary_test_defs.h | 117 +++---
.../cpp/core-test/include/ignite/complex_type.h | 30 +-
.../cpp/core-test/include/ignite/test_type.h | 37 +-
.../src/binary_identity_resolver_test.cpp | 92 ++---
.../cpp/core-test/src/binary_object_test.cpp | 4 +-
.../cpp/core-test/src/binary_test_defs.cpp | 5 +
.../cpp/core-test/src/cache_invoke_test.cpp | 18 +-
.../cpp/core-test/src/cache_query_test.cpp | 12 +-
.../platforms/cpp/core-test/src/cache_test.cpp | 38 +-
.../cpp/core-test/src/continuous_query_test.cpp | 34 +-
.../cpp/core/include/ignite/ignite_binding.h | 6 +-
.../impl/cache/cache_entry_processor_holder.h | 33 +-
.../cpp/odbc-test/include/complex_type.h | 26 +-
.../platforms/cpp/odbc-test/include/test_type.h | 37 +-
48 files changed, 677 insertions(+), 1251 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a3686db0/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
[03/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
index f75af03..cf4213b 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/DynamicProxySerializationMultiJvmSelfTest.java
@@ -26,7 +26,6 @@ import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.lang.IgniteCallable;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
@@ -58,19 +57,6 @@ public class DynamicProxySerializationMultiJvmSelfTest extends GridCommonAbstrac
/**
* @throws Exception If failed.
*/
- public void testOptimizedMarshaller() throws Exception {
- marshFactory = new Callable<Marshaller>() {
- @Override public Marshaller call() throws Exception {
- return new OptimizedMarshaller(false);
- }
- };
-
- doTestMarshaller();
- }
-
- /**
- * @throws Exception If failed.
- */
public void testBinaryMarshaller() throws Exception {
marshFactory = new Callable<Marshaller>() {
@Override public Marshaller call() throws Exception {
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
index a9d0f66..3148bc0 100644
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/marshaller/GridMarshallerPerformanceTest.java
@@ -17,10 +17,6 @@
package org.apache.ignite.marshaller;
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.KryoSerializable;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
@@ -34,7 +30,12 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.KryoSerializable;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.lang.GridTuple;
import org.apache.ignite.internal.util.typedef.CI1;
import org.apache.ignite.internal.util.typedef.CIX1;
@@ -43,7 +44,6 @@ import org.apache.ignite.internal.util.typedef.COX;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteOutClosure;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
deleted file mode 100644
index c072170..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerEnumSelfTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import junit.framework.TestCase;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.testframework.junits.GridTestKernalContext;
-import org.apache.ignite.testframework.junits.logger.GridTestLog4jLogger;
-
-/**
- *
- */
-public class OptimizedMarshallerEnumSelfTest extends TestCase {
-
- private String igniteHome = System.getProperty("user.dir");
-
- private final IgniteLogger rootLog = new GridTestLog4jLogger(false);
- /**
- * @throws Exception If failed.
- */
- public void testEnumSerialisation() throws Exception {
- OptimizedMarshaller marsh = new OptimizedMarshaller();
-
- MarshallerContextTestImpl context = new MarshallerContextTestImpl();
-
- context.onMarshallerProcessorStarted(newContext(), null);
-
- marsh.setContext(context);
-
- byte[] bytes = marsh.marshal(TestEnum.Bond);
-
- TestEnum unmarshalled = marsh.unmarshal(bytes, Thread.currentThread().getContextClassLoader());
-
- assertEquals(TestEnum.Bond, unmarshalled);
- assertEquals(TestEnum.Bond.desc, unmarshalled.desc);
- }
-
- private GridKernalContext newContext() throws IgniteCheckedException {
- IgniteConfiguration cfg = new IgniteConfiguration();
-
- cfg.setIgniteHome(igniteHome);
- cfg.setClientMode(false);
-
- return new GridTestKernalContext(rootLog.getLogger(OptimizedMarshallerEnumSelfTest.class), cfg);
- }
-
- private enum TestEnum {
- Equity("Equity") {
- @Override public String getTestString() {
- return "eee";
- }
- },
-
- Bond("Bond") {
- @Override public String getTestString() {
- return "qqq";
- }
- };
-
- public final String desc;
-
- TestEnum(String desc) {
- this.desc = desc;
- }
-
- public abstract String getTestString();
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
deleted file mode 100644
index d6bbdb4..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.File;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-
-import static org.apache.ignite.cache.CacheMode.PARTITIONED;
-import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
-
-/**
- *
- */
-public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest {
- /** */
- private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
-
- /** */
- private boolean cache;
-
- /** */
- private String workDir;
-
- /** {@inheritDoc} */
- @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
- IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
-
- TcpDiscoverySpi disco = new TcpDiscoverySpi();
-
- disco.setIpFinder(ipFinder);
-
- cfg.setDiscoverySpi(disco);
-
- cfg.setMarshaller(new OptimizedMarshaller());
-
- cfg.setWorkDirectory(workDir);
-
- if (cache) {
- CacheConfiguration ccfg = new CacheConfiguration();
-
- ccfg.setCacheMode(PARTITIONED);
- ccfg.setBackups(1);
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
-
- cfg.setCacheConfiguration(ccfg);
- }
- else
- cfg.setClientMode(true);
-
- return cfg;
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testClassCacheUpdateFailover1() throws Exception {
- classCacheUpdateFailover(false);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testClassCacheUpdateFailover2() throws Exception {
- classCacheUpdateFailover(true);
- }
-
- /**
- * @param stopSrv If {@code true} restarts server node, otherwise client node.
- * @throws Exception If failed.
- */
- private void classCacheUpdateFailover(boolean stopSrv) throws Exception {
- cache = true;
-
- startGridsMultiThreaded(2);
-
- cache = stopSrv;
-
- IgniteCache<Integer, Object> cache0 = ignite(0).cache(null);
-
- for (int i = 0; i < 20; i++) {
- log.info("Iteration: " + i);
-
- Map<Integer, Object> map = new HashMap<>();
-
- for (int j = 0; j < 10_000; j++)
- map.put(j, create(i + 1));
-
- final Ignite ignite = startGrid(2);
-
- IgniteInternalFuture fut = GridTestUtils.runAsync(new Callable() {
- @Override public Object call() throws Exception {
- ignite.close();
-
- return null;
- }
- });
-
- cache0.putAll(map);
-
- fut.get();
- }
-
- cache = true;
-
- Ignite ignite = startGrid(2); // Check can start one more cache node.
-
- assertNotNull(ignite.cache(null));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testRestartAllNodes() throws Exception {
- cache = true;
-
- String home = U.getIgniteHome();
-
- String[] workDirs = new String[3];
-
- for (int i = 0; i < 3; i++) {
- workDirs[i] = home + "/work/marshallerTestNode_" + i;
-
- File file = new File(workDirs[i]);
-
- if (file.exists())
- assert U.delete(file);
- }
-
- try {
- for (int i = 0; i < workDirs.length; i++) {
- workDir = workDirs[i];
-
- startGrid(i);
- }
-
- Marshaller marsh = ignite(0).configuration().getMarshaller();
-
- TestClass1 obj = new TestClass1();
-
- obj.val = 111;
-
- byte[] bytes = marsh.marshal(obj);
-
- stopAllGrids();
-
- for (int i = 0; i < workDirs.length; i++) {
- workDir = workDirs[i];
-
- startGrid(i);
- }
-
- for (int i = 0; i < 3; i++) {
- marsh = ignite(i).configuration().getMarshaller();
-
- TestClass1 obj0 = marsh.unmarshal(bytes, null);
-
- assertEquals(111, obj0.val);
- }
- }
- finally {
- for (String dir : workDirs)
- assert U.delete(new File(dir));
- }
- }
-
- /** {@inheritDoc} */
- @Override protected void afterTest() throws Exception {
- super.afterTest();
-
- stopAllGrids();
- }
-
- /**
- * @param id Class ID.
- * @return Test class instance.
- */
- private static Object create(int id) {
- switch (id) {
- case 1: return new TestClass1();
-
- case 2: return new TestClass2();
-
- case 3: return new TestClass3();
-
- case 4: return new TestClass4();
-
- case 5: return new TestClass5();
-
- case 6: return new TestClass6();
-
- case 7: return new TestClass7();
-
- case 8: return new TestClass8();
-
- case 9: return new TestClass9();
-
- case 10: return new TestClass10();
-
- case 11: return new TestClass11();
-
- case 12: return new TestClass12();
-
- case 13: return new TestClass13();
-
- case 14: return new TestClass14();
-
- case 15: return new TestClass15();
-
- case 16: return new TestClass16();
-
- case 17: return new TestClass17();
-
- case 18: return new TestClass18();
-
- case 19: return new TestClass19();
-
- case 20: return new TestClass20();
- }
-
- fail();
-
- return null;
- }
-
- /**
- *
- */
- static class TestClass1 implements Serializable {
- /** */
- int val;
- }
-
- /**
- *
- */
- static class TestClass2 implements Serializable {}
-
- /**
- *
- */
- static class TestClass3 implements Serializable {}
-
- /**
- *
- */
- static class TestClass4 implements Serializable {}
-
- /**
- *
- */
- static class TestClass5 implements Serializable {}
-
- /**
- *
- */
- static class TestClass6 implements Serializable {}
-
- /**
- *
- */
- static class TestClass7 implements Serializable {}
-
- /**
- *
- */
- static class TestClass8 implements Serializable {}
-
- /**
- *
- */
- static class TestClass9 implements Serializable {}
-
- /**
- *
- */
- static class TestClass10 implements Serializable {}
-
- /**
- *
- */
- static class TestClass11 implements Serializable {}
-
- /**
- *
- */
- static class TestClass12 implements Serializable {}
-
- /**
- *
- */
- static class TestClass13 implements Serializable {}
-
- /**
- *
- */
- static class TestClass14 implements Serializable {}
-
- /**
- *
- */
- static class TestClass15 implements Serializable {}
-
- /**
- *
- */
- static class TestClass16 implements Serializable {}
-
- /**
- *
- */
- static class TestClass17 implements Serializable {}
-
- /**
- *
- */
- static class TestClass18 implements Serializable {}
-
- /**
- *
- */
- static class TestClass19 implements Serializable {}
-
- /**
- *
- */
- static class TestClass20 implements Serializable {}
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
deleted file mode 100644
index a883270..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerPooledSelfTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.testframework.junits.common.GridCommonTest;
-
-/**
- * Optimized marshaller self test.
- */
-@GridCommonTest(group = "Marshaller")
-public class OptimizedMarshallerPooledSelfTest extends OptimizedMarshallerSelfTest {
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller() {
- OptimizedMarshaller m = new OptimizedMarshaller(false);
-
- m.setPoolSize(8);
-
- return m;
- }
-
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- super.afterTestsStopped();
-
- // Reset static registry.
- new OptimizedMarshaller().setPoolSize(0);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java
deleted file mode 100644
index a034b3a..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSelfTest.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.concurrent.Callable;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.lang.IgniteRunnable;
-import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
-import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.common.GridCommonTest;
-
-/**
- * Optimized marshaller self test.
- */
-@GridCommonTest(group = "Marshaller")
-public class OptimizedMarshallerSelfTest extends GridMarshallerAbstractTest {
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller() {
- return new OptimizedMarshaller(false);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testTestMarshalling() throws Exception {
- final String msg = "PASSED";
-
- byte[] buf = marshal(new IgniteRunnable() {
- @Override public void run() {
- c1.apply(msg);
- c2.apply(msg);
-
- c3.apply();
- c4.reduce();
-
- System.out.println("Test message: " + msg);
- }
- });
-
- Runnable r = unmarshal(buf);
-
- assertNotNull(r);
-
- r.run();
- }
-
- /**
- * Tests marshal self-linked object.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testMarshallingSelfLink() throws IgniteCheckedException {
- SelfLink sl = new SelfLink("a string 1");
-
- sl.link(sl);
-
- SelfLink sl1 = unmarshal(marshal(sl));
-
- assert sl1.link() == sl1;
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testInvalid() throws Exception {
- GridTestUtils.assertThrows(
- log,
- new Callable<Object>() {
- @Override public Object call() throws Exception {
- byte[] arr = new byte[10];
-
- arr[0] = (byte)200;
-
- unmarshal(arr);
-
- return null;
- }
- },
- IgniteCheckedException.class,
- null
- );
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testNested() throws Exception {
- NestedTestObject obj = new NestedTestObject("String", 100);
-
- NestedTestObject newObj = unmarshal(marshal(obj));
-
- assertEquals("String", newObj.str);
- assertEquals(100, newObj.val);
- }
-
- /**
- * Class for nested execution test.
- */
- private static class NestedTestObject implements Serializable {
- /** */
- private String str;
-
- /** */
- private int val;
-
- /**
- * @param str String.
- * @param val Value.
- */
- private NestedTestObject(String str, int val) {
- this.str = str;
- this.val = val;
- }
-
- /** {@inheritDoc} */
- private void writeObject(ObjectOutputStream out) throws IOException {
- try {
- byte[] arr = marshal(str);
-
- out.writeInt(arr.length);
- out.write(arr);
-
- out.writeInt(val);
- }
- catch (IgniteCheckedException e) {
- throw new IOException(e);
- }
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("UnusedParameters")
- private void readObject(ObjectInputStream in) throws IOException {
- try {
- byte[] arr = new byte[in.readInt()];
-
- in.read(arr);
-
- str = unmarshal(arr);
-
- val = in.readInt();
- }
- catch (IgniteCheckedException e) {
- throw new IOException(e);
- }
- }
- }
-
- /** */
- private static class TestObject2 {
- /** */
- private final int i;
-
- /**
- * Constructor for TestObject2 instances.
- *
- * @param i Integer value to hold.
- */
- private TestObject2(int i) {
- this.i = i;
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- return i == ((TestObject2)o).i;
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return i;
- }
- }
-
- /**
- * Static nested class.
- */
- private static class TestObject {
- /** */
- private final TestObject2 o2;
-
- /** The only meaningful field in the class, used for {@link #equals(Object o)} and {@link #hashCode()}. */
- private final String str;
-
- /**
- * @param str String to hold.
- * @param i Integer.
- */
- TestObject(String str, int i) {
- this.str = str;
-
- o2 = new TestObject2(i);
- }
-
- /**
- * Method for accessing value of the hold string after the object is created.
- *
- * @return Wrapped string.
- */
- public String string() {
- return str;
- }
-
- /**
- * @return Object held in this wrapped.
- */
- public TestObject2 obj() {
- return o2;
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return 31 * o2.hashCode() + str.hashCode();
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("RedundantIfStatement")
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- TestObject obj = (TestObject)o;
-
- if (o2 != null ? !o2.equals(obj.o2) : obj.o2 != null)
- return false;
-
- if (str != null ? !str.equals(obj.str) : obj.str != null)
- return false;
-
- return true;
- }
- }
-
- /**
- * Static nested class.
- */
- private static class SelfLink extends TestObject {
- /** */
- private SelfLink link;
-
- /**
- * @param str String to hold.
- */
- SelfLink(String str) {
- super(str, 1);
- }
-
- /**
- * @return The object this link points to,.
- */
- public SelfLink link() {
- return link;
- }
-
- /**
- * @param link The object this link should points to,
- */
- public void link(SelfLink link) {
- this.link = link;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
deleted file mode 100644
index ef05009..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerSerialPersistentFieldsSelfTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.io.Serializable;
-import org.apache.ignite.marshaller.GridMarshallerAbstractTest;
-import org.apache.ignite.marshaller.Marshaller;
-
-/**
- * Test that Optimized Marshaller works with classes with serialPersistentFields.
- */
-public class OptimizedMarshallerSerialPersistentFieldsSelfTest extends GridMarshallerAbstractTest {
- /** {@inheritDoc} */
- @Override protected Marshaller marshaller() {
- return new OptimizedMarshaller(false);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testOptimizedMarshaller() throws Exception {
- unmarshal(marshal(new TestClass()));
-
- TestClass2 val = unmarshal(marshal(new TestClass2()));
-
- assertNull(val.field3);
- }
-
- /**
- * Test class with serialPersistentFields fields.
- */
- private static class TestClass implements Serializable {
- private static final long serialVersionUID = 0L;
-
- /** For serialization compatibility. */
- private static final ObjectStreamField[] serialPersistentFields = {
- new ObjectStreamField("field1", Integer.TYPE),
- new ObjectStreamField("field2", Integer.TYPE)
- };
-
- /**
- * @param s Object output stream.
- */
- private void writeObject(ObjectOutputStream s) throws IOException {
- s.putFields().put("field1", 1);
- s.putFields().put("field2", 2);
- s.writeFields();
-
- s.writeObject(null);
- }
-
- /**
- * @param s Object input stream.
- */
- private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
- s.defaultReadObject();
-
- s.readObject();
- }
- }
-
- /**
- * Test class with serialPersistentFields fields.
- */
- private static class TestClass2 implements Serializable {
- private static final long serialVersionUID = 0L;
-
- private Integer field3 = 1;
-
- /** For serialization compatibility. */
- private static final ObjectStreamField[] serialPersistentFields = {
- new ObjectStreamField("field1", Integer.TYPE),
- new ObjectStreamField("field2", Integer.TYPE)
- };
-
- /**
- * @param s Object output stream.
- */
- private void writeObject(ObjectOutputStream s) throws IOException {
- s.putFields().put("field1", 1);
- s.putFields().put("field2", 2);
- s.writeFields();
-
- s.writeObject(null);
- }
-
- /**
- * @param s Object input stream.
- */
- private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
- s.defaultReadObject();
-
- s.readObject();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java
deleted file mode 100644
index 2658a29..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerTest.java
+++ /dev/null
@@ -1,790 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.net.InetSocketAddress;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.compute.ComputeJobAdapter;
-import org.apache.ignite.compute.ComputeTask;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.GridMarshallerTestInheritedBean;
-import org.apache.ignite.marshaller.Marshaller;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.jetbrains.annotations.Nullable;
-
-/**
- *
- */
-public class OptimizedMarshallerTest extends GridCommonAbstractTest {
- /**
- * @return Marshaller.
- */
- private OptimizedMarshaller marshaller() {
- U.clearClassCache();
-
- OptimizedMarshaller marsh = new OptimizedMarshaller();
-
- marsh.setContext(new MarshallerContextTestImpl());
-
- return marsh;
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- NonSerializable outObj = marsh.unmarshal(marsh.marshal(new NonSerializable(null)), null);
-
- outObj.checkAfterUnmarshalled();
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable1() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- byte[] bytes = marsh.marshal(new TcpDiscoveryVmIpFinder());
-
- TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null);
-
- assertFalse(ipFinder.isShared());
-
- ipFinder = marsh.unmarshal(marsh.marshal(new TcpDiscoveryVmIpFinder(true)), null);
-
- assertTrue(ipFinder.isShared());
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable2() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- TcpDiscoveryIpFinderAdapter ipFinder = new TcpDiscoveryIpFinderAdapter() {
- @Override public Collection<InetSocketAddress> getRegisteredAddresses() {
- return null;
- }
-
- @Override public void registerAddresses(Collection<InetSocketAddress> addrs) {
- //No-op.
- }
-
- @Override public void unregisterAddresses(Collection<InetSocketAddress> addrs) {
- //No-op.
- }
- };
-
- ipFinder.setShared(false);
-
- byte[] bytes = marsh.marshal(ipFinder);
-
- ipFinder = marsh.unmarshal(bytes, null);
-
- assertFalse(ipFinder.isShared());
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable3() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- byte[] bytes = marsh.marshal(new TestTcpDiscoveryIpFinderAdapter());
-
- TcpDiscoveryIpFinder ipFinder = marsh.unmarshal(bytes, null);
-
- assertFalse(ipFinder.isShared());
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable4() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- byte[] bytes = marsh.marshal(new GridMarshallerTestInheritedBean());
-
- info(Arrays.toString(bytes));
-
- GridMarshallerTestInheritedBean bean = marsh.unmarshal(bytes, null);
-
- assertTrue(bean.isFlag());
- }
-
- /**
- * Tests ability to marshal non-serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testNonSerializable5() throws IgniteCheckedException {
- Marshaller marsh = marshaller();
-
- byte[] bytes = marsh.marshal(true);
-
- Boolean val = marsh.unmarshal(bytes, null);
-
- assertTrue(val);
- }
-
- /**
- * Tests ability to marshal serializable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testSerializable() throws IgniteCheckedException {
- Marshaller marsh = marshaller();
-
- SomeSerializable outObj = marsh.unmarshal(marsh.marshal(new SomeSerializable(null)), null);
-
- outObj.checkAfterUnmarshalled();
- }
-
- /**
- * @throws IgniteCheckedException If failed.
- */
- public void testSerializableAfterChangingValue() throws IgniteCheckedException {
- Marshaller marsh = marshaller();
-
- SomeSimpleSerializable newObj = new SomeSimpleSerializable();
-
- assert(newObj.flag);
-
- newObj.setFlagValue(false);
-
- assert(! newObj.flag);
-
- SomeSimpleSerializable outObj = marsh.unmarshal(marsh.marshal(newObj), null);
-
- assert (! outObj.flag);
- }
-
- /**
- * Tests ability to marshal externalizable objects.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testExternalizable() throws IgniteCheckedException {
- Marshaller marsh = marshaller();
-
- ExternalizableA outObj = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, true)), null);
- ExternalizableA outObj1 = marsh.unmarshal(marsh.marshal(new ExternalizableA(null, false)), null);
-
- assertNotNull(outObj);
- assertNotNull(outObj1);
- }
-
- /**
- * Tests {@link OptimizedMarshaller#setRequireSerializable(boolean)}.
- */
- public void testRequireSerializable() {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(true);
-
- try {
- marsh.marshal(new NonSerializable(null));
-
- fail();
- }
- catch (IgniteCheckedException ignore) {
- // No-op.
- }
- }
-
- /**
- * Tests {@link Proxy}.
- *
- * @throws IgniteCheckedException If marshalling failed.
- */
- public void testProxy() throws IgniteCheckedException {
- OptimizedMarshaller marsh = marshaller();
-
- marsh.setRequireSerializable(false);
-
- SomeItf inItf = (SomeItf)Proxy.newProxyInstance(
- OptimizedMarshallerTest.class.getClassLoader(), new Class[] {SomeItf.class},
- new InvocationHandler() {
- private NonSerializable obj = new NonSerializable(null);
-
- @Override public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable {
- obj.checkAfterUnmarshalled();
-
- return 17;
- }
- }
- );
-
- SomeItf outItf = marsh.unmarshal(marsh.marshal(inItf), null);
-
- assertEquals(outItf.checkAfterUnmarshalled(), 17);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testDescriptorCache() throws Exception {
- try {
- Ignite ignite = startGridsMultiThreaded(2);
-
- String taskClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask";
- String jobClsName = "org.apache.ignite.tests.p2p.SingleSplitTestTask$SingleSplitTestJob";
-
- ClassLoader ldr = getExternalClassLoader();
-
- Class<? extends ComputeTask<?, ?>> taskCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(taskClsName);
- Class<? extends ComputeTask<?, ?>> jobCls = (Class<? extends ComputeTask<?, ?>>)ldr.loadClass(jobClsName);
-
- ignite.compute().localDeployTask(taskCls, ldr);
-
- ignite.compute().execute(taskClsName, 2);
-
- ConcurrentMap<Class<?>, OptimizedClassDescriptor> cache =
- U.field(ignite.configuration().getMarshaller(), "clsMap");
-
- assertTrue(cache.containsKey(jobCls));
-
- ignite.compute().undeployTask(taskClsName);
-
- // Wait for undeploy.
- Thread.sleep(1000);
-
- assertFalse(cache.containsKey(jobCls));
- }
- finally {
- stopAllGrids();
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testPerformance() throws Exception {
- System.gc();
-
- checkPerformance(10000, 4);
- }
-
- /**
- * @param cnt Number of marshalling attempts.
- * @param tries Number of retries.
- * @throws Exception If failed.
- */
- private void checkPerformance(int cnt, int tries) throws Exception {
- Marshaller marsh = marshaller();
-
- for (int j = 0; j < tries; j++) {
- System.gc();
-
- long start = System.currentTimeMillis();
-
- for (int i = 0; i < cnt; i++) {
- TestCacheKey key = new TestCacheKey("key", "id");
-
- TestCacheKey outKey = marsh.unmarshal(marsh.marshal(key), null);
-
- assert key.equals(outKey);
- assert key.hashCode() == outKey.hashCode();
- }
-
- info("Time non-serializable: " + (System.currentTimeMillis() - start));
-
- System.gc();
-
- start = System.currentTimeMillis();
-
- for (int i = 0; i < cnt; i++) {
- TestCacheKeySerializable key1 = new TestCacheKeySerializable("key", "id");
-
- TestCacheKeySerializable outKey = marsh.unmarshal(marsh.marshal(key1), null);
-
- assert key1.equals(outKey);
- assert key1.hashCode() == outKey.hashCode();
- }
-
- info("Time serializable: " + (System.currentTimeMillis() - start));
-
- System.gc();
-
- start = System.currentTimeMillis();
-
- for (int i = 0; i < cnt; i++) {
- TestCacheKeyExternalizable key2 = new TestCacheKeyExternalizable("key", "id");
-
- TestCacheKeyExternalizable outKey = marsh.unmarshal(marsh.marshal(key2), null);
-
- assert key2.equals(outKey);
- assert key2.hashCode() == outKey.hashCode();
- }
-
- info("Time externalizable: " + (System.currentTimeMillis() - start));
-
- info(">>>");
- }
-
- info(">>> Finished performance check <<<");
- }
-
- /**
- * Some non-serializable class.
- */
- @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","FieldMayBeStatic"})
- private static class NonSerializableA {
- /** */
- private final long longVal = 0x33445566778899AAL;
-
- /** */
- protected Short shortVal = (short)0xAABB;
-
- /** */
- public String[] strArr = {"AA","BB"};
-
- /** */
- public boolean flag1 = true;
-
- /** */
- public boolean flag2;
-
- /** */
- public Boolean flag3;
-
- /** */
- public Boolean flag4 = true;
-
- /** */
- public Boolean flag5 = false;
-
- /** */
- private transient int intVal = 0xAABBCCDD;
-
- /**
- * @param strArr Array.
- * @param shortVal Short value.
- */
- @SuppressWarnings( {"UnusedDeclaration"})
- private NonSerializableA(@Nullable String[] strArr, @Nullable Short shortVal) {
- // No-op.
- }
-
- /**
- * Checks correctness of the state after unmarshalling.
- */
- void checkAfterUnmarshalled() {
- assertEquals(longVal, 0x33445566778899AAL);
-
- assertEquals(shortVal.shortValue(), (short)0xAABB);
-
- assertTrue(Arrays.equals(strArr, new String[] {"AA","BB"}));
-
- assertEquals(intVal, 0);
-
- assertTrue(flag1);
- assertFalse(flag2);
- assertNull(flag3);
- assertTrue(flag4);
- assertFalse(flag5);
- }
- }
-
- /**
- * Some non-serializable class.
- */
- @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"})
- static class NonSerializableB extends NonSerializableA {
- /** */
- public Short shortVal = 0x1122;
-
- /** */
- public long longVal = 0x8877665544332211L;
-
- /** */
- private transient NonSerializableA[] aArr = {
- new NonSerializableA(null, null),
- new NonSerializableA(null, null),
- new NonSerializableA(null, null)
- };
-
- /** */
- protected Double doubleVal = 123.456;
-
- /**
- * Just to eliminate the default constructor.
- */
- private NonSerializableB() {
- super(null, null);
- }
-
- /**
- * Checks correctness of the state after unmarshalling.
- */
- @Override void checkAfterUnmarshalled() {
- super.checkAfterUnmarshalled();
-
- assertEquals(shortVal.shortValue(), 0x1122);
-
- assertEquals(longVal, 0x8877665544332211L);
-
- assertNull(aArr);
-
- assertEquals(doubleVal, 123.456);
- }
- }
-
- /**
- * Some non-serializable class.
- */
- @SuppressWarnings( {"TransientFieldInNonSerializableClass","PublicField"})
- private static class NonSerializable extends NonSerializableB {
- /** */
- private int idVal = -17;
-
- /** */
- private final NonSerializableA aVal = new NonSerializableB();
-
- /** */
- private transient NonSerializableB bVal = new NonSerializableB();
-
- /** */
- private NonSerializableA[] bArr = new NonSerializableA[] {
- new NonSerializableB(),
- new NonSerializableA(null, null)
- };
-
- /** */
- public float floatVal = 567.89F;
-
- /**
- * Just to eliminate the default constructor.
- *
- * @param aVal Unused.
- */
- @SuppressWarnings( {"UnusedDeclaration"})
- private NonSerializable(NonSerializableA aVal) {
- }
-
- /**
- * Checks correctness of the state after unmarshalling.
- */
- @Override void checkAfterUnmarshalled() {
- super.checkAfterUnmarshalled();
-
- assertEquals(idVal, -17);
-
- aVal.checkAfterUnmarshalled();
-
- assertNull(bVal);
-
- for (NonSerializableA a : bArr) {
- a.checkAfterUnmarshalled();
- }
-
- assertEquals(floatVal, 567.89F);
- }
- }
-
- /**
- * Some serializable class.
- */
- @SuppressWarnings( {"PublicField","TransientFieldInNonSerializableClass","PackageVisibleInnerClass"})
- static class ForSerializableB {
- /** */
- public Short shortVal = 0x1122;
-
- /** */
- public long longVal = 0x8877665544332211L;
-
- /** */
- private transient NonSerializableA[] aArr;
-
- /** */
- private transient String strVal = "abc";
-
- /** */
- protected Double doubleVal = 123.456;
-
- /**
- */
- protected void init() {
- shortVal = 0x1122;
-
- longVal = 0x8877665544332211L;
-
- aArr = new NonSerializableA[] {
- new NonSerializableA(null, null),
- new NonSerializableA(null, null),
- new NonSerializableA(null, null)
- };
- }
-
- /**
- * Checks correctness of the state after unmarshalling.
- */
- void checkAfterUnmarshalled() {
- assertEquals(shortVal.shortValue(), 0x1122);
-
- assertEquals(longVal, 0x8877665544332211L);
-
- assertNull(aArr);
-
- assertNull(strVal);
-
- assertEquals(doubleVal, 123.456);
- }
- }
-
- /**
- * Some serializable class.
- */
- private static class SomeSimpleSerializable extends ComputeJobAdapter {
- /** */
- private boolean flag = true;
-
- /**
- * @param newFlagVal - The new value of flag field.
- */
- public void setFlagValue(boolean newFlagVal) {
- flag = newFlagVal;
- }
-
- /** {@inheritDoc} */
- @Override public Object execute() {
- assert false;
-
- return null;
- }
- }
- /**
- * Some serializable class.
- */
- private static class SomeSerializable extends ForSerializableB implements Serializable {
- /**
- * Just to eliminate the default constructor.
- *
- * @param id Unused.
- */
- @SuppressWarnings( {"UnusedDeclaration"})
- private SomeSerializable(Long id) {
- init();
- }
- }
-
- /**
- */
- private static interface SomeItf {
- /**
- * @return Check result.
- */
- int checkAfterUnmarshalled();
- }
-
- /**
- * Some externalizable class.
- */
- @SuppressWarnings( {"UnusedDeclaration", "PublicField"})
- private static class ExternalizableA implements Externalizable {
- /** */
- private boolean boolVal;
-
- /** */
- public String[] strArr;
-
- /** No-arg constructor is required by externalization. */
- public ExternalizableA() {
- // No-op.
- }
-
- /**
- *
- * @param strArr String array.
- * @param boolVal Boolean value.
- */
- private ExternalizableA(String[] strArr, boolean boolVal) {
- this.strArr = strArr;
- this.boolVal = boolVal;
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeBoolean(false);
- out.writeBoolean(false);
- out.writeBoolean(false);
- out.writeBoolean(false);
- out.writeBoolean(false);
- out.writeBoolean(false);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- boolVal = in.readBoolean();
- in.readBoolean();
- in.readBoolean();
- in.readBoolean();
- in.readBoolean();
- in.readBoolean();
- }
- }
-
- /**
- *
- */
- private static class TestCacheKey implements Serializable {
- /** */
- private String key;
-
- /** */
- @SuppressWarnings({"UnusedDeclaration"})
- private String terminalId;
-
- /**
- * @param key Key.
- * @param terminalId Some ID.
- */
- TestCacheKey(String key, String terminalId) {
- this.key = key;
- this.terminalId = terminalId;
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return key.hashCode();
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object obj) {
- return obj instanceof TestCacheKey && key.equals(((TestCacheKey)obj).key);
- }
- }
-
- /**
- *
- */
- private static class TestCacheKeySerializable implements Serializable {
- /** */
- private String key;
-
- /** */
- @SuppressWarnings({"UnusedDeclaration"})
- private String terminalId;
-
- /**
- * @param key Key.
- * @param terminalId Some ID.
- */
- TestCacheKeySerializable(String key, String terminalId) {
- this.key = key;
- this.terminalId = terminalId;
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return key.hashCode();
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object obj) {
- return obj instanceof TestCacheKeySerializable && key.equals(((TestCacheKeySerializable)obj).key);
- }
- }
-
- /**
- *
- */
- private static class TestCacheKeyExternalizable implements Externalizable {
- /** */
- private String key;
-
- /** */
- private String terminalId;
-
- /**
- *
- */
- public TestCacheKeyExternalizable() {
- // No-op.
- }
-
- /**
- * @param key Key.
- * @param terminalId Some ID.
- */
- TestCacheKeyExternalizable(String key, String terminalId) {
- this.key = key;
- this.terminalId = terminalId;
- }
-
- /** {@inheritDoc} */
- @Override public int hashCode() {
- return key.hashCode();
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object obj) {
- return obj instanceof TestCacheKeyExternalizable && key.equals(((TestCacheKeyExternalizable)obj).key);
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- U.writeString(out, key);
- U.writeString(out, terminalId);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- key = U.readString(in);
- terminalId = U.readString(in);
- }
- }
-}
\ No newline at end of file
[02/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamSelfTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamSelfTest.java
deleted file mode 100644
index 655a19a..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedObjectStreamSelfTest.java
+++ /dev/null
@@ -1,2157 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.NotActiveException;
-import java.io.NotSerializableException;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.text.SimpleDateFormat;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.IdentityHashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.PriorityQueue;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.UUID;
-import java.util.Vector;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentMap;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.util.io.GridUnsafeDataInput;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.MarshallerContext;
-import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.marshaller.MarshallerExclusions;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.jetbrains.annotations.Nullable;
-import org.jsr166.ConcurrentHashMap8;
-
-import static org.junit.Assert.assertArrayEquals;
-
-/**
- * Test for optimized object streams.
- */
-public class OptimizedObjectStreamSelfTest extends GridCommonAbstractTest {
- /** */
- private static final MarshallerContext CTX = new MarshallerContextTestImpl();
-
- /** */
- private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap = new ConcurrentHashMap8<>();
-
- /**
- * @throws Exception If failed.
- */
- public void testNull() throws Exception {
- assertNull(marshalUnmarshal(null));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testByte() throws Exception {
- byte val = 10;
-
- assertEquals(new Byte(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testShort() throws Exception {
- short val = 100;
-
- assertEquals(new Short(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testInteger() throws Exception {
- int val = 100;
-
- assertEquals(new Integer(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLong() throws Exception {
- long val = 1000L;
-
- assertEquals(new Long(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testFloat() throws Exception {
- float val = 10.0f;
-
- assertEquals(val, marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testDouble() throws Exception {
- double val = 100.0d;
-
- assertEquals(val, marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testBoolean() throws Exception {
- boolean val = true;
-
- assertEquals(new Boolean(val), marshalUnmarshal(val));
-
- val = false;
-
- assertEquals(new Boolean(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testChar() throws Exception {
- char val = 10;
-
- assertEquals(new Character(val), marshalUnmarshal(val));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testByteArray() throws Exception {
- byte[] arr = marshalUnmarshal(new byte[] {1, 2});
-
- assertArrayEquals(new byte[] {1, 2}, arr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testShortArray() throws Exception {
- short[] arr = marshalUnmarshal(new short[] {1, 2});
-
- assertArrayEquals(new short[] {1, 2}, arr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testIntArray() throws Exception {
- int[] arr = marshalUnmarshal(new int[] {1, 2});
-
- assertArrayEquals(new int[] {1, 2}, arr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLongArray() throws Exception {
- long[] arr = marshalUnmarshal(new long[] {1L, 2L});
-
- assertArrayEquals(new long[] {1, 2}, arr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testFloatArray() throws Exception {
- float[] arr = marshalUnmarshal(new float[] {1.0f, 2.0f});
-
- assertArrayEquals(new float[] {1.0f, 2.0f}, arr, 0.1f);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testDoubleArray() throws Exception {
- double[] arr = marshalUnmarshal(new double[] {1.0d, 2.0d});
-
- assertArrayEquals(new double[] {1.0d, 2.0d}, arr, 0.1d);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testBooleanArray() throws Exception {
- boolean[] arr = marshalUnmarshal(new boolean[] {true, false, false});
-
- assertEquals(3, arr.length);
- assertEquals(true, arr[0]);
- assertEquals(false, arr[1]);
- assertEquals(false, arr[2]);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testCharArray() throws Exception {
- char[] arr = marshalUnmarshal(new char[] {1, 2});
-
- assertArrayEquals(new char[] {1, 2}, arr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testObject() throws Exception {
- TestObject obj = new TestObject();
-
- obj.longVal = 100L;
- obj.doubleVal = 100.0d;
- obj.longArr = new Long[] {200L, 300L};
- obj.doubleArr = new Double[] {200.0d, 300.0d};
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testRequireSerializable() throws Exception {
- try {
- OptimizedMarshaller marsh = new OptimizedMarshaller(true);
-
- marsh.setContext(CTX);
-
- marsh.marshal(new Object());
-
- assert false : "Exception not thrown.";
- }
- catch (IgniteCheckedException e) {
- NotSerializableException serEx = e.getCause(NotSerializableException.class);
-
- if (serEx == null)
- throw e;
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testPool() throws Exception {
- final TestObject obj = new TestObject();
-
- obj.longVal = 100L;
- obj.doubleVal = 100.0d;
- obj.longArr = new Long[100 * 1024];
- obj.doubleArr = new Double[100 * 1024];
-
- Arrays.fill(obj.longArr, 100L);
- Arrays.fill(obj.doubleArr, 100.0d);
-
- final OptimizedMarshaller marsh = new OptimizedMarshaller();
-
- marsh.setContext(CTX);
-
- marsh.setPoolSize(5);
-
- try {
- multithreaded(new Callable<Object>() {
- @Override public Object call() throws Exception {
- for (int i = 0; i < 50; i++)
- assertEquals(obj, marsh.unmarshal(marsh.marshal(obj), null));
-
- return null;
- }
- }, 20);
- }
- finally {
- marsh.setPoolSize(0);
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testObjectWithNulls() throws Exception {
- TestObject obj = new TestObject();
-
- obj.longVal = 100L;
- obj.longArr = new Long[] {200L, 300L};
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testObjectArray() throws Exception {
- TestObject obj1 = new TestObject();
-
- obj1.longVal = 100L;
- obj1.doubleVal = 100.0d;
- obj1.longArr = new Long[] {200L, 300L};
- obj1.doubleArr = new Double[] {200.0d, 300.0d};
-
- TestObject obj2 = new TestObject();
-
- obj2.longVal = 400L;
- obj2.doubleVal = 400.0d;
- obj2.longArr = new Long[] {500L, 600L};
- obj2.doubleArr = new Double[] {500.0d, 600.0d};
-
- TestObject[] arr = {obj1, obj2};
-
- assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
-
- String[] strArr = {"str1", "str2"};
-
- assertArrayEquals(strArr, (String[])marshalUnmarshal(strArr));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testExternalizable() throws Exception {
- ExternalizableTestObject1 obj = new ExternalizableTestObject1();
-
- obj.longVal = 100L;
- obj.doubleVal = 100.0d;
- obj.longArr = new Long[] {200L, 300L};
- obj.doubleArr = new Double[] {200.0d, 300.0d};
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testExternalizableWithNulls() throws Exception {
- ExternalizableTestObject2 obj = new ExternalizableTestObject2();
-
- obj.longVal = 100L;
- obj.doubleVal = 100.0d;
- obj.longArr = new Long[] {200L, 300L};
- obj.doubleArr = new Double[] {200.0d, 300.0d};
-
- obj = marshalUnmarshal(obj);
-
- assertEquals(100L, obj.longVal.longValue());
- assertNull(obj.doubleVal);
- assertArrayEquals(new Long[] {200L, 300L}, obj.longArr);
- assertNull(obj.doubleArr);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLink() throws Exception {
- for (int i = 0; i < 20; i++) {
- LinkTestObject1 obj1 = new LinkTestObject1();
- LinkTestObject2 obj2 = new LinkTestObject2();
- LinkTestObject2 obj3 = new LinkTestObject2();
-
- obj1.val = 100;
- obj2.ref = obj1;
- obj3.ref = obj1;
-
- LinkTestObject2[] arr = new LinkTestObject2[] {obj2, obj3};
-
- assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testCycleLink() throws Exception {
- for (int i = 0; i < 20; i++) {
- CycleLinkTestObject obj = new CycleLinkTestObject();
-
- obj.val = 100;
- obj.ref = obj;
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testNoDefaultConstructor() throws Exception {
- NoDefaultConstructorTestObject obj = new NoDefaultConstructorTestObject(100);
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testEnum() throws Exception {
- assertEquals(TestEnum.B, marshalUnmarshal(TestEnum.B));
-
- TestEnum[] arr = new TestEnum[] {TestEnum.C, TestEnum.A, TestEnum.B, TestEnum.A};
-
- assertArrayEquals(arr, (Object[])marshalUnmarshal(arr));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testCollection() throws Exception {
- TestObject obj1 = new TestObject();
-
- obj1.longVal = 100L;
- obj1.doubleVal = 100.0d;
- obj1.longArr = new Long[] {200L, 300L};
- obj1.doubleArr = new Double[] {200.0d, 300.0d};
-
- TestObject obj2 = new TestObject();
-
- obj2.longVal = 400L;
- obj2.doubleVal = 400.0d;
- obj2.longArr = new Long[] {500L, 600L};
- obj2.doubleArr = new Double[] {500.0d, 600.0d};
-
- Collection<TestObject> col = F.asList(obj1, obj2);
-
- assertEquals(col, marshalUnmarshal(col));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testMap() throws Exception {
- TestObject obj1 = new TestObject();
-
- obj1.longVal = 100L;
- obj1.doubleVal = 100.0d;
- obj1.longArr = new Long[] {200L, 300L};
- obj1.doubleArr = new Double[] {200.0d, 300.0d};
-
- TestObject obj2 = new TestObject();
-
- obj2.longVal = 400L;
- obj2.doubleVal = 400.0d;
- obj2.longArr = new Long[] {500L, 600L};
- obj2.doubleArr = new Double[] {500.0d, 600.0d};
-
- Map<Integer, TestObject> map = F.asMap(1, obj1, 2, obj2);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testUuid() throws Exception {
- UUID uuid = UUID.randomUUID();
-
- assertEquals(uuid, marshalUnmarshal(uuid));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testDate() throws Exception {
- Date date = new Date();
-
- assertEquals(date, marshalUnmarshal(date));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testTransient() throws Exception {
- TransientTestObject obj = marshalUnmarshal(new TransientTestObject(100, 200, "str1", "str2"));
-
- assertEquals(100, obj.val1);
- assertEquals(0, obj.val2);
- assertEquals("str1", obj.str1);
- assertNull(obj.str2);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testWriteReadObject() throws Exception {
- WriteReadTestObject obj = marshalUnmarshal(new WriteReadTestObject(100, "str"));
-
- assertEquals(100, obj.val);
- assertEquals("Optional data", obj.str);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testWriteReplace() throws Exception {
- ReplaceTestObject obj = marshalUnmarshal(new ReplaceTestObject(100));
-
- assertEquals(200, obj.value());
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testWriteReplaceNull() throws Exception {
- ReplaceNullTestObject obj = marshalUnmarshal(new ReplaceNullTestObject());
-
- assertNull(obj);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testReadResolve() throws Exception {
- ResolveTestObject obj = marshalUnmarshal(new ResolveTestObject(100));
-
- assertEquals(200, obj.value());
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testArrayDeque() throws Exception {
- Queue<Integer> queue = new ArrayDeque<>();
-
- for (int i = 0; i < 100; i++)
- queue.add(i);
-
- Queue<Integer> newQueue = marshalUnmarshal(queue);
-
- assertEquals(queue.size(), newQueue.size());
-
- Integer i;
-
- while ((i = newQueue.poll()) != null)
- assertEquals(queue.poll(), i);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testArrayList() throws Exception {
- Collection<Integer> list = new ArrayList<>();
-
- for (int i = 0; i < 100; i++)
- list.add(i);
-
- assertEquals(list, marshalUnmarshal(list));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testHashMap() throws Exception {
- Map<Integer, Integer> map = new HashMap<>();
-
- for (int i = 0; i < 100; i++)
- map.put(i, i);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testHashSet() throws Exception {
- Collection<Integer> set = new HashSet<>();
-
- for (int i = 0; i < 100; i++)
- set.add(i);
-
- assertEquals(set, marshalUnmarshal(set));
- }
-
- /**
- * @throws Exception If failed.
- */
- @SuppressWarnings("UseOfObsoleteCollectionType")
- public void testHashtable() throws Exception {
- Map<Integer, Integer> map = new Hashtable<>();
-
- for (int i = 0; i < 100; i++)
- map.put(i, i);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testIdentityHashMap() throws Exception {
- Map<Integer, Integer> map = new IdentityHashMap<>();
-
- for (int i = 0; i < 100; i++)
- map.put(i, i);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLinkedHashMap() throws Exception {
- Map<Integer, Integer> map = new LinkedHashMap<>();
-
- for (int i = 0; i < 100; i++)
- map.put(i, i);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLinkedHashSet() throws Exception {
- Collection<Integer> set = new LinkedHashSet<>();
-
- for (int i = 0; i < 100; i++)
- set.add(i);
-
- assertEquals(set, marshalUnmarshal(set));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testLinkedList() throws Exception {
- Collection<Integer> list = new LinkedList<>();
-
- for (int i = 0; i < 100; i++)
- list.add(i);
-
- assertEquals(list, marshalUnmarshal(list));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testPriorityQueue() throws Exception {
- Queue<Integer> queue = new PriorityQueue<>();
-
- for (int i = 0; i < 100; i++)
- queue.add(i);
-
- Queue<Integer> newQueue = marshalUnmarshal(queue);
-
- assertEquals(queue.size(), newQueue.size());
-
- Integer i;
-
- while ((i = newQueue.poll()) != null)
- assertEquals(queue.poll(), i);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testProperties() throws Exception {
- Properties dflts = new Properties();
-
- dflts.setProperty("key1", "val1");
- dflts.setProperty("key2", "wrong");
-
- Properties props = new Properties(dflts);
-
- props.setProperty("key2", "val2");
-
- Properties newProps = marshalUnmarshal(props);
-
- assertEquals("val1", newProps.getProperty("key1"));
- assertEquals("val2", newProps.getProperty("key2"));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testTreeMap() throws Exception {
- Map<Integer, Integer> map = new TreeMap<>();
-
- for (int i = 0; i < 100; i++)
- map.put(i, i);
-
- assertEquals(map, marshalUnmarshal(map));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testTreeSet() throws Exception {
- Collection<Integer> set = new TreeSet<>();
-
- for (int i = 0; i < 100; i++)
- set.add(i);
-
- assertEquals(set, marshalUnmarshal(set));
- }
-
- /**
- * @throws Exception If failed.
- */
- @SuppressWarnings("UseOfObsoleteCollectionType")
- public void testVector() throws Exception {
- Collection<Integer> vector = new Vector<>();
-
- for (int i = 0; i < 100; i++)
- vector.add(i);
-
- assertEquals(vector, marshalUnmarshal(vector));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testString() throws Exception {
- assertEquals("Latin", marshalUnmarshal("Latin"));
- assertEquals("\u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430", marshalUnmarshal("\u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430"));
- assertEquals("\u4e2d\u56fd\u7684", marshalUnmarshal("\u4e2d\u56fd\u7684"));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testReadLine() throws Exception {
- OptimizedObjectInputStream in = new OptimizedObjectInputStream(new GridUnsafeDataInput());
-
- byte[] bytes = "line1\nline2\r\nli\rne3\nline4".getBytes();
-
- in.in().bytes(bytes, bytes.length);
-
- assertEquals("line1", in.readLine());
- assertEquals("line2", in.readLine());
- assertEquals("line3", in.readLine());
- assertEquals("line4", in.readLine());
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testHierarchy() throws Exception {
- C c = new C(100, "str", 200, "str", 300, "str");
-
- C newC = marshalUnmarshal(c);
-
- assertEquals(100, newC.valueA());
- assertEquals("Optional data", newC.stringA());
- assertEquals(200, newC.valueB());
- assertNull(newC.stringB());
- assertEquals(0, newC.valueC());
- assertEquals("Optional data", newC.stringC());
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testInet4Address() throws Exception {
- Inet4Address addr = (Inet4Address)InetAddress.getByName("localhost");
-
- assertEquals(addr, marshalUnmarshal(addr));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testClass() throws Exception {
- assertEquals(int.class, marshalUnmarshal(int.class));
- assertEquals(Long.class, marshalUnmarshal(Long.class));
- assertEquals(TestObject.class, marshalUnmarshal(TestObject.class));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testWriteReadFields() throws Exception {
- WriteReadFieldsTestObject obj = marshalUnmarshal(new WriteReadFieldsTestObject(100, "str"));
-
- assertEquals(100, obj.val);
- assertEquals("Optional data", obj.str);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testWriteFields() throws Exception {
- WriteFieldsTestObject obj = marshalUnmarshal(new WriteFieldsTestObject(100, "str"));
-
- assertEquals(100, obj.val);
- assertEquals("Optional data", obj.str);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testBigInteger() throws Exception {
- BigInteger b = new BigInteger("54654865468745468465321414646834562346475457488");
-
- assertEquals(b, marshalUnmarshal(b));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testBigDecimal() throws Exception {
- BigDecimal b = new BigDecimal("849572389457208934572093574.123512938654126458542145");
-
- assertEquals(b, marshalUnmarshal(b));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testSimpleDateFormat() throws Exception {
- SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy");
-
- assertEquals(f, marshalUnmarshal(f));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testComplexObject() throws Exception {
- ComplexTestObject obj = new ComplexTestObject();
-
- assertEquals(obj, marshalUnmarshal(obj));
-
- ExternalizableTestObject1 extObj1 = new ExternalizableTestObject1();
-
- extObj1.longVal = 1000L;
- extObj1.doubleVal = 1000.0d;
- extObj1.longArr = new Long[] {1000L, 2000L, 3000L};
- extObj1.doubleArr = new Double[] {1000.0d, 2000.0d, 3000.0d};
-
- ExternalizableTestObject1 extObj2 = new ExternalizableTestObject1();
-
- extObj2.longVal = 2000L;
- extObj2.doubleVal = 2000.0d;
- extObj2.longArr = new Long[] {4000L, 5000L, 6000L};
- extObj2.doubleArr = new Double[] {4000.0d, 5000.0d, 6000.0d};
-
- Properties props = new Properties();
-
- props.setProperty("name", "value");
-
- Collection<Integer> col = F.asList(10, 20, 30);
-
- Map<Integer, String> map = F.asMap(10, "str1", 20, "str2", 30, "str3");
-
- obj = new ComplexTestObject(
- (byte)1,
- (short)10,
- 100,
- 1000L,
- 100.0f,
- 1000.0d,
- 'a',
- false,
- (byte)2,
- (short)20,
- 200,
- 2000L,
- 200.0f,
- 2000.0d,
- 'b',
- true,
- new byte[] {1, 2, 3},
- new short[] {10, 20, 30},
- new int[] {100, 200, 300},
- new long[] {1000, 2000, 3000},
- new float[] {100.0f, 200.0f, 300.0f},
- new double[] {1000.0d, 2000.0d, 3000.0d},
- new char[] {'a', 'b', 'c'},
- new boolean[] {false, true},
- new ExternalizableTestObject1[] {extObj1, extObj2},
- "String",
- TestEnum.A,
- UUID.randomUUID(),
- props,
- new ArrayList<>(col),
- new HashMap<>(map),
- new HashSet<>(col),
- new LinkedList<>(col),
- new LinkedHashMap<>(map),
- new LinkedHashSet<>(col),
- new Date(),
- ExternalizableTestObject2.class
- );
-
- assertEquals(obj, marshalUnmarshal(obj));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testReadToArray() throws Exception {
- OptimizedObjectInputStream in = OptimizedObjectStreamRegistry.in();
-
- try {
- byte[] arr = new byte[50];
-
- for (int i = 0; i < arr.length; i++)
- arr[i] = (byte)i;
-
- in.in().bytes(arr, arr.length);
-
- byte[] buf = new byte[10];
-
- assertEquals(10, in.read(buf));
-
- for (int i = 0; i < buf.length; i++)
- assertEquals(i, buf[i]);
-
- buf = new byte[30];
-
- assertEquals(20, in.read(buf, 0, 20));
-
- for (int i = 0; i < buf.length; i++)
- assertEquals(i < 20 ? 10 + i : 0, buf[i]);
-
- buf = new byte[30];
-
- assertEquals(10, in.read(buf, 10, 10));
-
- for (int i = 0; i < buf.length; i++)
- assertEquals(i >= 10 && i < 20 ? 30 + (i - 10) : 0, buf[i]);
-
- buf = new byte[20];
-
- assertEquals(10, in.read(buf));
-
- for (int i = 0; i < buf.length; i++)
- assertEquals(i < 10 ? 40 + i : 0, buf[i]);
- }
- finally {
- OptimizedObjectStreamRegistry.closeIn(in);
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testHandleTableGrow() throws Exception {
- List<String> c = new ArrayList<>();
-
- for (int i = 0; i < 29; i++)
- c.add("str");
-
- String str = c.get(28);
-
- c.add("str");
- c.add(str);
-
- List<Object> c0 = marshalUnmarshal(c);
-
- assertTrue(c0.get(28) == c0.get(30));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testIncorrectExternalizable() throws Exception {
- GridTestUtils.assertThrows(
- log,
- new Callable<Object>() {
- @Override public Object call() throws Exception {
- return marshalUnmarshal(new IncorrectExternalizable());
- }
- },
- IOException.class,
- null);
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testExcludedClass() throws Exception {
- Class<?>[] exclClasses = U.staticField(MarshallerExclusions.class, "EXCL_CLASSES");
-
- assertFalse(F.isEmpty(exclClasses));
-
- for (Class<?> cls : exclClasses)
- assertEquals(cls, marshalUnmarshal(cls));
- }
-
- /**
- * @throws Exception If failed.
- */
- public void testInet6Address() throws Exception {
- final InetAddress address = Inet6Address.getByAddress(new byte[16]);
-
- assertEquals(address, marshalUnmarshal(address));
- }
-
- /**
- * @throws Exception If failed.
- */
- @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
- public void testPutFieldsWithDefaultWriteObject() throws Exception {
- try {
- marshalUnmarshal(new CustomWriteObjectMethodObject("test"));
- }
- catch (IOException e) {
- assert e.getCause() instanceof NotActiveException;
- }
- }
-
- /**
- * @throws Exception If failed.
- */
- @SuppressWarnings("ThrowableInstanceNeverThrown")
- public void testThrowable() throws Exception {
- Throwable t = new Throwable("Throwable");
-
- assertEquals(t.getMessage(), ((Throwable)marshalUnmarshal(t)).getMessage());
- }
-
- /**
- * Marshals and unmarshals object.
- *
- * @param obj Original object.
- * @return Object after marshalling and unmarshalling.
- * @throws Exception In case of error.
- */
- private <T> T marshalUnmarshal(@Nullable Object obj) throws Exception {
- OptimizedObjectOutputStream out = null;
- OptimizedObjectInputStream in = null;
-
- try {
- out = OptimizedObjectStreamRegistry.out();
-
- out.context(clsMap, CTX, null, true);
-
- out.writeObject(obj);
-
- byte[] arr = out.out().array();
-
- in = OptimizedObjectStreamRegistry.in();
-
- in.context(clsMap, CTX, null, getClass().getClassLoader());
-
- in.in().bytes(arr, arr.length);
-
- Object obj0 = in.readObject();
-
- checkHandles(out, in);
-
- return (T)obj0;
- }
- finally {
- OptimizedObjectStreamRegistry.closeOut(out);
- OptimizedObjectStreamRegistry.closeIn(in);
- }
- }
-
- /**
- * Checks that handles are equal in output and input streams.
- *
- * @param out Output stream.
- * @param in Input stream.
- * @throws Exception If failed.
- */
- private void checkHandles(OptimizedObjectOutputStream out, OptimizedObjectInputStream in)
- throws Exception {
- Object[] outHandles = out.handledObjects();
- Object[] inHandles = in.handledObjects();
-
- assertEquals(outHandles.length, inHandles.length);
-
- for (int i = 0; i < outHandles.length; i++) {
- if (outHandles[i] == null)
- assertTrue(inHandles[i] == null);
- else {
- assertFalse(inHandles[i] == null);
-
- assertTrue(outHandles[i].getClass() == inHandles[i].getClass());
- }
- }
- }
-
- /** */
- private static class IncorrectExternalizable implements Externalizable {
- /**
- * Required by {@link Externalizable}.
- */
- public IncorrectExternalizable() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeInt(0);
- out.writeInt(200);
- out.writeObject("str");
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- in.readInt();
- in.readObject();
- }
- }
-
- /**
- * Test object.
- */
- private static class TestObject implements Serializable {
- /** */
- private Long longVal;
-
- /** */
- private Double doubleVal;
-
- /** */
- private Long[] longArr;
-
- /** */
- private Double[] doubleArr;
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- TestObject obj = (TestObject)o;
-
- return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
- doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
- Arrays.equals(longArr, obj.longArr) &&
- Arrays.equals(doubleArr, obj.doubleArr);
- }
- }
-
- /**
- * Externalizable test object.
- */
- private static class ExternalizableTestObject1 implements Externalizable {
- /** */
- private Long longVal;
-
- /** */
- private Double doubleVal;
-
- /** */
- private Long[] longArr;
-
- /** */
- private Double[] doubleArr;
-
- /**
- * Required by {@link Externalizable}.
- */
- public ExternalizableTestObject1() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- ExternalizableTestObject1 obj = (ExternalizableTestObject1)o;
-
- return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
- doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
- Arrays.equals(longArr, obj.longArr) &&
- Arrays.equals(doubleArr, obj.doubleArr);
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeLong(longVal);
- out.writeDouble(doubleVal);
- U.writeArray(out, longArr);
- U.writeArray(out, doubleArr);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- longVal = in.readLong();
- doubleVal = in.readDouble();
-
- Object[] arr = U.readArray(in);
-
- longArr = Arrays.copyOf(arr, arr.length, Long[].class);
-
- arr = U.readArray(in);
-
- doubleArr = Arrays.copyOf(arr, arr.length, Double[].class);
- }
- }
-
- /**
- * Externalizable test object.
- */
- private static class ExternalizableTestObject2 implements Externalizable {
- /** */
- private Long longVal;
-
- /** */
- private Double doubleVal;
-
- /** */
- private Long[] longArr;
-
- /** */
- private Double[] doubleArr;
-
- /**
- * Required by {@link Externalizable}.
- */
- public ExternalizableTestObject2() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- ExternalizableTestObject2 obj = (ExternalizableTestObject2)o;
-
- return longVal != null ? longVal.equals(obj.longVal) : obj.longVal == null &&
- doubleVal != null ? doubleVal.equals(obj.doubleVal) : obj.doubleVal == null &&
- Arrays.equals(longArr, obj.longArr) &&
- Arrays.equals(doubleArr, obj.doubleArr);
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeLong(longVal);
- U.writeArray(out, longArr);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- longVal = in.readLong();
-
- Object[] arr = U.readArray(in);
-
- longArr = Arrays.copyOf(arr, arr.length, Long[].class);
- }
- }
-
- /**
- * Test object.
- */
- private static class LinkTestObject1 implements Serializable {
- /** */
- private int val;
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- LinkTestObject1 obj = (LinkTestObject1)o;
-
- return val == obj.val;
- }
- }
-
- /**
- * Test object.
- */
- private static class LinkTestObject2 implements Serializable {
- /** */
- private LinkTestObject1 ref;
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- LinkTestObject2 obj = (LinkTestObject2)o;
-
- return ref != null ? ref.equals(obj.ref) : obj.ref == null;
- }
- }
-
- /**
- * Cycle link test object.
- */
- private static class CycleLinkTestObject implements Serializable {
- /** */
- private int val;
-
- /** */
- private CycleLinkTestObject ref;
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- CycleLinkTestObject obj = (CycleLinkTestObject)o;
-
- return val == obj.val && ref != null ? ref.val == val : obj.ref == null;
- }
- }
-
- /**
- * Test object without default constructor.
- */
- private static class NoDefaultConstructorTestObject implements Serializable {
- /** */
- private int val;
-
- /**
- * @param val Value.
- */
- private NoDefaultConstructorTestObject(int val) {
- this.val = val;
- }
-
- /** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- NoDefaultConstructorTestObject obj = (NoDefaultConstructorTestObject)o;
-
- return val == obj.val;
- }
- }
-
- /**
- * Test object with transient fields.
- */
- @SuppressWarnings("TransientFieldNotInitialized")
- private static class TransientTestObject implements Serializable {
- /** */
- private int val1;
-
- /** */
- private transient int val2;
-
- /** */
- private String str1;
-
- /** */
- private transient String str2;
-
- /**
- * @param val1 Value 1.
- * @param val2 Value 2.
- * @param str1 String 1.
- * @param str2 String 2.
- */
- private TransientTestObject(int val1, int val2, String str1, String str2) {
- this.val1 = val1;
- this.val2 = val2;
- this.str1 = str1;
- this.str2 = str2;
- }
- }
-
- /**
- * Test object with {@code writeObject} and {@code readObject} methods.
- */
- @SuppressWarnings("TransientFieldNotInitialized")
- private static class WriteReadTestObject implements Serializable {
- /** */
- private int val;
-
- /** */
- private transient String str;
-
- /**
- * @param val Value.
- * @param str String.
- */
- private WriteReadTestObject(int val, String str) {
- this.val = val;
- this.str = str;
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- out.defaultWriteObject();
-
- out.writeUTF("Optional data");
- }
-
- /**
- * @param in Input stream.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class not found.
- */
- private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
- in.defaultReadObject();
-
- str = in.readUTF();
- }
- }
-
- /**
- * Test object that uses {@code writeFields} and {@code readFields} methods.
- */
- private static class WriteReadFieldsTestObject implements Serializable {
- /** */
- private int val;
-
- /** */
- private String str;
-
- /**
- * @param val Value.
- * @param str String.
- */
- private WriteReadFieldsTestObject(int val, String str) {
- this.val = val;
- this.str = str;
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- ObjectOutputStream.PutField fields = out.putFields();
-
- fields.put("val", val);
- fields.put("str", "Optional data");
-
- out.writeFields();
- }
-
- /**
- * @param in Input stream.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class not found.
- */
- private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
- ObjectInputStream.GetField fields = in.readFields();
-
- val = fields.get("val", 0);
- str = (String)fields.get("str", null);
- }
- }
-
- /**
- * Test object that uses {@code writeFields} and {@code readFields} methods.
- */
- private static class WriteFieldsTestObject implements Serializable {
- /** */
- private int val;
-
- /** */
- @SuppressWarnings("UnusedDeclaration")
- private String str;
-
- /**
- * @param val Value.
- * @param str String.
- */
- private WriteFieldsTestObject(int val, String str) {
- this.val = val;
- this.str = str;
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- ObjectOutputStream.PutField fields = out.putFields();
-
- fields.put("val", val);
- fields.put("str", "Optional data");
-
- out.writeFields();
- }
- }
-
- /**
- * Base object with {@code writeReplace} method.
- */
- private abstract static class ReplaceTestBaseObject implements Serializable {
- /** */
- private int val;
-
- /**
- * @param val Value.
- */
- private ReplaceTestBaseObject(int val) {
- this.val = val;
- }
-
- /**
- * @return Value.
- */
- public int value() {
- return val;
- }
-
- /**
- * @return Replaced object.
- * @throws ObjectStreamException In case of error.
- */
- protected Object writeReplace() throws ObjectStreamException {
- return new ReplaceTestObject(val * 2);
- }
- }
-
- /**
- * Test object for {@code writeReplace} method.
- */
- private static class ReplaceTestObject extends ReplaceTestBaseObject {
- /**
- * @param val Value.
- */
- private ReplaceTestObject(int val) {
- super(val);
- }
- }
-
- /**
- * Test object with {@code writeReplace} method.
- */
- private static class ReplaceNullTestObject implements Serializable {
- /**
- * @return Replaced object.
- * @throws ObjectStreamException In case of error.
- */
- protected Object writeReplace() throws ObjectStreamException {
- return null;
- }
- }
-
- /**
- * Base object with {@code readResolve} method.
- */
- private abstract static class ResolveTestBaseObject implements Serializable {
- /** */
- private int val;
-
- /**
- * @param val Value.
- */
- private ResolveTestBaseObject(int val) {
- this.val = val;
- }
-
- /**
- * @return Value.
- */
- public int value() {
- return val;
- }
-
- /**
- * @return Replaced object.
- * @throws ObjectStreamException In case of error.
- */
- protected Object readResolve() throws ObjectStreamException {
- return new ResolveTestObject(val * 2);
- }
- }
-
- /**
- * Test object for {@code readResolve} method.
- */
- private static class ResolveTestObject extends ResolveTestBaseObject {
- /**
- * @param val Value.
- */
- private ResolveTestObject(int val) {
- super(val);
- }
- }
-
- /**
- * Class A.
- */
- private static class A implements Serializable {
- /** */
- private int valA;
-
- /** */
- private transient String strA;
-
- /**
- * @param valA Value A.
- * @param strA String A.
- */
- A(int valA, String strA) {
- this.valA = valA;
- this.strA = strA;
- }
-
- /**
- * @return Value.
- */
- int valueA() {
- return valA;
- }
-
- /**
- * @return String.
- */
- String stringA() {
- return strA;
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- out.defaultWriteObject();
-
- out.writeUTF("Optional data");
- }
-
- /**
- * @param in Input stream.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class not found.
- */
- private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
- in.defaultReadObject();
-
- strA = in.readUTF();
- }
- }
-
- /**
- * Class B.
- */
- private static class B extends A {
- /** */
- private int valB;
-
- /** */
- @SuppressWarnings("TransientFieldNotInitialized")
- private transient String strB;
-
- /**
- * @param valA Value A.
- * @param strA String A.
- * @param valB Value B.
- * @param strB String B.
- */
- B(int valA, String strA, int valB, String strB) {
- super(valA, strA);
-
- this.valB = valB;
- this.strB = strB;
- }
-
- /**
- * @return Value.
- */
- int valueB() {
- return valB;
- }
-
- /**
- * @return String.
- */
- String stringB() {
- return strB;
- }
- }
-
- /**
- * Class C.
- */
- @SuppressWarnings("MethodOverridesPrivateMethodOfSuperclass")
- private static class C extends B {
- /** */
- @SuppressWarnings("InstanceVariableMayNotBeInitializedByReadObject")
- private int valC;
-
- /** */
- private transient String strC;
-
- /**
- * @param valA Value A.
- * @param strA String A.
- * @param valB Value B.
- * @param strB String B.
- * @param valC Value C.
- * @param strC String C.
- */
- C(int valA, String strA, int valB, String strB, int valC, String strC) {
- super(valA, strA, valB, strB);
-
- this.valC = valC;
- this.strC = strC;
- }
-
- /**
- * @return Value.
- */
- int valueC() {
- return valC;
- }
-
- /**
- * @return String.
- */
- String stringC() {
- return strC;
- }
-
- /**
- * @param out Output stream.
- * @throws IOException In case of error.
- */
- private void writeObject(ObjectOutputStream out) throws IOException {
- out.writeUTF("Optional data");
- }
-
- /**
- * @param in Input stream.
- * @throws IOException In case of error.
- * @throws ClassNotFoundException If class not found.
- */
- private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
- strC = in.readUTF();
- }
- }
-
- /**
- * Complex test object.
- */
- private static class ComplexTestObject implements Serializable {
- /** */
- private byte byteVal1;
-
- /** */
- private short shortVal1;
-
- /** */
- private int intVal1;
-
- /** */
- private long longVal1;
-
- /** */
- private float floatVal1;
-
- /** */
- private double doubleVal1;
-
- /** */
- private char cVal1;
-
- /** */
- private boolean boolVal1;
-
- /** */
- private Byte byteVal2;
-
- /** */
- private Short shortVal2;
-
- /** */
- private Integer intVal2;
-
- /** */
- private Long longVal2;
-
- /** */
- private Float floatVal2;
-
- /** */
- private Double doubleVal2;
-
- /** */
- private Character cVal2;
-
- /** */
- private Boolean boolVal2;
-
- /** */
- private byte[] byteArr;
-
- /** */
- private short[] shortArr;
-
- /** */
- private int[] intArr;
-
- /** */
- private long[] longArr;
-
- /** */
- private float[] floatArr;
-
- /** */
- private double[] doubleArr;
-
- /** */
- private char[] cArr;
-
- /** */
- private boolean[] boolArr;
-
- /** */
- private ExternalizableTestObject1[] objArr;
-
- /** */
- private String str;
-
- /** */
- private TestEnum enumVal;
-
- /** */
- private UUID uuid;
-
- /** */
- private Properties props;
-
- /** */
- private ArrayList<Integer> arrList;
-
- /** */
- private HashMap<Integer, String> hashMap;
-
- /** */
- private HashSet<Integer> hashSet;
-
- /** */
- private LinkedList<Integer> linkedList;
-
- /** */
- private LinkedHashMap<Integer, String> linkedHashMap;
-
- /** */
- private LinkedHashSet<Integer> linkedHashSet;
-
- /** */
- private Date date;
-
- /** */
- private Class<?> cls;
-
- /** */
- private ComplexTestObject self;
-
- /** */
- private ComplexTestObject() {
- self = this;
- }
-
- /**
- * @param byteVal1 Byte value.
- * @param shortVal1 Short value.
- * @param intVal1 Integer value.
- * @param longVal1 Long value.
- * @param floatVal1 Float value.
- * @param doubleVal1 Double value.
- * @param cVal1 Char value.
- * @param boolVal1 Boolean value.
- * @param byteVal2 Byte value.
- * @param shortVal2 Short value.
- * @param intVal2 Integer value.
- * @param longVal2 Long value.
- * @param floatVal2 Float value.
- * @param doubleVal2 Double value.
- * @param cVal2 Char value.
- * @param boolVal2 Boolean value.
- * @param byteArr Bytes array.
- * @param shortArr Shorts array.
- * @param intArr Integers array.
- * @param longArr Longs array.
- * @param floatArr Floats array.
- * @param doubleArr Doubles array.
- * @param cArr Chars array.
- * @param boolArr Booleans array.
- * @param objArr Objects array.
- * @param str String.
- * @param enumVal Enum.
- * @param uuid UUID.
- * @param props Properties.
- * @param arrList ArrayList.
- * @param hashMap HashMap.
- * @param hashSet HashSet.
- * @param linkedList LinkedList.
- * @param linkedHashMap LinkedHashMap.
- * @param linkedHashSet LinkedHashSet.
- * @param date Date.
- * @param cls Class.
- */
- private ComplexTestObject(byte byteVal1, short shortVal1, int intVal1, long longVal1, float floatVal1,
- double doubleVal1, char cVal1, boolean boolVal1, Byte byteVal2, Short shortVal2, Integer intVal2,
- Long longVal2, Float floatVal2, Double doubleVal2, Character cVal2, Boolean boolVal2, byte[] byteArr,
- short[] shortArr, int[] intArr, long[] longArr, float[] floatArr, double[] doubleArr, char[] cArr,
- boolean[] boolArr, ExternalizableTestObject1[] objArr, String str, TestEnum enumVal, UUID uuid,
- Properties props, ArrayList<Integer> arrList, HashMap<Integer, String> hashMap, HashSet<Integer> hashSet,
- LinkedList<Integer> linkedList, LinkedHashMap<Integer, String> linkedHashMap,
- LinkedHashSet<Integer> linkedHashSet, Date date, Class<?> cls) {
- this.byteVal1 = byteVal1;
- this.shortVal1 = shortVal1;
- this.intVal1 = intVal1;
- this.longVal1 = longVal1;
- this.floatVal1 = floatVal1;
- this.doubleVal1 = doubleVal1;
- this.cVal1 = cVal1;
- this.boolVal1 = boolVal1;
- this.byteVal2 = byteVal2;
- this.shortVal2 = shortVal2;
- this.intVal2 = intVal2;
- this.longVal2 = longVal2;
- this.floatVal2 = floatVal2;
- this.doubleVal2 = doubleVal2;
- this.cVal2 = cVal2;
- this.boolVal2 = boolVal2;
- this.byteArr = byteArr;
- this.shortArr = shortArr;
- this.intArr = intArr;
- this.longArr = longArr;
- this.floatArr = floatArr;
- this.doubleArr = doubleArr;
- this.cArr = cArr;
- this.boolArr = boolArr;
- this.objArr = objArr;
- this.str = str;
- this.enumVal = enumVal;
- this.uuid = uuid;
- this.props = props;
- this.arrList = arrList;
- this.hashMap = hashMap;
- this.hashSet = hashSet;
- this.linkedList = linkedList;
- this.linkedHashMap = linkedHashMap;
- this.linkedHashSet = linkedHashSet;
- this.date = date;
- this.cls = cls;
-
- self = this;
- }
-
- /** {@inheritDoc} */
- @SuppressWarnings("RedundantIfStatement")
- @Override public boolean equals(Object o) {
- if (this == o)
- return true;
-
- if (o == null || getClass() != o.getClass())
- return false;
-
- ComplexTestObject obj = (ComplexTestObject)o;
-
- if (boolVal1 != obj.boolVal1)
- return false;
-
- if (byteVal1 != obj.byteVal1)
- return false;
-
- if (cVal1 != obj.cVal1)
- return false;
-
- if (Double.compare(obj.doubleVal1, doubleVal1) != 0)
- return false;
-
- if (Float.compare(obj.floatVal1, floatVal1) != 0)
- return false;
-
- if (intVal1 != obj.intVal1)
- return false;
-
- if (longVal1 != obj.longVal1)
- return false;
-
- if (shortVal1 != obj.shortVal1)
- return false;
-
- if (arrList != null ? !arrList.equals(obj.arrList) : obj.arrList != null)
- return false;
-
- if (!Arrays.equals(boolArr, obj.boolArr))
- return false;
-
- if (boolVal2 != null ? !boolVal2.equals(obj.boolVal2) : obj.boolVal2 != null)
- return false;
-
- if (!Arrays.equals(byteArr, obj.byteArr))
- return false;
-
- if (byteVal2 != null ? !byteVal2.equals(obj.byteVal2) : obj.byteVal2 != null)
- return false;
-
- if (!Arrays.equals(cArr, obj.cArr))
- return false;
-
- if (cVal2 != null ? !cVal2.equals(obj.cVal2) : obj.cVal2 != null)
- return false;
-
- if (cls != null ? !cls.equals(obj.cls) : obj.cls != null)
- return false;
-
- if (date != null ? !date.equals(obj.date) : obj.date != null)
- return false;
-
- if (!Arrays.equals(doubleArr, obj.doubleArr))
- return false;
-
- if (doubleVal2 != null ? !doubleVal2.equals(obj.doubleVal2) : obj.doubleVal2 != null)
- return false;
-
- if (enumVal != obj.enumVal)
- return false;
-
- if (!Arrays.equals(floatArr, obj.floatArr))
- return false;
-
- if (floatVal2 != null ? !floatVal2.equals(obj.floatVal2) : obj.floatVal2 != null)
- return false;
-
- if (hashMap != null ? !hashMap.equals(obj.hashMap) : obj.hashMap != null)
- return false;
-
- if (hashSet != null ? !hashSet.equals(obj.hashSet) : obj.hashSet != null)
- return false;
-
- if (!Arrays.equals(intArr, obj.intArr))
- return false;
-
- if (intVal2 != null ? !intVal2.equals(obj.intVal2) : obj.intVal2 != null)
- return false;
-
- if (linkedHashMap != null ? !linkedHashMap.equals(obj.linkedHashMap) : obj.linkedHashMap != null)
- return false;
-
- if (linkedHashSet != null ? !linkedHashSet.equals(obj.linkedHashSet) : obj.linkedHashSet != null)
- return false;
-
- if (linkedList != null ? !linkedList.equals(obj.linkedList) : obj.linkedList != null)
- return false;
-
- if (!Arrays.equals(longArr, obj.longArr))
- return false;
-
- if (longVal2 != null ? !longVal2.equals(obj.longVal2) : obj.longVal2 != null)
- return false;
-
- if (!Arrays.equals(objArr, obj.objArr))
- return false;
-
- if (props != null ? !props.equals(obj.props) : obj.props != null)
- return false;
-
- if (!Arrays.equals(shortArr, obj.shortArr))
- return false;
-
- if (shortVal2 != null ? !shortVal2.equals(obj.shortVal2) : obj.shortVal2 != null)
- return false;
-
- if (str != null ? !str.equals(obj.str) : obj.str != null)
- return false;
-
- if (uuid != null ? !uuid.equals(obj.uuid) : obj.uuid != null)
- return false;
-
- if (self != this)
- return false;
-
- return true;
- }
- }
-
- /**
- * Test enum.
- */
- @SuppressWarnings("JavaDoc")
- private enum TestEnum {
- /** */
- A,
-
- /** */
- B,
-
- /** */
- C
- }
-
- /**
- * Class with custom serialization method which at the beginning invokes
- * {@link ObjectOutputStream#defaultWriteObject()} and {@link ObjectOutputStream#putFields()} then.
- */
- public static class CustomWriteObjectMethodObject implements Serializable {
- /** */
- private final String name;
-
- /**
- * Creates new instance.
- * @param name Object name.
- */
- public CustomWriteObjectMethodObject(String name) {
- this.name = name;
- }
-
- /** {@inheritDoc} */
- private void writeObject(ObjectOutputStream stream) throws IOException {
- stream.defaultWriteObject();
-
- ObjectOutputStream.PutField fields = stream.putFields();
- fields.put("name", "test");
-
- stream.writeFields();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
deleted file mode 100644
index f72e77a..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/TestTcpDiscoveryIpFinderAdapter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.marshaller.optimized;
-
-import java.net.InetSocketAddress;
-import java.util.Collection;
-import org.apache.ignite.spi.IgniteSpiException;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
-
-/**
- * Test TCP discovery IP finder adapter.
- */
-public class TestTcpDiscoveryIpFinderAdapter extends TcpDiscoveryIpFinderAdapter {
- /** {@inheritDoc} */
- @Override public Collection<InetSocketAddress> getRegisteredAddresses() throws IgniteSpiException {
- return null;
- }
-
- /** {@inheritDoc} */
- @Override public void registerAddresses(Collection<InetSocketAddress> addrs) throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void unregisterAddresses(Collection<InetSocketAddress> addrs) throws IgniteSpiException {
- // No-op.
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/package-info.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/package-info.java
deleted file mode 100644
index 2b5a692..0000000
--- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * <!-- Package description. -->
- * Optimized marchalling test package.
- */
-package org.apache.ignite.marshaller.optimized;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
index b731b4b..ddf0149 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingWithClientTest.java
@@ -27,9 +27,9 @@ import org.apache.ignite.IgniteMessaging;
import org.apache.ignite.cluster.ClusterGroup;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
index d3ffb96..541b3a2 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoveryMarshallerCheckSelfTest.java
@@ -19,8 +19,8 @@ package org.apache.ignite.spi.discovery.tcp;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
index df2ea22..0a66872 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMarshallerCheckSelfTest.java
@@ -19,8 +19,8 @@ package org.apache.ignite.spi.discovery.tcp;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
index 4666581..549385f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/configvariations/ConfigVariations.java
@@ -45,7 +45,6 @@ import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.configuration.TopologyValidator;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.MapCacheStoreStrategy;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.spi.swapspace.inmemory.GridTestSwapSpaceSpi;
import static org.apache.ignite.internal.util.lang.GridFunc.asArray;
@@ -104,7 +103,7 @@ public class ConfigVariations {
/** */
@SuppressWarnings("unchecked")
private static final ConfigParameter<IgniteConfiguration>[][] BASIC_IGNITE_SET = new ConfigParameter[][] {
- Parameters.objectParameters("setMarshaller", Parameters.factory(BinaryMarshaller.class), optimizedMarshallerFactory()),
+ Parameters.objectParameters("setMarshaller", Parameters.factory(BinaryMarshaller.class), binaryMarshallerFactory()),
Parameters.booleanParameters("setPeerClassLoadingEnabled"),
Parameters.objectParameters("setSwapSpaceSpi", Parameters.factory(GridTestSwapSpaceSpi.class)),
};
@@ -215,14 +214,10 @@ public class ConfigVariations {
/**
* @return Marshaller.
*/
- public static Factory<OptimizedMarshaller> optimizedMarshallerFactory() {
- return new Factory<OptimizedMarshaller>() {
- @Override public OptimizedMarshaller create() {
- OptimizedMarshaller marsh = new OptimizedMarshaller(true);
-
- marsh.setRequireSerializable(false);
-
- return marsh;
+ public static Factory<BinaryMarshaller> binaryMarshallerFactory() {
+ return new Factory<BinaryMarshaller>() {
+ @Override public BinaryMarshaller create() {
+ return new BinaryMarshaller();
}
};
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
index 4d861d0..7017e00 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java
@@ -28,15 +28,15 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryCachingMetadataHandler;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.binary.BinaryContext;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.internal.processors.resource.GridResourceProcessor;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.marshaller.MarshallerContextTestImpl;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.resources.LoggerResource;
import org.apache.ignite.testframework.config.GridTestProperties;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
index 438132c..837523d 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryBasicTestSuite.java
@@ -25,6 +25,13 @@ import org.apache.ignite.internal.GridReleaseTypeSelfTest;
import org.apache.ignite.internal.GridVersionSelfTest;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.managers.deployment.GridDeploymentMessageCountSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerEnumSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerNodeFailoverTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerPooledSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerSerialPersistentFieldsSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedObjectStreamSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingErrorTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingNearErrorTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingRebalanceErrorTest;
@@ -39,13 +46,6 @@ import org.apache.ignite.internal.util.nio.GridNioSelfTest;
import org.apache.ignite.internal.util.nio.GridNioSslSelfTest;
import org.apache.ignite.marshaller.DynamicProxySerializationMultiJvmSelfTest;
import org.apache.ignite.marshaller.jdk.GridJdkMarshallerSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerEnumSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerNodeFailoverTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerPooledSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerSerialPersistentFieldsSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerTest;
-import org.apache.ignite.marshaller.optimized.OptimizedObjectStreamSelfTest;
import org.apache.ignite.messaging.GridMessagingNoPeerClassLoadingSelfTest;
import org.apache.ignite.messaging.GridMessagingSelfTest;
import org.apache.ignite.testframework.config.GridTestProperties;
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index db4909e..f5bcd66 100755
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -35,17 +35,15 @@ import org.apache.ignite.cache.store.StoreResourceInjectionSelfTest;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreBinaryMarshallerSelfTest;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreBinaryMarshallerWithSqlEscapeSelfTest;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreMultitreadedSelfTest;
-import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreOptimizedMarshallerSelfTest;
-import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest;
import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreTest;
import org.apache.ignite.cache.store.jdbc.GridCacheJdbcBlobStoreMultithreadedSelfTest;
import org.apache.ignite.cache.store.jdbc.GridCacheJdbcBlobStoreSelfTest;
+import org.apache.ignite.cache.store.jdbc.JdbcTypesDefaultTransformerTest;
import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalanceMultipleConnectionsTest;
import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalancePairedConnectionsTest;
import org.apache.ignite.internal.managers.communication.IgniteCommunicationBalanceTest;
import org.apache.ignite.internal.managers.communication.IgniteIoTestMessagesTest;
import org.apache.ignite.internal.managers.communication.IgniteVariousConnectionNumberTest;
-import org.apache.ignite.cache.store.jdbc.JdbcTypesDefaultTransformerTest;
import org.apache.ignite.internal.processors.cache.CacheAffinityCallSelfTest;
import org.apache.ignite.internal.processors.cache.CacheDeferredDeleteQueueTest;
import org.apache.ignite.internal.processors.cache.CacheDeferredDeleteSanitySelfTest;
@@ -262,8 +260,6 @@ public class IgniteCacheTestSuite extends TestSuite {
suite.addTestSuite(GridCacheJdbcBlobStoreMultithreadedSelfTest.class);
suite.addTestSuite(JdbcTypesDefaultTransformerTest.class);
suite.addTestSuite(CacheJdbcPojoStoreTest.class);
- suite.addTestSuite(CacheJdbcPojoStoreOptimizedMarshallerSelfTest.class);
- suite.addTestSuite(CacheJdbcPojoStoreOptimizedMarshallerWithSqlEscapeSelfTest.class);
suite.addTestSuite(CacheJdbcPojoStoreBinaryMarshallerSelfTest.class);
suite.addTestSuite(CacheJdbcPojoStoreBinaryMarshallerWithSqlEscapeSelfTest.class);
suite.addTestSuite(CacheJdbcPojoStoreMultitreadedSelfTest.class);
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeBasicConfigVariationsFullApiTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeBasicConfigVariationsFullApiTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeBasicConfigVariationsFullApiTestSuite.java
index 1be932a..41cc8a1 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeBasicConfigVariationsFullApiTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeBasicConfigVariationsFullApiTestSuite.java
@@ -37,7 +37,7 @@ public class IgniteComputeBasicConfigVariationsFullApiTestSuite extends TestSuit
Parameters.objectParameters("setMarshaller",
Parameters.factory(JdkMarshaller.class),
Parameters.factory(BinaryMarshaller.class),
- ConfigVariations.optimizedMarshallerFactory()
+ ConfigVariations.binaryMarshallerFactory()
),
Parameters.booleanParameters("setPeerClassLoadingEnabled"),
Parameters.booleanParameters("setMarshalLocalJobs"),
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
index 22d3add..98a6bde 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMarshallerSelfTestSuite.java
@@ -20,17 +20,17 @@ package org.apache.ignite.testsuites;
import java.util.Set;
import junit.framework.TestSuite;
import org.apache.ignite.internal.direct.stream.v2.DirectByteBufferStreamImplV2ByteOrderSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerEnumSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerNodeFailoverTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerPooledSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerSerialPersistentFieldsSelfTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerTest;
+import org.apache.ignite.internal.marshaller.optimized.OptimizedObjectStreamSelfTest;
import org.apache.ignite.internal.util.GridHandleTableSelfTest;
import org.apache.ignite.internal.util.io.GridUnsafeDataInputOutputByteOrderSelfTest;
import org.apache.ignite.internal.util.io.GridUnsafeDataOutputArraySizingSelfTest;
import org.apache.ignite.marshaller.jdk.GridJdkMarshallerSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerEnumSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerNodeFailoverTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerPooledSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerSerialPersistentFieldsSelfTest;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshallerTest;
-import org.apache.ignite.marshaller.optimized.OptimizedObjectStreamSelfTest;
import org.apache.ignite.testframework.GridTestUtils;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMessagingConfigVariationFullApiTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMessagingConfigVariationFullApiTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMessagingConfigVariationFullApiTestSuite.java
index bfb9cd1..0490a92 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMessagingConfigVariationFullApiTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteMessagingConfigVariationFullApiTestSuite.java
@@ -37,7 +37,7 @@ public class IgniteMessagingConfigVariationFullApiTestSuite extends TestSuite {
Parameters.objectParameters("setMarshaller",
Parameters.factory(JdkMarshaller.class),
Parameters.factory(BinaryMarshaller.class),
- ConfigVariations.optimizedMarshallerFactory()
+ ConfigVariations.binaryMarshallerFactory()
),
Parameters.booleanParameters("setPeerClassLoadingEnabled")
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteServiceConfigVariationsFullApiTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteServiceConfigVariationsFullApiTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteServiceConfigVariationsFullApiTestSuite.java
index 328ae8d..84af386 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteServiceConfigVariationsFullApiTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteServiceConfigVariationsFullApiTestSuite.java
@@ -37,7 +37,7 @@ public class IgniteServiceConfigVariationsFullApiTestSuite extends TestSuite {
Parameters.objectParameters("setMarshaller",
Parameters.factory(JdkMarshaller.class),
Parameters.factory(BinaryMarshaller.class),
- ConfigVariations.optimizedMarshallerFactory()
+ ConfigVariations.binaryMarshallerFactory()
),
Parameters.booleanParameters("setPeerClassLoadingEnabled")
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml b/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
index 7fdd559..cb781e0 100644
--- a/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
+++ b/modules/core/src/test/webapp/META-INF/ignite-webapp-config.xml
@@ -51,7 +51,7 @@
Configure optimized marshaller.
-->
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
<!--
For better performance set this property to true in case
all marshalled classes implement java.io.Serializable.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
index dd3da7c..03cf945 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-0.xml
@@ -54,7 +54,7 @@
<property name="gridName" value="IGFS-cli-0"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
index c577d28..a6022fa 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-1.xml
@@ -54,7 +54,7 @@
<property name="gridName" value="IGFS-cli-1"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
index 1f7eaa3..6cfcf57 100644
--- a/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
+++ b/modules/hadoop/src/test/config/hadoop-fs-open-test/grid-2.xml
@@ -54,7 +54,7 @@
<property name="gridName" value="IGFS-cli-2"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml b/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
index bd2ae87..488d8d9 100644
--- a/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
+++ b/modules/hadoop/src/test/config/igfs-cli-config-dual-async.xml
@@ -55,7 +55,7 @@
<property name="gridName" value="test-IGFS-cli"/>
<property name="marshaller">
- <bean class="org.apache.ignite.marshaller.optimized.OptimizedMarshaller">
+ <bean class="org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller">
</bean>
</property>
[12/14] ignite git commit: IGNITE-4938 OptimizedMarshaller de-pub
take 3 - removed redundant test suites
Posted by ag...@apache.org.
IGNITE-4938 OptimizedMarshaller de-pub take 3 - removed redundant test suites
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1115ca5f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1115ca5f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1115ca5f
Branch: refs/heads/ignite-4938
Commit: 1115ca5f81dc1a729cc16bcffd6ad5697b82e319
Parents: 7942d58
Author: Alexander Paschenko <al...@gmail.com>
Authored: Wed Apr 12 03:44:42 2017 +0300
Committer: Alexander Paschenko <al...@gmail.com>
Committed: Wed Apr 12 03:44:42 2017 +0300
----------------------------------------------------------------------
...naryObjectsTxDeadlockDetectionTestSuite.java | 37 -------------------
.../IgniteBinaryCacheFullApiTestSuite.java | 37 -------------------
.../testsuites/IgniteBinaryCacheTestSuite.java | 4 --
...ObjectsCacheDataStructuresSelfTestSuite.java | 37 -------------------
...BinaryObjectsCacheExpiryPolicyTestSuite.java | 38 -------------------
...gniteBinaryObjectsCacheRestartTestSuite.java | 37 -------------------
.../IgniteBinaryObjectsCacheTestSuite2.java | 37 -------------------
.../IgniteBinaryObjectsCacheTestSuite3.java | 2 -
.../IgniteBinaryObjectsCacheTestSuite4.java | 37 -------------------
...IgniteBinaryObjectsComputeGridTestSuite.java | 4 --
.../IgniteBinaryCacheQueryTestSuite.java | 4 --
.../IgniteBinaryCacheQueryTestSuite2.java | 4 --
.../IgniteBinaryCacheQueryTestSuite3.java | 39 --------------------
.../IgniteBinaryCacheQueryTestSuite4.java | 39 --------------------
14 files changed, 356 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/BinaryObjectsTxDeadlockDetectionTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/BinaryObjectsTxDeadlockDetectionTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/BinaryObjectsTxDeadlockDetectionTestSuite.java
deleted file mode 100644
index 45afba2..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/BinaryObjectsTxDeadlockDetectionTestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class BinaryObjectsTxDeadlockDetectionTestSuite {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return TxDeadlockDetectionTestSuite.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheFullApiTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheFullApiTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheFullApiTestSuite.java
deleted file mode 100644
index e891d35..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheFullApiTestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- * Cache full API suite with binary marshaller.
- */
-public class IgniteBinaryCacheFullApiTestSuite extends TestSuite {
- /**
- * @return Suite.
- * @throws Exception In case of error.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheFullApiSelfTestSuite.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
index 2668598..1101c90 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheTestSuite.java
@@ -19,7 +19,6 @@ package org.apache.ignite.testsuites;
import java.util.HashSet;
import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.GridCacheAffinityRoutingSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheEntryMemorySizeSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheMvccSelfTest;
@@ -46,7 +45,6 @@ import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCa
import org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheBinariesPartitionedOnlyByteArrayValuesSelfTest;
import org.apache.ignite.internal.processors.cache.expiry.IgniteCacheAtomicLocalOffheapExpiryPolicyTest;
import org.apache.ignite.internal.processors.datastreamer.DataStreamProcessorSelfTest;
-import org.apache.ignite.testframework.config.GridTestProperties;
/**
* Cache suite with binary marshaller.
@@ -57,8 +55,6 @@ public class IgniteBinaryCacheTestSuite extends TestSuite {
* @throws Exception In case of error.
*/
public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
TestSuite suite = new TestSuite("Binary Cache Test Suite");
HashSet<Class> ignoredTests = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheDataStructuresSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheDataStructuresSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheDataStructuresSelfTestSuite.java
deleted file mode 100644
index e15540a..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheDataStructuresSelfTestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class IgniteBinaryObjectsCacheDataStructuresSelfTestSuite {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheDataStructuresSelfTestSuite.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheExpiryPolicyTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheExpiryPolicyTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheExpiryPolicyTestSuite.java
deleted file mode 100644
index 7cb4051..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheExpiryPolicyTestSuite.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.internal.processors.cache.expiry.IgniteCacheExpiryPolicyTestSuite;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class IgniteBinaryObjectsCacheExpiryPolicyTestSuite {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheExpiryPolicyTestSuite.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheRestartTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheRestartTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheRestartTestSuite.java
deleted file mode 100644
index e3c9f68..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheRestartTestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class IgniteBinaryObjectsCacheRestartTestSuite {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheRestartTestSuite.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite2.java
deleted file mode 100644
index c13693b..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite2.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class IgniteBinaryObjectsCacheTestSuite2 {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheTestSuite2.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite3.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite3.java
index d80478b..8d21580 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite3.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite3.java
@@ -18,7 +18,6 @@
package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.binary.GridCacheBinaryAtomicEntryProcessorDeploymentSelfTest;
import org.apache.ignite.internal.processors.cache.binary.GridCacheBinaryTransactionalEntryProcessorDeploymentSelfTest;
import org.apache.ignite.testframework.config.GridTestProperties;
@@ -32,7 +31,6 @@ public class IgniteBinaryObjectsCacheTestSuite3 {
* @throws Exception If failed.
*/
public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
GridTestProperties.setProperty(GridTestProperties.ENTRY_PROCESSOR_CLASS_NAME,
"org.apache.ignite.tests.p2p.CacheDeploymentBinaryEntryProcessor");
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite4.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite4.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite4.java
deleted file mode 100644
index 2292a93..0000000
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsCacheTestSuite4.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- *
- */
-public class IgniteBinaryObjectsCacheTestSuite4 {
- /**
- * @return Test suite.
- * @throws Exception If failed.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- return IgniteCacheTestSuite4.suite();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsComputeGridTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsComputeGridTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsComputeGridTestSuite.java
index e659966..8798db9 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsComputeGridTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBinaryObjectsComputeGridTestSuite.java
@@ -19,8 +19,6 @@ package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
import org.apache.ignite.internal.GridComputationBinarylizableClosuresSelfTest;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
/**
*
@@ -31,8 +29,6 @@ public class IgniteBinaryObjectsComputeGridTestSuite {
* @throws Exception If failed.
*/
public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
TestSuite suite = IgniteComputeGridTestSuite.suite();
suite.addTestSuite(GridComputationBinarylizableClosuresSelfTest.class);
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
index e957f0f..92fda7b 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
@@ -18,13 +18,11 @@
package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.BinarySerializationQuerySelfTest;
import org.apache.ignite.internal.processors.cache.BinarySerializationQueryWithReflectiveSerializerSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheBinaryObjectsScanSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheBinaryDuplicateIndexObjectPartitionedAtomicSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheBinaryDuplicateIndexObjectPartitionedTransactionalSelfTest;
-import org.apache.ignite.testframework.config.GridTestProperties;
/**
* Cache query suite with binary marshaller.
@@ -35,8 +33,6 @@ public class IgniteBinaryCacheQueryTestSuite extends TestSuite {
* @throws Exception In case of error.
*/
public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
TestSuite suite = IgniteCacheQuerySelfTestSuite.suite();
// Serialization.
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
index 359c7fd..ce2a666 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
@@ -18,9 +18,7 @@
package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.IgniteCacheQueriesLoadTest1;
-import org.apache.ignite.testframework.config.GridTestProperties;
/**
* Cache query suite with binary marshaller.
@@ -31,8 +29,6 @@ public class IgniteBinaryCacheQueryTestSuite2 extends TestSuite {
* @throws Exception In case of error.
*/
public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
TestSuite suite = IgniteCacheQuerySelfTestSuite2.suite();
suite.addTestSuite(IgniteCacheQueriesLoadTest1.class);
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
deleted file mode 100644
index f9e9af2..0000000
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- * Cache query suite with binary marshaller.
- */
-public class IgniteBinaryCacheQueryTestSuite3 extends TestSuite {
- /**
- * @return Suite.
- * @throws Exception In case of error.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- TestSuite suite = IgniteCacheQuerySelfTestSuite3.suite();
-
- return suite;
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/1115ca5f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite4.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite4.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite4.java
deleted file mode 100644
index 32a693f..0000000
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite4.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.testsuites;
-
-import junit.framework.TestSuite;
-import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.testframework.config.GridTestProperties;
-
-/**
- * Cache query suite with binary marshaller.
- */
-public class IgniteBinaryCacheQueryTestSuite4 extends TestSuite {
- /**
- * @return Suite.
- * @throws Exception In case of error.
- */
- public static TestSuite suite() throws Exception {
- GridTestProperties.setProperty(GridTestProperties.MARSH_CLASS_NAME, BinaryMarshaller.class.getName());
-
- TestSuite suite = IgniteCacheQuerySelfTestSuite4.suite();
-
- return suite;
- }
-}
[08/14] ignite git commit: IGNITE-4938 De-pub of OptimizedMarshaller
- take 1
Posted by ag...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
new file mode 100644
index 0000000..f9a6df9
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshallerUtils.java
@@ -0,0 +1,551 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.IOException;
+import java.io.ObjectStreamClass;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.util.GridUnsafe;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.marshaller.MarshallerContext;
+import org.apache.ignite.marshaller.jdk.JdkMarshaller;
+
+import static org.apache.ignite.internal.MarshallerPlatformIds.JAVA_ID;
+
+/**
+ * Miscellaneous utility methods to facilitate {@link OptimizedMarshaller}.
+ */
+class OptimizedMarshallerUtils {
+ /** */
+ static final long HASH_SET_MAP_OFF;
+
+ /** */
+ static final byte JDK = -2;
+
+ /** */
+ static final byte HANDLE = -1;
+
+ /** */
+ static final byte NULL = 0;
+
+ /** */
+ static final byte BYTE = 1;
+
+ /** */
+ static final byte SHORT = 2;
+
+ /** */
+ static final byte INT = 3;
+
+ /** */
+ static final byte LONG = 4;
+
+ /** */
+ static final byte FLOAT = 5;
+
+ /** */
+ static final byte DOUBLE = 6;
+
+ /** */
+ static final byte CHAR = 7;
+
+ /** */
+ static final byte BOOLEAN = 8;
+
+ /** */
+ static final byte BYTE_ARR = 9;
+
+ /** */
+ static final byte SHORT_ARR = 10;
+
+ /** */
+ static final byte INT_ARR = 11;
+
+ /** */
+ static final byte LONG_ARR = 12;
+
+ /** */
+ static final byte FLOAT_ARR = 13;
+
+ /** */
+ static final byte DOUBLE_ARR = 14;
+
+ /** */
+ static final byte CHAR_ARR = 15;
+
+ /** */
+ static final byte BOOLEAN_ARR = 16;
+
+ /** */
+ static final byte OBJ_ARR = 17;
+
+ /** */
+ static final byte STR = 18;
+
+ /** */
+ static final byte UUID = 19;
+
+ /** */
+ static final byte PROPS = 20;
+
+ /** */
+ static final byte ARRAY_LIST = 21;
+
+ /** */
+ static final byte HASH_MAP = 22;
+
+ /** */
+ static final byte HASH_SET = 23;
+
+ /** */
+ static final byte LINKED_LIST = 24;
+
+ /** */
+ static final byte LINKED_HASH_MAP = 25;
+
+ /** */
+ static final byte LINKED_HASH_SET = 26;
+
+ /** */
+ static final byte DATE = 27;
+
+ /** */
+ static final byte CLS = 28;
+
+ /** */
+ static final byte PROXY = 29;
+
+ /** */
+ static final byte ENUM = 100;
+
+ /** */
+ static final byte EXTERNALIZABLE = 101;
+
+ /** */
+ static final byte SERIALIZABLE = 102;
+
+ /** UTF-8 character name. */
+ static final Charset UTF_8 = Charset.forName("UTF-8");
+
+ /** JDK marshaller. */
+ static final JdkMarshaller JDK_MARSH = new JdkMarshaller();
+
+ static {
+ long mapOff;
+
+ try {
+ mapOff = GridUnsafe.objectFieldOffset(HashSet.class.getDeclaredField("map"));
+ }
+ catch (NoSuchFieldException ignored) {
+ try {
+ // Workaround for legacy IBM JRE.
+ mapOff = GridUnsafe.objectFieldOffset(HashSet.class.getDeclaredField("backingMap"));
+ }
+ catch (NoSuchFieldException e2) {
+ throw new IgniteException("Initialization failure.", e2);
+ }
+ }
+
+ HASH_SET_MAP_OFF = mapOff;
+ }
+
+ /**
+ */
+ private OptimizedMarshallerUtils() {
+ // No-op.
+ }
+
+ /**
+ * Gets descriptor for provided class.
+ *
+ * @param clsMap Class descriptors by class map.
+ * @param cls Class.
+ * @param ctx Context.
+ * @param mapper ID mapper.
+ * @return Descriptor.
+ * @throws IOException In case of error.
+ */
+ static OptimizedClassDescriptor classDescriptor(
+ ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
+ Class cls,
+ MarshallerContext ctx,
+ OptimizedMarshallerIdMapper mapper)
+ throws IOException
+ {
+ OptimizedClassDescriptor desc = clsMap.get(cls);
+
+ if (desc == null) {
+ int typeId = resolveTypeId(cls.getName(), mapper);
+
+ boolean registered;
+
+ try {
+ registered = ctx.registerClassName(JAVA_ID, typeId, cls.getName());
+ }
+ catch (IgniteCheckedException e) {
+ throw new IOException("Failed to register class: " + cls.getName(), e);
+ }
+
+ desc = new OptimizedClassDescriptor(cls, registered ? typeId : 0, clsMap, ctx, mapper);
+
+ if (registered) {
+ OptimizedClassDescriptor old = clsMap.putIfAbsent(cls, desc);
+
+ if (old != null)
+ desc = old;
+ }
+ }
+
+ return desc;
+ }
+
+ /**
+ * @param clsName Class name.
+ * @param mapper Mapper.
+ * @return Type ID.
+ */
+ private static int resolveTypeId(String clsName, OptimizedMarshallerIdMapper mapper) {
+ int typeId;
+
+ if (mapper != null) {
+ typeId = mapper.typeId(clsName);
+
+ if (typeId == 0)
+ typeId = clsName.hashCode();
+ }
+ else
+ typeId = clsName.hashCode();
+
+ return typeId;
+ }
+
+ /**
+ * Gets descriptor for provided ID.
+ *
+ * @param clsMap Class descriptors by class map.
+ * @param typeId ID.
+ * @param ldr Class loader.
+ * @param ctx Context.
+ * @param mapper ID mapper.
+ * @return Descriptor.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class was not found.
+ */
+ static OptimizedClassDescriptor classDescriptor(
+ ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
+ int typeId,
+ ClassLoader ldr,
+ MarshallerContext ctx,
+ OptimizedMarshallerIdMapper mapper) throws IOException, ClassNotFoundException {
+ Class cls;
+
+ try {
+ cls = ctx.getClass(typeId, ldr);
+ }
+ catch (IgniteCheckedException e) {
+ throw new IOException("Failed to resolve class for ID: " + typeId, e);
+ }
+
+ OptimizedClassDescriptor desc = clsMap.get(cls);
+
+ if (desc == null) {
+ OptimizedClassDescriptor old = clsMap.putIfAbsent(cls, desc =
+ new OptimizedClassDescriptor(cls, resolveTypeId(cls.getName(), mapper), clsMap, ctx, mapper));
+
+ if (old != null)
+ desc = old;
+ }
+
+ return desc;
+ }
+
+ /**
+ * Computes the serial version UID value for the given class. The code is taken from {@link
+ * ObjectStreamClass#computeDefaultSUID(Class)}.
+ *
+ * @param cls A class.
+ * @param fields Fields.
+ * @return A serial version UID.
+ * @throws IOException If failed.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ static short computeSerialVersionUid(Class cls, List<Field> fields) throws IOException {
+ if (Serializable.class.isAssignableFrom(cls) && !Enum.class.isAssignableFrom(cls)) {
+ try {
+ Field field = cls.getDeclaredField("serialVersionUID");
+
+ if (field.getType() == long.class) {
+ int mod = field.getModifiers();
+
+ if (Modifier.isStatic(mod) && Modifier.isFinal(mod)) {
+ field.setAccessible(true);
+
+ return (short)field.getLong(null);
+ }
+ }
+ }
+ catch (NoSuchFieldException ignored) {
+ // No-op.
+ }
+ catch (IllegalAccessException e) {
+ throw new IOException(e);
+ }
+
+ if (OptimizedMarshaller.USE_DFLT_SUID)
+ return (short)ObjectStreamClass.lookup(cls).getSerialVersionUID();
+ }
+
+ MessageDigest md;
+
+ try {
+ md = MessageDigest.getInstance("SHA");
+ }
+ catch (NoSuchAlgorithmException e) {
+ throw new IOException("Failed to get digest for SHA.", e);
+ }
+
+ md.update(cls.getName().getBytes(UTF_8));
+
+ if (!F.isEmpty(fields)) {
+ for (int i = 0; i < fields.size(); i++) {
+ Field f = fields.get(i);
+
+ md.update(f.getName().getBytes(UTF_8));
+ md.update(f.getType().getName().getBytes(UTF_8));
+ }
+ }
+
+ byte[] hashBytes = md.digest();
+
+ long hash = 0;
+
+ // Composes a single-long hash from the byte[] hash.
+ for (int i = Math.min(hashBytes.length, 8) - 1; i >= 0; i--)
+ hash = (hash << 8) | (hashBytes[i] & 0xFF);
+
+ return (short)hash;
+ }
+
+ /**
+ * Gets byte field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Byte value.
+ */
+ static byte getByte(Object obj, long off) {
+ return GridUnsafe.getByteField(obj, off);
+ }
+
+ /**
+ * Sets byte field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setByte(Object obj, long off, byte val) {
+ GridUnsafe.putByteField(obj, off, val);
+ }
+
+ /**
+ * Gets short field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Short value.
+ */
+ static short getShort(Object obj, long off) {
+ return GridUnsafe.getShortField(obj, off);
+ }
+
+ /**
+ * Sets short field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setShort(Object obj, long off, short val) {
+ GridUnsafe.putShortField(obj, off, val);
+ }
+
+ /**
+ * Gets integer field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Integer value.
+ */
+ static int getInt(Object obj, long off) {
+ return GridUnsafe.getIntField(obj, off);
+ }
+
+ /**
+ * Sets integer field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setInt(Object obj, long off, int val) {
+ GridUnsafe.putIntField(obj, off, val);
+ }
+
+ /**
+ * Gets long field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Long value.
+ */
+ static long getLong(Object obj, long off) {
+ return GridUnsafe.getLongField(obj, off);
+ }
+
+ /**
+ * Sets long field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setLong(Object obj, long off, long val) {
+ GridUnsafe.putLongField(obj, off, val);
+ }
+
+ /**
+ * Gets float field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Float value.
+ */
+ static float getFloat(Object obj, long off) {
+ return GridUnsafe.getFloatField(obj, off);
+ }
+
+ /**
+ * Sets float field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setFloat(Object obj, long off, float val) {
+ GridUnsafe.putFloatField(obj, off, val);
+ }
+
+ /**
+ * Gets double field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Double value.
+ */
+ static double getDouble(Object obj, long off) {
+ return GridUnsafe.getDoubleField(obj, off);
+ }
+
+ /**
+ * Sets double field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setDouble(Object obj, long off, double val) {
+ GridUnsafe.putDoubleField(obj, off, val);
+ }
+
+ /**
+ * Gets char field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Char value.
+ */
+ static char getChar(Object obj, long off) {
+ return GridUnsafe.getCharField(obj, off);
+ }
+
+ /**
+ * Sets char field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setChar(Object obj, long off, char val) {
+ GridUnsafe.putCharField(obj, off, val);
+ }
+
+ /**
+ * Gets boolean field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Boolean value.
+ */
+ static boolean getBoolean(Object obj, long off) {
+ return GridUnsafe.getBooleanField(obj, off);
+ }
+
+ /**
+ * Sets boolean field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setBoolean(Object obj, long off, boolean val) {
+ GridUnsafe.putBooleanField(obj, off, val);
+ }
+
+ /**
+ * Gets field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @return Value.
+ */
+ static Object getObject(Object obj, long off) {
+ return GridUnsafe.getObjectField(obj, off);
+ }
+
+ /**
+ * Sets field value.
+ *
+ * @param obj Object.
+ * @param off Field offset.
+ * @param val Value.
+ */
+ static void setObject(Object obj, long off, Object val) {
+ GridUnsafe.putObjectField(obj, off, val);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
new file mode 100644
index 0000000..be0e115
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectInputStream.java
@@ -0,0 +1,1231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.NotActiveException;
+import java.io.ObjectInputStream;
+import java.io.ObjectInputValidation;
+import java.io.ObjectStreamClass;
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.GridUnsafe;
+import org.apache.ignite.internal.util.io.GridDataInput;
+import org.apache.ignite.internal.util.typedef.internal.SB;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.MarshallerContext;
+
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.ARRAY_LIST;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BOOLEAN_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BYTE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.BYTE_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CHAR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CHAR_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.CLS;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DATE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.DOUBLE_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.ENUM;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.EXTERNALIZABLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.FLOAT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.FLOAT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HANDLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_MAP;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HASH_SET_MAP_OFF;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.INT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.INT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.JDK;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.JDK_MARSH;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_MAP;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_HASH_SET;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LINKED_LIST;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LONG;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.LONG_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.NULL;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.OBJ_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.PROPS;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.PROXY;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SERIALIZABLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SHORT;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.SHORT_ARR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.STR;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.UUID;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setBoolean;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setByte;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setChar;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setDouble;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setFloat;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setInt;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setLong;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setObject;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.setShort;
+
+/**
+ * Optimized object input stream.
+ */
+class OptimizedObjectInputStream extends ObjectInputStream {
+ /** Dummy object for HashSet. */
+ private static final Object DUMMY = new Object();
+
+ /** */
+ private final HandleTable handles = new HandleTable(10);
+
+ /** */
+ private MarshallerContext ctx;
+
+ /** */
+ private OptimizedMarshallerIdMapper mapper;
+
+ /** */
+ private ClassLoader clsLdr;
+
+ /** */
+ private GridDataInput in;
+
+ /** */
+ private Object curObj;
+
+ /** */
+ private OptimizedClassDescriptor.ClassFields curFields;
+
+ /** */
+ private Class<?> curCls;
+
+ /** */
+ private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
+
+ /**
+ * @param in Input.
+ * @throws IOException In case of error.
+ */
+ OptimizedObjectInputStream(GridDataInput in) throws IOException {
+ this.in = in;
+ }
+
+ /**
+ * @param clsMap Class descriptors by class map.
+ * @param ctx Context.
+ * @param mapper ID mapper.
+ * @param clsLdr Class loader.
+ */
+ void context(
+ ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
+ MarshallerContext ctx,
+ OptimizedMarshallerIdMapper mapper,
+ ClassLoader clsLdr)
+ {
+ this.clsMap = clsMap;
+ this.ctx = ctx;
+ this.mapper = mapper;
+ this.clsLdr = clsLdr;
+ }
+
+ /**
+ * @return Input.
+ */
+ public GridDataInput in() {
+ return in;
+ }
+
+ /**
+ * @param in Input.
+ */
+ public void in(GridDataInput in) {
+ this.in = in;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void close() throws IOException {
+ reset();
+
+ ctx = null;
+ clsLdr = null;
+ clsMap = null;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("NonSynchronizedMethodOverridesSynchronizedMethod")
+ @Override public void reset() throws IOException {
+ in.reset();
+ handles.clear();
+
+ curObj = null;
+ curFields = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object readObjectOverride() throws ClassNotFoundException, IOException {
+ curObj = null;
+ curFields = null;
+
+ byte ref = in.readByte();
+
+ switch (ref) {
+ case NULL:
+ return null;
+
+ case HANDLE:
+ return handles.lookup(readInt());
+
+ case JDK:
+ try {
+ return JDK_MARSH.unmarshal(this, clsLdr);
+ }
+ catch (IgniteCheckedException e) {
+ IOException ioEx = e.getCause(IOException.class);
+
+ if (ioEx != null)
+ throw ioEx;
+ else
+ throw new IOException("Failed to deserialize object with JDK marshaller.", e);
+ }
+
+ case BYTE:
+ return readByte();
+
+ case SHORT:
+ return readShort();
+
+ case INT:
+ return readInt();
+
+ case LONG:
+ return readLong();
+
+ case FLOAT:
+ return readFloat();
+
+ case DOUBLE:
+ return readDouble();
+
+ case CHAR:
+ return readChar();
+
+ case BOOLEAN:
+ return readBoolean();
+
+ case BYTE_ARR:
+ return readByteArray();
+
+ case SHORT_ARR:
+ return readShortArray();
+
+ case INT_ARR:
+ return readIntArray();
+
+ case LONG_ARR:
+ return readLongArray();
+
+ case FLOAT_ARR:
+ return readFloatArray();
+
+ case DOUBLE_ARR:
+ return readDoubleArray();
+
+ case CHAR_ARR:
+ return readCharArray();
+
+ case BOOLEAN_ARR:
+ return readBooleanArray();
+
+ case OBJ_ARR:
+ return readArray(readClass());
+
+ case STR:
+ return readString();
+
+ case UUID:
+ return readUuid();
+
+ case PROPS:
+ return readProperties();
+
+ case ARRAY_LIST:
+ return readArrayList();
+
+ case HASH_MAP:
+ return readHashMap(false);
+
+ case HASH_SET:
+ return readHashSet(HASH_SET_MAP_OFF);
+
+ case LINKED_LIST:
+ return readLinkedList();
+
+ case LINKED_HASH_MAP:
+ return readLinkedHashMap(false);
+
+ case LINKED_HASH_SET:
+ return readLinkedHashSet(HASH_SET_MAP_OFF);
+
+ case DATE:
+ return readDate();
+
+ case CLS:
+ return readClass();
+
+ case PROXY:
+ Class<?>[] intfs = new Class<?>[readInt()];
+
+ for (int i = 0; i < intfs.length; i++)
+ intfs[i] = readClass();
+
+ InvocationHandler ih = (InvocationHandler)readObject();
+
+ return Proxy.newProxyInstance(clsLdr != null ? clsLdr : U.gridClassLoader(), intfs, ih);
+
+ case ENUM:
+ case EXTERNALIZABLE:
+ case SERIALIZABLE:
+ int typeId = readInt();
+
+ OptimizedClassDescriptor desc = typeId == 0 ?
+ classDescriptor(clsMap, U.forName(readUTF(), clsLdr), ctx, mapper):
+ classDescriptor(clsMap, typeId, clsLdr, ctx, mapper);
+
+ curCls = desc.describedClass();
+
+ return desc.read(this);
+
+ default:
+ SB msg = new SB("Unexpected error occurred during unmarshalling");
+
+ if (curCls != null)
+ msg.a(" of an instance of the class: ").a(curCls.getName());
+
+ msg.a(". Check that all nodes are running the same version of Ignite and that all nodes have " +
+ "GridOptimizedMarshaller configured with identical optimized classes lists, if any " +
+ "(see setClassNames and setClassNamesPath methods). If your serialized classes implement " +
+ "java.io.Externalizable interface, verify that serialization logic is correct.");
+
+ throw new IOException(msg.toString());
+ }
+ }
+
+ /**
+ * @return Class.
+ * @throws ClassNotFoundException If class was not found.
+ * @throws IOException In case of other error.
+ */
+ private Class<?> readClass() throws ClassNotFoundException, IOException {
+ int compTypeId = readInt();
+
+ return compTypeId == 0 ? U.forName(readUTF(), clsLdr) :
+ classDescriptor(clsMap, compTypeId, clsLdr, ctx, mapper).describedClass();
+ }
+
+ /**
+ * Reads array from this stream.
+ *
+ * @param compType Array component type.
+ * @return Array.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("unchecked")
+ <T> T[] readArray(Class<T> compType) throws ClassNotFoundException, IOException {
+ int len = in.readInt();
+
+ T[] arr = (T[])Array.newInstance(compType, len);
+
+ handles.assign(arr);
+
+ for (int i = 0; i < len; i++)
+ arr[i] = (T)readObject();
+
+ return arr;
+ }
+
+ /**
+ * Reads {@link UUID} from this stream.
+ *
+ * @return UUID.
+ * @throws IOException In case of error.
+ */
+ UUID readUuid() throws IOException {
+ UUID uuid = new UUID(readLong(), readLong());
+
+ handles.assign(uuid);
+
+ return uuid;
+ }
+
+ /**
+ * Reads {@link Properties} from this stream.
+ *
+ * @return Properties.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ Properties readProperties() throws ClassNotFoundException, IOException {
+ Properties dflts = readBoolean() ? null : (Properties)readObject();
+
+ Properties props = new Properties(dflts);
+
+ int size = in.readInt();
+
+ for (int i = 0; i < size; i++)
+ props.setProperty(readUTF(), readUTF());
+
+ handles.assign(props);
+
+ return props;
+ }
+
+ /**
+ * Reads and sets all non-static and non-transient field values from this stream.
+ *
+ * @param obj Object.
+ * @param fieldOffs Field offsets.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ void readFields(Object obj, OptimizedClassDescriptor.ClassFields fieldOffs) throws ClassNotFoundException,
+ IOException {
+ for (int i = 0; i < fieldOffs.size(); i++) {
+ OptimizedClassDescriptor.FieldInfo t = fieldOffs.get(i);
+
+ switch ((t.type())) {
+ case BYTE:
+ byte resByte = readByte();
+
+ if (t.field() != null)
+ setByte(obj, t.offset(), resByte);
+
+ break;
+
+ case SHORT:
+ short resShort = readShort();
+
+ if (t.field() != null)
+ setShort(obj, t.offset(), resShort);
+
+ break;
+
+ case INT:
+ int resInt = readInt();
+
+ if (t.field() != null)
+ setInt(obj, t.offset(), resInt);
+
+ break;
+
+ case LONG:
+ long resLong = readLong();
+
+ if (t.field() != null)
+ setLong(obj, t.offset(), resLong);
+
+ break;
+
+ case FLOAT:
+ float resFloat = readFloat();
+
+ if (t.field() != null)
+ setFloat(obj, t.offset(), resFloat);
+
+ break;
+
+ case DOUBLE:
+ double resDouble = readDouble();
+
+ if (t.field() != null)
+ setDouble(obj, t.offset(), resDouble);
+
+ break;
+
+ case CHAR:
+ char resChar = readChar();
+
+ if (t.field() != null)
+ setChar(obj, t.offset(), resChar);
+
+ break;
+
+ case BOOLEAN:
+ boolean resBoolean = readBoolean();
+
+ if (t.field() != null)
+ setBoolean(obj, t.offset(), resBoolean);
+
+ break;
+
+ case OTHER:
+ Object resObject = readObject();
+
+ if (t.field() != null)
+ setObject(obj, t.offset(), resObject);
+ }
+ }
+ }
+
+ /**
+ * Reads {@link Externalizable} object.
+ *
+ * @param constructor Constructor.
+ * @param readResolveMtd {@code readResolve} method.
+ * @return Object.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ Object readExternalizable(Constructor<?> constructor, Method readResolveMtd)
+ throws ClassNotFoundException, IOException {
+ Object obj;
+
+ try {
+ obj = constructor.newInstance();
+ }
+ catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
+ throw new IOException(e);
+ }
+
+ int handle = handles.assign(obj);
+
+ Externalizable extObj = ((Externalizable)obj);
+
+ extObj.readExternal(this);
+
+ if (readResolveMtd != null) {
+ try {
+ obj = readResolveMtd.invoke(obj);
+
+ handles.set(handle, obj);
+ }
+ catch (IllegalAccessException | InvocationTargetException e) {
+ throw new IOException(e);
+ }
+ }
+
+ return obj;
+ }
+
+ /**
+ * Reads serializable object.
+ *
+ * @param cls Class.
+ * @param mtds {@code readObject} methods.
+ * @param readResolveMtd {@code readResolve} method.
+ * @param fields class fields details.
+ * @return Object.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ Object readSerializable(Class<?> cls, List<Method> mtds, Method readResolveMtd,
+ OptimizedClassDescriptor.Fields fields) throws ClassNotFoundException, IOException {
+ Object obj;
+
+ try {
+ obj = GridUnsafe.allocateInstance(cls);
+ }
+ catch (InstantiationException e) {
+ throw new IOException(e);
+ }
+
+ int handle = handles.assign(obj);
+
+ for (int i = 0; i < mtds.size(); i++) {
+ Method mtd = mtds.get(i);
+
+ if (mtd != null) {
+ curObj = obj;
+ curFields = fields.fields(i);
+
+ try {
+ mtd.invoke(obj, this);
+ }
+ catch (IllegalAccessException | InvocationTargetException e) {
+ throw new IOException(e);
+ }
+ }
+ else
+ readFields(obj, fields.fields(i));
+ }
+
+ if (readResolveMtd != null) {
+ try {
+ obj = readResolveMtd.invoke(obj);
+
+ handles.set(handle, obj);
+ }
+ catch (IllegalAccessException | InvocationTargetException e) {
+ throw new IOException(e);
+ }
+ }
+
+ return obj;
+ }
+
+ /**
+ * Reads {@link ArrayList}.
+ *
+ * @return List.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ ArrayList<?> readArrayList() throws ClassNotFoundException, IOException {
+ int size = readInt();
+
+ ArrayList<Object> list = new ArrayList<>(size);
+
+ handles.assign(list);
+
+ for (int i = 0; i < size; i++)
+ list.add(readObject());
+
+ return list;
+ }
+
+ /**
+ * Reads {@link HashMap}.
+ *
+ * @param set Whether reading underlying map from {@link HashSet}.
+ * @return Map.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ HashMap<?, ?> readHashMap(boolean set) throws ClassNotFoundException, IOException {
+ int size = readInt();
+ float loadFactor = readFloat();
+
+ HashMap<Object, Object> map = new HashMap<>(size, loadFactor);
+
+ if (!set)
+ handles.assign(map);
+
+ for (int i = 0; i < size; i++) {
+ Object key = readObject();
+ Object val = !set ? readObject() : DUMMY;
+
+ map.put(key, val);
+ }
+
+ return map;
+ }
+
+ /**
+ * Reads {@link HashSet}.
+ *
+ * @param mapFieldOff Map field offset.
+ * @return Set.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("unchecked")
+ HashSet<?> readHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
+ try {
+ HashSet<Object> set = (HashSet<Object>)GridUnsafe.allocateInstance(HashSet.class);
+
+ handles.assign(set);
+
+ setObject(set, mapFieldOff, readHashMap(true));
+
+ return set;
+ }
+ catch (InstantiationException e) {
+ throw new IOException(e);
+ }
+ }
+
+ /**
+ * Reads {@link LinkedList}.
+ *
+ * @return List.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ LinkedList<?> readLinkedList() throws ClassNotFoundException, IOException {
+ int size = readInt();
+
+ LinkedList<Object> list = new LinkedList<>();
+
+ handles.assign(list);
+
+ for (int i = 0; i < size; i++)
+ list.add(readObject());
+
+ return list;
+ }
+
+ /**
+ * Reads {@link LinkedHashMap}.
+ *
+ * @param set Whether reading underlying map from {@link LinkedHashSet}.
+ * @return Map.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ LinkedHashMap<?, ?> readLinkedHashMap(boolean set) throws ClassNotFoundException, IOException {
+ int size = readInt();
+ float loadFactor = readFloat();
+ boolean accessOrder = readBoolean();
+
+ LinkedHashMap<Object, Object> map = new LinkedHashMap<>(size, loadFactor, accessOrder);
+
+ if (!set)
+ handles.assign(map);
+
+ for (int i = 0; i < size; i++) {
+ Object key = readObject();
+ Object val = !set ? readObject() : DUMMY;
+
+ map.put(key, val);
+ }
+
+ return map;
+ }
+
+ /**
+ * Reads {@link LinkedHashSet}.
+ *
+ * @param mapFieldOff Map field offset.
+ * @return Set.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("unchecked")
+ LinkedHashSet<?> readLinkedHashSet(long mapFieldOff) throws ClassNotFoundException, IOException {
+ try {
+ LinkedHashSet<Object> set = (LinkedHashSet<Object>)GridUnsafe.allocateInstance(LinkedHashSet.class);
+
+ handles.assign(set);
+
+ setObject(set, mapFieldOff, readLinkedHashMap(true));
+
+ return set;
+ }
+ catch (InstantiationException e) {
+ throw new IOException(e);
+ }
+ }
+
+ /**
+ * Reads {@link Date}.
+ *
+ * @return Date.
+ * @throws ClassNotFoundException If class not found.
+ * @throws IOException In case of error.
+ */
+ Date readDate() throws ClassNotFoundException, IOException {
+ Date date = new Date(readLong());
+
+ handles.assign(date);
+
+ return date;
+ }
+
+ /**
+ * Reads array of {@code byte}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ byte[] readByteArray() throws IOException {
+ byte[] arr = in.readByteArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code short}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ short[] readShortArray() throws IOException {
+ short[] arr = in.readShortArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code int}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ int[] readIntArray() throws IOException {
+ int[] arr = in.readIntArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code long}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ long[] readLongArray() throws IOException {
+ long[] arr = in.readLongArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code float}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ float[] readFloatArray() throws IOException {
+ float[] arr = in.readFloatArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code double}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ double[] readDoubleArray() throws IOException {
+ double[] arr = in.readDoubleArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code char}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ char[] readCharArray() throws IOException {
+ char[] arr = in.readCharArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads array of {@code boolean}s.
+ *
+ * @return Array.
+ * @throws IOException In case of error.
+ */
+ boolean[] readBooleanArray() throws IOException {
+ boolean[] arr = in.readBooleanArray();
+
+ handles.assign(arr);
+
+ return arr;
+ }
+
+ /**
+ * Reads {@link String}.
+ *
+ * @return String.
+ * @throws IOException In case of error.
+ */
+ public String readString() throws IOException {
+ String str = in.readUTF();
+
+ handles.assign(str);
+
+ return str;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readFully(byte[] b) throws IOException {
+ in.readFully(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readFully(byte[] b, int off, int len) throws IOException {
+ in.readFully(b, off, len);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int skipBytes(int n) throws IOException {
+ return in.skipBytes(n);
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean readBoolean() throws IOException {
+ return in.readBoolean();
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte readByte() throws IOException {
+ return in.readByte();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int readUnsignedByte() throws IOException {
+ return in.readUnsignedByte();
+ }
+
+ /** {@inheritDoc} */
+ @Override public short readShort() throws IOException {
+ return in.readShort();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int readUnsignedShort() throws IOException {
+ return in.readUnsignedShort();
+ }
+
+ /** {@inheritDoc} */
+ @Override public char readChar() throws IOException {
+ return in.readChar();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int readInt() throws IOException {
+ return in.readInt();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long readLong() throws IOException {
+ return in.readLong();
+ }
+
+ /** {@inheritDoc} */
+ @Override public float readFloat() throws IOException {
+ return in.readFloat();
+ }
+
+ /** {@inheritDoc} */
+ @Override public double readDouble() throws IOException {
+ return in.readDouble();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int read() throws IOException {
+ return in.read();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int read(byte[] b) throws IOException {
+ return in.read(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int read(byte[] b, int off, int len) throws IOException {
+ return in.read(b, off, len);
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
+ @Override public String readLine() throws IOException {
+ return in.readLine();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String readUTF() throws IOException {
+ return in.readUTF();
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object readUnshared() throws IOException, ClassNotFoundException {
+ return readObject();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void defaultReadObject() throws IOException, ClassNotFoundException {
+ if (curObj == null)
+ throw new NotActiveException("Not in readObject() call.");
+
+ readFields(curObj, curFields);
+ }
+
+ /** {@inheritDoc} */
+ @Override public ObjectInputStream.GetField readFields() throws IOException, ClassNotFoundException {
+ if (curObj == null)
+ throw new NotActiveException("Not in readObject() call.");
+
+ return new GetFieldImpl(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void registerValidation(ObjectInputValidation obj, int pri) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public int available() throws IOException {
+ return -1;
+ }
+
+ /**
+ * Returns objects that were added to handles table.
+ * Used ONLY for test purposes.
+ *
+ * @return Handled objects.
+ */
+ Object[] handledObjects() {
+ return handles.entries;
+ }
+
+ /**
+ * Lightweight identity hash table which maps objects to integer handles,
+ * assigned in ascending order.
+ */
+ private static class HandleTable {
+ /** Array mapping handle -> object/exception (depending on status). */
+ private Object[] entries;
+
+ /** Number of handles in table. */
+ private int size;
+
+ /**
+ * Creates handle table with the given initial capacity.
+ *
+ * @param initCap Initial capacity.
+ */
+ HandleTable(int initCap) {
+ entries = new Object[initCap];
+ }
+
+ /**
+ * Assigns next available handle to given object, and returns assigned
+ * handle.
+ *
+ * @param obj Object.
+ * @return Handle.
+ */
+ int assign(Object obj) {
+ if (size >= entries.length)
+ grow();
+
+ entries[size] = obj;
+
+ return size++;
+ }
+
+ /**
+ * Assigns new object to existing handle. Old object is forgotten.
+ *
+ * @param handle Handle.
+ * @param obj Object.
+ */
+ void set(int handle, Object obj) {
+ entries[handle] = obj;
+ }
+
+ /**
+ * Looks up and returns object associated with the given handle.
+ *
+ * @param handle Handle.
+ * @return Object.
+ */
+ Object lookup(int handle) {
+ return entries[handle];
+ }
+
+ /**
+ * Resets table to its initial state.
+ */
+ void clear() {
+ Arrays.fill(entries, 0, size, null);
+
+ size = 0;
+ }
+
+ /**
+ * Expands capacity of internal arrays.
+ */
+ private void grow() {
+ int newCap = (entries.length << 1) + 1;
+
+ Object[] newEntries = new Object[newCap];
+
+ System.arraycopy(entries, 0, newEntries, 0, size);
+
+ entries = newEntries;
+ }
+ }
+
+ /**
+ * {@link GetField} implementation.
+ */
+ private static class GetFieldImpl extends GetField {
+ /** Field info. */
+ private final OptimizedClassDescriptor.ClassFields fieldInfo;
+
+ /** Values. */
+ private final Object[] objs;
+
+ /**
+ * @param in Stream.
+ * @throws IOException In case of error.
+ * @throws ClassNotFoundException If class not found.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ private GetFieldImpl(OptimizedObjectInputStream in) throws IOException, ClassNotFoundException {
+ fieldInfo = in.curFields;
+
+ objs = new Object[fieldInfo.size()];
+
+ for (int i = 0; i < fieldInfo.size(); i++) {
+ OptimizedClassDescriptor.FieldInfo t = fieldInfo.get(i);
+
+ Object obj = null;
+
+ switch (t.type()) {
+ case BYTE:
+ obj = in.readByte();
+
+ break;
+
+ case SHORT:
+ obj = in.readShort();
+
+ break;
+
+ case INT:
+ obj = in.readInt();
+
+ break;
+
+ case LONG:
+ obj = in.readLong();
+
+ break;
+
+ case FLOAT:
+ obj = in.readFloat();
+
+ break;
+
+ case DOUBLE:
+ obj = in.readDouble();
+
+ break;
+
+ case CHAR:
+ obj = in.readChar();
+
+ break;
+
+ case BOOLEAN:
+ obj = in.readBoolean();
+
+ break;
+
+ case OTHER:
+ obj = in.readObject();
+ }
+
+ objs[i] = obj;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public ObjectStreamClass getObjectStreamClass() {
+ throw new UnsupportedOperationException();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean defaulted(String name) throws IOException {
+ return objs[fieldInfo.getIndex(name)] == null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean get(String name, boolean dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte get(String name, byte dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public char get(String name, char dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public short get(String name, short dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int get(String name, int dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public long get(String name, long dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public float get(String name, float dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public double get(String name, double dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object get(String name, Object dflt) throws IOException {
+ return value(name, dflt);
+ }
+
+ /**
+ * @param name Field name.
+ * @param dflt Default value.
+ * @return Value.
+ */
+ @SuppressWarnings("unchecked")
+ private <T> T value(String name, T dflt) {
+ return objs[fieldInfo.getIndex(name)] != null ? (T)objs[fieldInfo.getIndex(name)] : dflt;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
new file mode 100644
index 0000000..bdb1b2f
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -0,0 +1,875 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.NotActiveException;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.GridHandleTable;
+import org.apache.ignite.internal.util.io.GridDataOutput;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgniteBiTuple;
+import org.apache.ignite.marshaller.MarshallerContext;
+
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.HANDLE;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.JDK;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.JDK_MARSH;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.NULL;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getBoolean;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getByte;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getChar;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getDouble;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getFloat;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getInt;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getLong;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getObject;
+import static org.apache.ignite.internal.marshaller.optimized.OptimizedMarshallerUtils.getShort;
+
+/**
+ * Optimized object output stream.
+ */
+class OptimizedObjectOutputStream extends ObjectOutputStream {
+ /** */
+ private final GridHandleTable handles = new GridHandleTable(10, 3.00f);
+
+ /** */
+ private final GridDataOutput out;
+
+ /** */
+ private MarshallerContext ctx;
+
+ /** */
+ private OptimizedMarshallerIdMapper mapper;
+
+ /** */
+ private boolean requireSer;
+
+ /** */
+ private Object curObj;
+
+ /** */
+ private OptimizedClassDescriptor.ClassFields curFields;
+
+ /** */
+ private PutFieldImpl curPut;
+
+ /** */
+ private ConcurrentMap<Class, OptimizedClassDescriptor> clsMap;
+
+ /**
+ * @param out Output.
+ * @throws IOException In case of error.
+ */
+ OptimizedObjectOutputStream(GridDataOutput out) throws IOException {
+ this.out = out;
+ }
+
+ /**
+ * @param clsMap Class descriptors by class map.
+ * @param ctx Context.
+ * @param mapper ID mapper.
+ * @param requireSer Require {@link Serializable} flag.
+ */
+ void context(ConcurrentMap<Class, OptimizedClassDescriptor> clsMap,
+ MarshallerContext ctx,
+ OptimizedMarshallerIdMapper mapper,
+ boolean requireSer) {
+ this.clsMap = clsMap;
+ this.ctx = ctx;
+ this.mapper = mapper;
+ this.requireSer = requireSer;
+ }
+
+ /**
+ * @return Require {@link Serializable} flag.
+ */
+ boolean requireSerializable() {
+ return requireSer;
+ }
+
+ /**
+ * @return Output.
+ */
+ public GridDataOutput out() {
+ return out;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void close() throws IOException {
+ reset();
+
+ ctx = null;
+ clsMap = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(byte[] b) throws IOException {
+ out.write(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(byte[] b, int off, int len) throws IOException {
+ out.write(b, off, len);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void writeObjectOverride(Object obj) throws IOException {
+ writeObject0(obj);
+ }
+
+ /**
+ * Writes object to stream.
+ *
+ * @param obj Object.
+ * @throws IOException In case of error.
+ */
+ private void writeObject0(Object obj) throws IOException {
+ curObj = null;
+ curFields = null;
+ curPut = null;
+
+ if (obj == null)
+ writeByte(NULL);
+ else {
+ if (obj instanceof Throwable && !(obj instanceof Externalizable)) {
+ writeByte(JDK);
+
+ try {
+ JDK_MARSH.marshal(obj, this);
+ }
+ catch (IgniteCheckedException e) {
+ IOException ioEx = e.getCause(IOException.class);
+
+ if (ioEx != null)
+ throw ioEx;
+ else
+ throw new IOException("Failed to serialize object with JDK marshaller: " + obj, e);
+ }
+ }
+ else {
+ OptimizedClassDescriptor desc = classDescriptor(
+ clsMap,
+ obj instanceof Object[] ? Object[].class : obj.getClass(),
+ ctx,
+ mapper);
+
+ if (desc.excluded()) {
+ writeByte(NULL);
+
+ return;
+ }
+
+ Object obj0 = desc.replace(obj);
+
+ if (obj0 == null) {
+ writeByte(NULL);
+
+ return;
+ }
+
+ int handle = -1;
+
+ if (!desc.isPrimitive() && !desc.isEnum() && !desc.isClass() && !desc.isProxy())
+ handle = handles.lookup(obj);
+
+ if (obj0 != obj) {
+ obj = obj0;
+
+ desc = classDescriptor(clsMap,
+ obj instanceof Object[] ? Object[].class : obj.getClass(),
+ ctx,
+ mapper);
+ }
+
+ if (handle >= 0) {
+ writeByte(HANDLE);
+ writeInt(handle);
+ }
+ else
+ desc.write(this, obj);
+ }
+ }
+ }
+
+ /**
+ * Writes array to this stream.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ void writeArray(Object[] arr) throws IOException {
+ int len = arr.length;
+
+ writeInt(len);
+
+ for (int i = 0; i < len; i++) {
+ Object obj = arr[i];
+
+ writeObject0(obj);
+ }
+ }
+
+ /**
+ * Writes {@link UUID} to this stream.
+ *
+ * @param uuid UUID.
+ * @throws IOException In case of error.
+ */
+ void writeUuid(UUID uuid) throws IOException {
+ writeLong(uuid.getMostSignificantBits());
+ writeLong(uuid.getLeastSignificantBits());
+ }
+
+ /**
+ * Writes {@link Properties} to this stream.
+ *
+ * @param props Properties.
+ * @param dfltsFieldOff Defaults field offset.
+ * @throws IOException In case of error.
+ */
+ void writeProperties(Properties props, long dfltsFieldOff) throws IOException {
+ Properties dflts = (Properties)getObject(props, dfltsFieldOff);
+
+ if (dflts == null)
+ writeBoolean(true);
+ else {
+ writeBoolean(false);
+
+ writeObject0(dflts);
+ }
+
+ Set<String> names = props.stringPropertyNames();
+
+ writeInt(names.size());
+
+ for (String name : names) {
+ writeUTF(name);
+ writeUTF(props.getProperty(name));
+ }
+ }
+
+ /**
+ * Writes externalizable object.
+ *
+ * @param obj Object.
+ * @throws IOException In case of error.
+ */
+ void writeExternalizable(Object obj) throws IOException {
+ Externalizable extObj = (Externalizable)obj;
+
+ extObj.writeExternal(this);
+ }
+
+ /**
+ * Writes serializable object.
+ *
+ * @param obj Object.
+ * @param mtds {@code writeObject} methods.
+ * @param fields class fields details.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ void writeSerializable(Object obj, List<Method> mtds, OptimizedClassDescriptor.Fields fields)
+ throws IOException {
+ for (int i = 0; i < mtds.size(); i++) {
+ Method mtd = mtds.get(i);
+
+ if (mtd != null) {
+ curObj = obj;
+ curFields = fields.fields(i);
+
+ try {
+ mtd.invoke(obj, this);
+ }
+ catch (IllegalAccessException e) {
+ throw new IOException(e);
+ }
+ catch (InvocationTargetException e) {
+ throw new IOException(e.getCause());
+ }
+ }
+ else
+ writeFields(obj, fields.fields(i));
+ }
+ }
+
+ /**
+ * Writes {@link ArrayList}.
+ *
+ * @param list List.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings({"ForLoopReplaceableByForEach", "TypeMayBeWeakened"})
+ void writeArrayList(ArrayList<?> list) throws IOException {
+ int size = list.size();
+
+ writeInt(size);
+
+ for (int i = 0; i < size; i++)
+ writeObject0(list.get(i));
+ }
+
+ /**
+ * Writes {@link HashMap}.
+ *
+ * @param map Map.
+ * @param loadFactorFieldOff Load factor field offset.
+ * @param set Whether writing underlying map from {@link HashSet}.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("TypeMayBeWeakened")
+ void writeHashMap(HashMap<?, ?> map, long loadFactorFieldOff, boolean set) throws IOException {
+ int size = map.size();
+
+ writeInt(size);
+ writeFloat(getFloat(map, loadFactorFieldOff));
+
+ for (Map.Entry<?, ?> e : map.entrySet()) {
+ writeObject0(e.getKey());
+
+ if (!set)
+ writeObject0(e.getValue());
+ }
+ }
+
+ /**
+ * Writes {@link HashSet}.
+ *
+ * @param set Set.
+ * @param mapFieldOff Map field offset.
+ * @param loadFactorFieldOff Load factor field offset.
+ * @throws IOException In case of error.
+ */
+ void writeHashSet(HashSet<?> set, long mapFieldOff, long loadFactorFieldOff) throws IOException {
+ writeHashMap((HashMap<?, ?>)getObject(set, mapFieldOff), loadFactorFieldOff, true);
+ }
+
+ /**
+ * Writes {@link LinkedList}.
+ *
+ * @param list List.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("TypeMayBeWeakened")
+ void writeLinkedList(LinkedList<?> list) throws IOException {
+ int size = list.size();
+
+ writeInt(size);
+
+ for (Object obj : list)
+ writeObject0(obj);
+ }
+
+ /**
+ * Writes {@link LinkedHashMap}.
+ *
+ * @param map Map.
+ * @param loadFactorFieldOff Load factor field offset.
+ * @param accessOrderFieldOff access order field offset.
+ * @param set Whether writing underlying map from {@link LinkedHashSet}.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("TypeMayBeWeakened")
+ void writeLinkedHashMap(LinkedHashMap<?, ?> map, long loadFactorFieldOff, long accessOrderFieldOff, boolean set)
+ throws IOException {
+ int size = map.size();
+
+ writeInt(size);
+ writeFloat(getFloat(map, loadFactorFieldOff));
+
+ if (accessOrderFieldOff >= 0)
+ writeBoolean(getBoolean(map, accessOrderFieldOff));
+ else
+ writeBoolean(false);
+
+ for (Map.Entry<?, ?> e : map.entrySet()) {
+ writeObject0(e.getKey());
+
+ if (!set)
+ writeObject0(e.getValue());
+ }
+ }
+
+ /**
+ * Writes {@link LinkedHashSet}.
+ *
+ * @param set Set.
+ * @param mapFieldOff Map field offset.
+ * @param loadFactorFieldOff Load factor field offset.
+ * @throws IOException In case of error.
+ */
+ void writeLinkedHashSet(LinkedHashSet<?> set, long mapFieldOff, long loadFactorFieldOff) throws IOException {
+ LinkedHashMap<?, ?> map = (LinkedHashMap<?, ?>)getObject(set, mapFieldOff);
+
+ writeLinkedHashMap(map, loadFactorFieldOff, -1, true);
+ }
+
+ /**
+ * Writes {@link Date}.
+ *
+ * @param date Date.
+ * @throws IOException In case of error.
+ */
+ void writeDate(Date date) throws IOException {
+ writeLong(date.getTime());
+ }
+
+ /**
+ * Writes all non-static and non-transient field values to this stream.
+ *
+ * @param obj Object.
+ * @param fields Fields.
+ * @throws IOException In case of error.
+ */
+ @SuppressWarnings("ForLoopReplaceableByForEach")
+ private void writeFields(Object obj, OptimizedClassDescriptor.ClassFields fields) throws IOException {
+ for (int i = 0; i < fields.size(); i++) {
+ OptimizedClassDescriptor.FieldInfo t = fields.get(i);
+
+ switch (t.type()) {
+ case BYTE:
+ if (t.field() != null)
+ writeByte(getByte(obj, t.offset()));
+
+ break;
+
+ case SHORT:
+ if (t.field() != null)
+ writeShort(getShort(obj, t.offset()));
+
+ break;
+
+ case INT:
+ if (t.field() != null)
+ writeInt(getInt(obj, t.offset()));
+
+ break;
+
+ case LONG:
+ if (t.field() != null)
+ writeLong(getLong(obj, t.offset()));
+
+ break;
+
+ case FLOAT:
+ if (t.field() != null)
+ writeFloat(getFloat(obj, t.offset()));
+
+ break;
+
+ case DOUBLE:
+ if (t.field() != null)
+ writeDouble(getDouble(obj, t.offset()));
+
+ break;
+
+ case CHAR:
+ if (t.field() != null)
+ writeChar(getChar(obj, t.offset()));
+
+ break;
+
+ case BOOLEAN:
+ if (t.field() != null)
+ writeBoolean(getBoolean(obj, t.offset()));
+
+ break;
+
+ case OTHER:
+ if (t.field() != null)
+ writeObject0(getObject(obj, t.offset()));
+ }
+ }
+ }
+
+ /**
+ * Writes array of {@code byte}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeByteArray(byte[] arr) throws IOException {
+ out.writeByteArray(arr);
+ }
+
+ /**
+ * Writes array of {@code short}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeShortArray(short[] arr) throws IOException {
+ out.writeShortArray(arr);
+ }
+
+ /**
+ * Writes array of {@code int}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeIntArray(int[] arr) throws IOException {
+ out.writeIntArray(arr);
+ }
+
+ /**
+ * Writes array of {@code long}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeLongArray(long[] arr) throws IOException {
+ out.writeLongArray(arr);
+ }
+
+ /**
+ * Writes array of {@code float}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeFloatArray(float[] arr) throws IOException {
+ out.writeFloatArray(arr);
+ }
+
+ /**
+ * Writes array of {@code double}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeDoubleArray(double[] arr) throws IOException {
+ out.writeDoubleArray(arr);
+ }
+
+ /**
+ * Writes array of {@code char}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeCharArray(char[] arr) throws IOException {
+ out.writeCharArray(arr);
+ }
+
+ /**
+ * Writes array of {@code boolean}s.
+ *
+ * @param arr Array.
+ * @throws IOException In case of error.
+ */
+ void writeBooleanArray(boolean[] arr) throws IOException {
+ out.writeBooleanArray(arr);
+ }
+
+ /**
+ * Writes {@link String}.
+ *
+ * @param str String.
+ * @throws IOException In case of error.
+ */
+ void writeString(String str) throws IOException {
+ out.writeUTF(str);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeBoolean(boolean v) throws IOException {
+ out.writeBoolean(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeByte(int v) throws IOException {
+ out.writeByte(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeShort(int v) throws IOException {
+ out.writeShort(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeChar(int v) throws IOException {
+ out.writeChar(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeInt(int v) throws IOException {
+ out.writeInt(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeLong(long v) throws IOException {
+ out.writeLong(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeFloat(float v) throws IOException {
+ out.writeFloat(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeDouble(double v) throws IOException {
+ out.writeDouble(v);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(int b) throws IOException {
+ writeByte(b);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeBytes(String s) throws IOException {
+ out.writeBytes(s);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeChars(String s) throws IOException {
+ out.writeChars(s);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeUTF(String s) throws IOException {
+ out.writeUTF(s);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void useProtocolVersion(int ver) throws IOException {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeUnshared(Object obj) throws IOException {
+ writeObject0(obj);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void defaultWriteObject() throws IOException {
+ if (curObj == null)
+ throw new NotActiveException("Not in writeObject() call.");
+
+ writeFields(curObj, curFields);
+ }
+
+ /** {@inheritDoc} */
+ @Override public ObjectOutputStream.PutField putFields() throws IOException {
+ if (curObj == null)
+ throw new NotActiveException("Not in writeObject() call or fields already written.");
+
+ if (curPut == null)
+ curPut = new PutFieldImpl(this);
+
+ return curPut;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeFields() throws IOException {
+ if (curObj == null)
+ throw new NotActiveException("Not in writeObject() call.");
+
+ if (curPut == null)
+ throw new NotActiveException("putFields() was not called.");
+
+ for (IgniteBiTuple<OptimizedFieldType, Object> t : curPut.objs) {
+ switch (t.get1()) {
+ case BYTE:
+ writeByte((Byte)t.get2());
+
+ break;
+
+ case SHORT:
+ writeShort((Short)t.get2());
+
+ break;
+
+ case INT:
+ writeInt((Integer)t.get2());
+
+ break;
+
+ case LONG:
+ writeLong((Long)t.get2());
+
+ break;
+
+ case FLOAT:
+ writeFloat((Float)t.get2());
+
+ break;
+
+ case DOUBLE:
+ writeDouble((Double)t.get2());
+
+ break;
+
+ case CHAR:
+ writeChar((Character)t.get2());
+
+ break;
+
+ case BOOLEAN:
+ writeBoolean((Boolean)t.get2());
+
+ break;
+
+ case OTHER:
+ writeObject0(t.get2());
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void reset() throws IOException {
+ out.reset();
+ handles.clear();
+
+ curObj = null;
+ curFields = null;
+ curPut = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void flush() throws IOException {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void drain() throws IOException {
+ // No-op.
+ }
+
+ /**
+ * Returns objects that were added to handles table.
+ * Used ONLY for test purposes.
+ *
+ * @return Handled objects.
+ */
+ Object[] handledObjects() {
+ return handles.objects();
+ }
+
+ /**
+ * {@link PutField} implementation.
+ */
+ private static class PutFieldImpl extends PutField {
+ /** Stream. */
+ private final OptimizedObjectOutputStream out;
+
+ /** Fields info. */
+ private final OptimizedClassDescriptor.ClassFields curFields;
+ /** Values. */
+ private final IgniteBiTuple<OptimizedFieldType, Object>[] objs;
+
+ /**
+ * @param out Output stream.
+ */
+ @SuppressWarnings("unchecked")
+ private PutFieldImpl(OptimizedObjectOutputStream out) {
+ this.out = out;
+
+ curFields = out.curFields;
+
+ objs = new IgniteBiTuple[curFields.size()];
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, boolean val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, byte val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, char val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, short val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, int val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, long val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, float val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, double val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void put(String name, Object val) {
+ value(name, val);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(ObjectOutput out) throws IOException {
+ if (out != this.out)
+ throw new IllegalArgumentException("Wrong stream.");
+
+ this.out.writeFields();
+ }
+
+ /**
+ * @param name Field name.
+ * @param val Value.
+ */
+ private void value(String name, Object val) {
+ int i = curFields.getIndex(name);
+
+ OptimizedClassDescriptor.FieldInfo info = curFields.get(i);
+
+ objs[i] = F.t(info.type(), val);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
new file mode 100644
index 0000000..cc31a9f
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedObjectStreamRegistry.java
@@ -0,0 +1,244 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.marshaller.optimized;
+
+import java.io.IOException;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.IgniteInterruptedCheckedException;
+import org.apache.ignite.internal.util.io.GridUnsafeDataInput;
+import org.apache.ignite.internal.util.io.GridUnsafeDataOutput;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+/**
+ * Storage for object streams.
+ */
+class OptimizedObjectStreamRegistry {
+ /** Holders. */
+ private static final ThreadLocal<StreamHolder> holders = new ThreadLocal<>();
+
+ /** Output streams pool. */
+ private static BlockingQueue<OptimizedObjectOutputStream> outPool;
+
+ /** Input streams pool. */
+ private static BlockingQueue<OptimizedObjectInputStream> inPool;
+
+ /**
+ * Ensures singleton.
+ */
+ private OptimizedObjectStreamRegistry() {
+ // No-op.
+ }
+
+ /**
+ * Sets streams pool size.
+ *
+ * @param size Streams pool size.
+ */
+ static void poolSize(int size) {
+ if (size > 0) {
+ outPool = new LinkedBlockingQueue<>(size);
+ inPool = new LinkedBlockingQueue<>(size);
+
+ for (int i = 0; i < size; i++) {
+ outPool.offer(createOut());
+ inPool.offer(createIn());
+ }
+ }
+ else {
+ outPool = null;
+ inPool = null;
+ }
+ }
+
+ /**
+ * Gets output stream.
+ *
+ * @return Object output stream.
+ * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
+ */
+ static OptimizedObjectOutputStream out() throws IgniteInterruptedCheckedException {
+ if (outPool != null) {
+ try {
+ return outPool.take();
+ }
+ catch (InterruptedException e) {
+ throw new IgniteInterruptedCheckedException(
+ "Failed to take output object stream from pool (thread interrupted).", e);
+ }
+ }
+ else
+ return holder().acquireOut();
+ }
+
+ /**
+ * Gets input stream.
+ *
+ * @return Object input stream.
+ * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
+ */
+ static OptimizedObjectInputStream in() throws IgniteInterruptedCheckedException {
+ if (inPool != null) {
+ try {
+ return inPool.take();
+ }
+ catch (InterruptedException e) {
+ throw new IgniteInterruptedCheckedException(
+ "Failed to take input object stream from pool (thread interrupted).", e);
+ }
+ }
+ else
+ return holder().acquireIn();
+ }
+
+ /**
+ * Closes and releases output stream.
+ *
+ * @param out Object output stream.
+ */
+ static void closeOut(OptimizedObjectOutputStream out) {
+ U.close(out, null);
+
+ if (outPool != null) {
+ boolean b = outPool.offer(out);
+
+ assert b;
+ }
+ else {
+ StreamHolder holder = holders.get();
+
+ if (holder != null)
+ holder.releaseOut();
+ }
+ }
+
+ /**
+ * Closes and releases input stream.
+ *
+ * @param in Object input stream.
+ */
+ @SuppressWarnings("TypeMayBeWeakened")
+ static void closeIn(OptimizedObjectInputStream in) {
+ U.close(in, null);
+
+ if (inPool != null) {
+ boolean b = inPool.offer(in);
+
+ assert b;
+ }
+ else {
+ StreamHolder holder = holders.get();
+
+ if (holder != null)
+ holder.releaseIn();
+ }
+ }
+
+ /**
+ * Gets holder from pool or thread local.
+ *
+ * @return Stream holder.
+ * @throws org.apache.ignite.internal.IgniteInterruptedCheckedException If thread is interrupted while trying to take holder from pool.
+ */
+ private static StreamHolder holder() throws IgniteInterruptedCheckedException {
+ StreamHolder holder = holders.get();
+
+ if (holder == null)
+ holders.set(holder = new StreamHolder());
+
+ return holder;
+ }
+
+ /**
+ * Creates output stream.
+ *
+ * @return Object output stream.
+ */
+ private static OptimizedObjectOutputStream createOut() {
+ try {
+ return new OptimizedObjectOutputStream(new GridUnsafeDataOutput(4 * 1024));
+ }
+ catch (IOException e) {
+ throw new IgniteException("Failed to create object output stream.", e);
+ }
+ }
+
+ /**
+ * Creates input stream.
+ *
+ * @return Object input stream.
+ */
+ private static OptimizedObjectInputStream createIn() {
+ try {
+ return new OptimizedObjectInputStream(new GridUnsafeDataInput());
+ }
+ catch (IOException e) {
+ throw new IgniteException("Failed to create object input stream.", e);
+ }
+ }
+
+ /**
+ * Streams holder.
+ */
+ private static class StreamHolder {
+ /** Output stream. */
+ private final OptimizedObjectOutputStream out = createOut();
+
+ /** Input stream. */
+ private final OptimizedObjectInputStream in = createIn();
+
+ /** Output streams counter. */
+ private int outAcquireCnt;
+
+ /** Input streams counter. */
+ private int inAcquireCnt;
+
+ /**
+ * Gets output stream.
+ *
+ * @return Object output stream.
+ */
+ OptimizedObjectOutputStream acquireOut() {
+ return outAcquireCnt++ > 0 ? createOut() : out;
+ }
+
+ /**
+ * Gets input stream.
+ *
+ * @return Object input stream.
+ */
+ OptimizedObjectInputStream acquireIn() {
+ return inAcquireCnt++ > 0 ? createIn() : in;
+ }
+
+ /**
+ * Releases output stream.
+ */
+ void releaseOut() {
+ outAcquireCnt--;
+ }
+
+ /**
+ * Releases input stream.
+ */
+ void releaseIn() {
+ inAcquireCnt--;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/package-info.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
new file mode 100644
index 0000000..7f58f9c
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * <!-- Package description. -->
+ * Contains Optimized marshaller.
+ */
+package org.apache.ignite.internal.marshaller.optimized;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/faa8681a/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
index e99ca35..3ab27ac 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/Marshaller.java
@@ -19,7 +19,6 @@ package org.apache.ignite.marshaller;
import java.io.InputStream;
import java.io.OutputStream;
-
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCheckedException;
import org.jetbrains.annotations.Nullable;
@@ -33,7 +32,6 @@ import org.jetbrains.annotations.Nullable;
* <ul>
* <li>Default binary marshaller. Will be used when no other marshaller is explicitly set to the
* configuration. For more information, see {@link IgniteBinary}.</li>
- * <li>{@link org.apache.ignite.marshaller.optimized.OptimizedMarshaller}</li>
* <li>{@link org.apache.ignite.marshaller.jdk.JdkMarshaller}</li>
* </ul>
* <p>