IGNITE-160 Fixing Spi tests

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/edbfd9ad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/edbfd9ad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/edbfd9ad

Branch: refs/heads/ignite-160
Commit: edbfd9adb8fa1a2ba444651e93c63d10c7c8ea35
Parents: 5e56e32
Author: nikolay_tikhonov <ntikho...@gridgain.com>
Authored: Wed Feb 4 18:42:34 2015 +0300
Committer: nikolay_tikhonov <ntikho...@gridgain.com>
Committed: Wed Feb 4 18:42:44 2015 +0300

----------------------------------------------------------------------
 .../spi/checkpoint/s3/S3CheckpointSpi.java      |   2 +-
 .../s3/S3CheckpointSpiConfiguration.java        |   3 +-
 .../s3/S3SessionCheckpointSelfTest.java         |   6 +-
 .../apache/ignite/IgniteBasicWarmupClosure.java |  10 +-
 .../configuration/IgniteConfiguration.java      | 278 ++++++---
 .../org/apache/ignite/internal/IgnitionEx.java  | 126 +++-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |   2 +
 .../ignite/spi/IgniteSpiConfiguration.java      |   4 +-
 .../org/apache/ignite/spi/IgniteSpiFactory.java |  28 -
 .../AuthenticationSpiConfiguration.java         |  27 +
 .../noop/NoopAuthenticationSpi.java             |   7 +
 .../NoopAuthenticationSpiConfiguration.java     |   3 +-
 .../checkpoint/CheckpointSpiConfiguration.java  |  26 +
 .../cache/CacheCheckpointSpiConfiguration.java  |   3 +-
 .../jdbc/JdbcCheckpointSpiConfiguration.java    |   2 +-
 .../spi/checkpoint/noop/NoopCheckpointSpi.java  |  13 +-
 .../noop/NoopCheckpointSpiConfiguration.java    |   3 +-
 .../SharedFsCheckpointSpiConfiguration.java     |   3 +-
 .../collision/CollisionSpiConfiguration.java    |  26 +
 .../FifoQueueCollisionSpiConfiguration.java     |   3 +-
 .../JobStealingCollisionSpiConfiguration.java   |   3 +-
 .../spi/collision/noop/NoopCollisionSpi.java    |   7 +
 .../noop/NoopCollisionSpiConfiguration.java     |   3 +-
 .../PriorityQueueCollisionSpiConfiguration.java |   3 +-
 .../CommunicationSpiConfiguration.java          |  32 ++
 .../communication/tcp/TcpCommunicationSpi.java  |  40 ++
 .../tcp/TcpCommunicationSpiConfiguration.java   | 569 +++++++++++++++++++
 .../deployment/DeploymentSpiConfiguration.java  |  26 +
 .../deployment/local/LocalDeploymentSpi.java    |  11 +-
 .../local/LocalDeploymentSpiConfiguration.java  |   2 +-
 .../discovery/DiscoverySpiConfiguration.java    |  26 +
 .../discovery/tcp/TcpClientDiscoverySpi.java    |   6 +
 .../tcp/TcpClientDiscoverySpiConfiguration.java |  99 ++++
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  20 +
 .../discovery/tcp/TcpDiscoverySpiAdapter.java   |  33 ++
 .../TcpDiscoverySpiAdapterConfiguration.java    | 250 ++++++++
 .../tcp/TcpDiscoverySpiConfiguration.java       | 298 ++++++++++
 .../ipfinder/TcpDiscoveryIpFinderAdapter.java   |   6 +
 ...cpDiscoveryIpFinderAdapterConfiguration.java |  52 ++
 .../TcpDiscoveryIpFinderConfiguration.java      |  28 +
 .../ipfinder/jdbc/TcpDiscoveryJdbcIpFinder.java |   9 +-
 .../TcpDiscoveryJdbcIpFinderConfiguration.java  | 106 ++++
 .../TcpDiscoveryMulticastIpFinder.java          |  17 +-
 ...DiscoveryMulticastIpFinderConfiguration.java | 178 ++++++
 .../sharedfs/TcpDiscoverySharedFsIpFinder.java  |  10 +-
 ...pDiscoverySharedFsIpFinderConfiguration.java |  91 +++
 .../tcp/ipfinder/vm/TcpDiscoveryVmIpFinder.java |  14 +-
 .../vm/TcpDiscoveryVmIpFinderConfiguration.java |  93 +++
 .../EventStorageSpiConfiguration.java           |  26 +
 .../memory/MemoryEventStorageSpi.java           |   9 +-
 .../MemoryEventStorageSpiConfiguration.java     |   3 +-
 .../spi/failover/FailoverSpiConfiguration.java  |  26 +
 .../spi/failover/always/AlwaysFailoverSpi.java  |   8 +
 .../always/AlwaysFailoverSpiConfiguration.java  |   5 +-
 .../JobStealingFailoverSpiConfiguration.java    |   3 +-
 .../never/NeverFailoverSpiConfiguration.java    |   3 +-
 .../indexing/GridIndexingSpiConfiguration.java  |  26 +
 .../spi/indexing/GridNoopIndexingSpi.java       |   9 +-
 .../GridNoopIndexingSpiConfiguration.java       |   2 +-
 .../LoadBalancingSpiConfiguration.java          |  26 +
 .../AdaptiveLoadBalancingSpiConfiguration.java  |   4 +-
 .../roundrobin/RoundRobinLoadBalancingSpi.java  |   9 +-
 ...RoundRobinLoadBalancingSpiConfiguration.java |   5 +-
 .../WeightedRandomLoadBalancingSpi.java         |   2 +-
 ...htedRandomLoadBalancingSpiConfiguration.java |   6 +-
 .../SecureSessionSpiConfiguration.java          |  26 +
 .../noop/NoopSecureSessionSpi.java              |   9 +-
 .../noop/NoopSecureSessionSpiConfiguration.java |   3 +-
 .../swapspace/SwapSpaceSpiConfiguration.java    |  26 +
 .../spi/swapspace/file/FileSwapSpaceSpi.java    |   7 +
 .../file/FileSwapSpaceSpiConfiguration.java     |   2 +-
 .../spi/swapspace/noop/NoopSwapSpaceSpi.java    |   4 +
 .../noop/NoopSwapSpaceSpiConfiguration.java     |   3 +-
 .../ignite/startup/BasicWarmupClosure.java      |  10 +-
 .../GridGgfsFragmentizerAbstractSelfTest.java   |   6 +-
 .../ignite/internal/GridFailoverSelfTest.java   |   2 +-
 .../GridJobMasterLeaveAwareSelfTest.java        |  20 +-
 ...ectionLocalJobMultipleArgumentsSelfTest.java |   6 +-
 .../internal/GridReleaseTypeSelfTest.java       | 102 +++-
 .../internal/GridStopWithWaitSelfTest.java      |   2 +-
 .../GridCheckpointManagerAbstractSelfTest.java  |  14 +-
 .../GridCommunicationSendMessageSelfTest.java   |  10 +-
 .../GridDeploymentMessageCountSelfTest.java     |  78 ++-
 .../discovery/GridDiscoveryManagerSelfTest.java |   6 +-
 .../swapspace/GridSwapSpaceManagerSelfTest.java |   2 +-
 ...ridCacheAbstractByteArrayValuesSelfTest.java |   6 +-
 .../cache/GridCacheAbstractFullApiSelfTest.java |   2 +-
 .../cache/GridCacheAbstractSelfTest.java        |   6 +-
 .../cache/GridCacheBasicApiAbstractTest.java    |   6 +-
 ...acheBasicStoreMultithreadedAbstractTest.java |   6 +-
 .../GridCacheDaemonNodeAbstractSelfTest.java    |   6 +-
 .../cache/GridCacheDeploymentSelfTest.java      |   6 +-
 .../GridCacheEvictionEventAbstractTest.java     |   6 +-
 .../GridCacheGroupLockAbstractSelfTest.java     |  10 +-
 .../GridCacheGroupLockFailoverSelfTest.java     |  71 ++-
 .../cache/GridCacheLifecycleAwareSelfTest.java  |   2 +-
 .../cache/GridCacheLuceneQueryIndexTest.java    |   6 +-
 .../cache/GridCacheMvccManagerSelfTest.java     |   6 +-
 .../GridCacheOrderedPreloadingSelfTest.java     |   6 +-
 .../processors/cache/GridCacheStopSelfTest.java |   6 +-
 .../cache/IgniteCacheAbstractTest.java          |   6 +-
 .../processors/cache/IgniteTxAbstractTest.java  |   6 +-
 .../IgniteTxExceptionAbstractSelfTest.java      |  50 +-
 .../cache/IgniteTxMultiNodeAbstractTest.java    |   6 +-
 .../GridCacheQueueApiSelfAbstractTest.java      |   6 +-
 ...GridCacheQueueMultiNodeAbstractSelfTest.java |   6 +-
 ...dCacheQueueMultiNodeConsistencySelfTest.java |   6 +-
 ...CacheQueueRotativeMultiNodeAbstractTest.java |   6 +-
 .../GridCacheSequenceApiSelfAbstractTest.java   |   6 +-
 ...dCacheSequenceMultiNodeAbstractSelfTest.java |   6 +-
 ...GridCachePartitionedNodeRestartSelfTest.java |   6 +-
 ...idCachePartitionedNodeRestartTxSelfTest.java |   6 +-
 ...PartitionedQueueCreateMultiNodeSelfTest.java |   6 +-
 ...tractDistributedByteArrayValuesSelfTest.java |   2 +-
 .../GridCacheAbstractJobExecutionTest.java      |   6 +-
 .../GridCacheAbstractNodeRestartSelfTest.java   |   6 +-
 .../GridCacheNodeFailureAbstractTest.java       |   6 +-
 ...chePartitionedReloadAllAbstractSelfTest.java |   6 +-
 .../GridCachePreloadLifecycleAbstractTest.java  |   6 +-
 ...GridCachePreloadRestartAbstractSelfTest.java |   6 +-
 ...tPartitionedOnlyByteArrayValuesSelfTest.java |   2 +-
 ...heAbstractTransformWriteThroughSelfTest.java |   6 +-
 ...eColocatedOptimisticTransactionSelfTest.java |   8 +-
 ...ridCacheDhtPreloadMultiThreadedSelfTest.java |   4 +-
 .../dht/GridCacheDhtPreloadSelfTest.java        |   6 +-
 ...unctionExcludeNeighborsAbstractSelfTest.java |  73 ++-
 .../near/GridCacheNearMultiGetSelfTest.java     |   6 +-
 .../near/GridCacheNearMultiNodeSelfTest.java    |   6 +-
 .../GridCacheNearPartitionedClearSelfTest.java  |   6 +-
 ...AffinityExcludeNeighborsPerformanceTest.java |   6 +-
 ...rtitionedAffinityHashIdResolverSelfTest.java |   6 +-
 .../GridCachePartitionedAffinitySelfTest.java   |   6 +-
 ...achePartitionedMultiNodeCounterSelfTest.java |   6 +-
 ...ePartitionedMultiThreadedPutGetSelfTest.java |   6 +-
 ...CacheReplicatedTxSingleThreadedSelfTest.java |   6 +-
 .../GridCacheReplicatedTxTimeoutSelfTest.java   |   6 +-
 ...idCacheReplicatedUnswapAdvancedSelfTest.java |   8 +-
 .../GridCacheSyncReplicatedPreloadSelfTest.java |   6 +-
 .../GridCacheDistributedEvictionsSelfTest.java  |   6 +-
 .../GridCacheLruNearEvictionPolicySelfTest.java |   6 +-
 ...ridCacheContinuousQueryAbstractSelfTest.java |   6 +-
 .../closure/GridClosureProcessorRemoteTest.java |   2 +-
 .../processors/fs/GridGgfsAbstractSelfTest.java |   6 +-
 .../processors/fs/GridGgfsMetricsSelfTest.java  |  12 +-
 ...IpcEndpointRegistrationAbstractSelfTest.java |   6 +-
 .../GridGgfsAbstractRecordResolverSelfTest.java |   6 +-
 .../streamer/GridStreamerSelfTest.java          |   6 +-
 .../loadtests/GridCacheMultiNodeLoadTest.java   |   6 +-
 .../ignite/messaging/GridMessagingSelfTest.java |   6 +-
 .../p2p/GridAbstractMultinodeRedeployTest.java  |   2 +-
 .../ignite/p2p/GridP2PUndeploySelfTest.java     |  19 +-
 .../GridSessionCheckpointAbstractSelfTest.java  |  31 +-
 .../session/GridSessionCheckpointSelfTest.java  |  14 +-
 ...GridSessionJobWaitTaskAttributeSelfTest.java |   6 +-
 .../GridCacheCheckpointSpiConfigSelfTest.java   |   6 +-
 .../cache/GridCacheCheckpointSpiSelfTest.java   |   2 +-
 ...GridCacheCheckpointSpiStartStopSelfTest.java |   2 +-
 .../GridJdbcCheckpointSpiConfigSelfTest.java    |   6 +-
 ...idJdbcCheckpointSpiCustomConfigSelfTest.java |   2 +-
 ...dJdbcCheckpointSpiDefaultConfigSelfTest.java |   2 +-
 .../GridJdbcCheckpointSpiStartStopSelfTest.java |   2 +-
 ...GridSharedFsCheckpointSpiConfigSelfTest.java |   8 +-
 ...redFsCheckpointSpiMultiThreadedSelfTest.java |   2 +-
 ...heckpointSpiMultipleDirectoriesSelfTest.java |   2 +-
 .../GridSharedFsCheckpointSpiSelfTest.java      |   2 +-
 ...dSharedFsCheckpointSpiStartStopSelfTest.java |   2 +-
 ...GridFifoQueueCollisionSpiConfigSelfTest.java |   8 +-
 .../GridFifoQueueCollisionSpiSelfTest.java      |   2 +-
 ...dFifoQueueCollisionSpiStartStopSelfTest.java |   2 +-
 ...bStealingCollisionSpiAttributesSelfTest.java |   2 +-
 ...idJobStealingCollisionSpiConfigSelfTest.java |  14 +-
 ...alingCollisionSpiCustomTopologySelfTest.java |   2 +-
 .../GridJobStealingCollisionSpiSelfTest.java    |   2 +-
 ...obStealingCollisionSpiStartStopSelfTest.java |   2 +-
 ...PriorityQueueCollisionSpiConfigSelfTest.java |  17 +-
 .../GridPriorityQueueCollisionSpiSelfTest.java  |   2 +-
 ...orityQueueCollisionSpiStartStopSelfTest.java |   2 +-
 ...mmunicationSpiConcurrentConnectSelfTest.java |   2 +-
 .../GridTcpCommunicationSpiConfigSelfTest.java  |   2 +-
 ...dTcpCommunicationSpiRecoveryAckSelfTest.java |   2 +-
 ...GridTcpCommunicationSpiRecoverySelfTest.java |   2 +-
 .../GridTcpCommunicationSpiShmemSelfTest.java   |   2 +-
 ...ridTcpCommunicationSpiStartStopSelfTest.java |   2 +-
 .../tcp/GridTcpCommunicationSpiTcpSelfTest.java |   2 +-
 .../local/GridLocalDeploymentSpiSelfTest.java   |   2 +-
 ...GridLocalDeploymentSpiStartStopSelfTest.java |   2 +-
 .../GridTcpDiscoveryConcurrentStartTest.java    |  16 +-
 .../GridTcpDiscoverySnapshotHistoryTest.java    |   2 +-
 .../tcp/GridTcpDiscoverySpiConfigSelfTest.java  |   2 +-
 .../GridTcpDiscoverySpiRandomStartStopTest.java |   7 +-
 .../tcp/GridTcpDiscoverySpiSelfTest.java        |  11 +-
 .../GridTcpDiscoverySpiStartStopSelfTest.java   |   6 +-
 .../GridTcpDiscoverySpiWildcardSelfTest.java    |   6 +-
 ...MemoryEventStorageMultiThreadedSelfTest.java |   2 +-
 ...GridMemoryEventStorageSpiConfigSelfTest.java |   2 +-
 .../GridMemoryEventStorageSpiSelfTest.java      |   2 +-
 ...dMemoryEventStorageSpiStartStopSelfTest.java |   2 +-
 .../GridAlwaysFailoverSpiConfigSelfTest.java    |   2 +-
 .../always/GridAlwaysFailoverSpiSelfTest.java   |   2 +-
 .../GridAlwaysFailoverSpiStartStopSelfTest.java |   2 +-
 ...ridJobStealingFailoverSpiConfigSelfTest.java |   5 +-
 ...idJobStealingFailoverSpiOneNodeSelfTest.java |   2 +-
 .../GridJobStealingFailoverSpiSelfTest.java     |   2 +-
 ...JobStealingFailoverSpiStartStopSelfTest.java |   2 +-
 .../never/GridNeverFailoverSpiSelfTest.java     |   2 +-
 .../GridNeverFailoverSpiStartStopSelfTest.java  |   2 +-
 ...dAdaptiveLoadBalancingSpiConfigSelfTest.java |   5 +-
 ...iveLoadBalancingSpiMultipleNodeSelfTest.java |   2 +-
 .../GridAdaptiveLoadBalancingSpiSelfTest.java   |   2 +-
 ...aptiveLoadBalancingSpiStartStopSelfTest.java |   2 +-
 ...alancingNotPerTaskMultithreadedSelfTest.java |   2 +-
 ...dRobinLoadBalancingSpiLocalNodeSelfTest.java |   3 +-
 ...inLoadBalancingSpiMultipleNodesSelfTest.java |   2 +-
 ...RobinLoadBalancingSpiNotPerTaskSelfTest.java |   2 +-
 ...dRobinLoadBalancingSpiStartStopSelfTest.java |   2 +-
 ...nLoadBalancingSpiTopologyChangeSelfTest.java |   2 +-
 ...tedRandomLoadBalancingSpiConfigSelfTest.java |   5 +-
 ...dWeightedRandomLoadBalancingSpiSelfTest.java |   2 +-
 ...RandomLoadBalancingSpiStartStopSelfTest.java |   2 +-
 ...dRandomLoadBalancingSpiWeightedSelfTest.java |   2 +-
 .../inmemory/GridTestSwapSpaceSpi.java          |  10 +
 .../GridTestSwapSpaceSpiConfiguration.java      |  32 ++
 .../testframework/junits/GridAbstractTest.java  |  16 +-
 .../junits/spi/GridSpiAbstractTest.java         |  10 +-
 .../testframework/junits/spi/GridSpiTest.java   |   4 +-
 .../util/GridTopologyHeapSizeSelfTest.java      |   6 +-
 .../uri/UriDeploymentSpiConfiguration.java      |   3 +-
 227 files changed, 3393 insertions(+), 654 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.java
----------------------------------------------------------------------
diff --git 
a/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.java
 
b/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.java
index 2cb3d93..08df23c 100644
--- 
a/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.java
+++ 
b/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.java
@@ -146,7 +146,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter 
implements CheckpointSpi,
      *
      * @param spiCfg SPI configuration.
      */
-    protected S3CheckpointSpi(S3CheckpointSpiConfiguration spiCfg) {
+    public S3CheckpointSpi(S3CheckpointSpiConfiguration spiCfg) {
         super(spiCfg);
 
         cfg = spiCfg.getCfg();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiConfiguration.java
 
b/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiConfiguration.java
index 3fd92bb..3915d73 100644
--- 
a/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiConfiguration.java
+++ 
b/modules/aws/src/main/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiConfiguration.java
@@ -20,12 +20,13 @@ package org.apache.ignite.spi.checkpoint.s3;
 import com.amazonaws.*;
 import com.amazonaws.auth.*;
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.checkpoint.CheckpointSpiConfiguration;
 
 /**
  *
  */
 @IgniteSpiMultipleInstancesSupport(true)
-public class S3CheckpointSpiConfiguration implements 
IgniteSpiConfiguration<S3CheckpointSpi> {
+public class S3CheckpointSpiConfiguration implements 
CheckpointSpiConfiguration<S3CheckpointSpi> {
     /** Bucket name suffix (set by user). */
     private String bucketNameSuffix;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3SessionCheckpointSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3SessionCheckpointSelfTest.java
 
b/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3SessionCheckpointSelfTest.java
index b28d138..d8520c4 100644
--- 
a/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3SessionCheckpointSelfTest.java
+++ 
b/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3SessionCheckpointSelfTest.java
@@ -32,7 +32,7 @@ public class S3SessionCheckpointSelfTest extends 
GridSessionCheckpointAbstractSe
     public void testS3Checkpoint() throws Exception {
         IgniteConfiguration cfg = getConfiguration();
 
-        S3CheckpointSpi spi = new S3CheckpointSpi();
+        S3CheckpointSpiConfiguration spi = new S3CheckpointSpiConfiguration();
 
         AWSCredentials cred = new 
BasicAWSCredentials(IgniteS3TestSuite.getAccessKey(),
             IgniteS3TestSuite.getSecretKey());
@@ -41,9 +41,7 @@ public class S3SessionCheckpointSelfTest extends 
GridSessionCheckpointAbstractSe
 
         spi.setBucketNameSuffix("test");
 
-        cfg.setCheckpointSpi(spi);
-
-        GridSessionCheckpointSelfTest.spi = spi;
+        cfg.setCheckpointSpiConfiguration(spi);
 
         checkCheckpoints(cfg);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/IgniteBasicWarmupClosure.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteBasicWarmupClosure.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteBasicWarmupClosure.java
index a4278ce..5d08587 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteBasicWarmupClosure.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteBasicWarmupClosure.java
@@ -195,18 +195,20 @@ public class IgniteBasicWarmupClosure implements 
IgniteInClosure<IgniteConfigura
         try {
             System.setProperty(IgniteSystemProperties.IGNITE_UPDATE_NOTIFIER, 
"false");
 
-            TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+            TcpDiscoveryVmIpFinderConfiguration ipFinderCfg = new 
TcpDiscoveryVmIpFinderConfiguration();
+
+            ipFinderCfg.setShared(true);
 
             for (int i = 0; i < gridCnt; i++) {
                 IgniteConfiguration cfg0 = new IgniteConfiguration(cfg);
 
-                TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+                TcpDiscoverySpiConfiguration discoSpi = new 
TcpDiscoverySpiConfiguration();
 
-                discoSpi.setIpFinder(ipFinder);
+                discoSpi.setIpFinder(ipFinderCfg);
 
                 discoSpi.setLocalPort(discoveryPort);
 
-                cfg0.setDiscoverySpi(discoSpi);
+                cfg0.setDiscoverySpiConfiguration(discoSpi);
 
                 cfg0.setGridLogger(new IgniteNullLogger());
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 6b70047..72e1a29 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -31,7 +31,6 @@ import org.apache.ignite.spi.authentication.*;
 import org.apache.ignite.spi.indexing.*;
 import org.apache.ignite.streamer.*;
 import org.apache.ignite.client.ssl.*;
-import org.apache.ignite.interop.*;
 import org.apache.ignite.hadoop.*;
 import org.apache.ignite.internal.managers.eventstorage.*;
 import org.apache.ignite.plugin.security.*;
@@ -47,7 +46,6 @@ import org.apache.ignite.spi.loadbalancing.*;
 import org.apache.ignite.spi.securesession.*;
 import org.apache.ignite.spi.swapspace.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
-import org.jetbrains.annotations.*;
 
 import javax.management.*;
 import java.lang.management.*;
@@ -326,8 +324,8 @@ public class IgniteConfiguration {
     /** Collection of life-cycle beans. */
     private LifecycleBean[] lifecycleBeans;
 
-    /** Discovery SPI. */
-    private DiscoverySpi discoSpi;
+    /** Discovery SPI configuration. */
+    private DiscoverySpiConfiguration discoSciConfiguration;
 
     /** Segmentation policy. */
     private GridSegmentationPolicy segPlc = DFLT_SEG_PLC;
@@ -347,38 +345,38 @@ public class IgniteConfiguration {
     /** Segment check frequency. */
     private long segChkFreq = DFLT_SEG_CHK_FREQ;
 
-    /** Communication SPI. */
-    private CommunicationSpi commSpi;
+    /** Communication SPI configuration. */
+    private CommunicationSpiConfiguration commSpiConfiguration;
 
-    /** Event storage SPI. */
-    private EventStorageSpi evtSpi;
+    /** Event storage SPI configuration. */
+    private EventStorageSpiConfiguration evtSpiConfiguration;
 
-    /** Collision SPI. */
-    private CollisionSpi colSpi;
+    /** Collision SPI configuration. */
+    private CollisionSpiConfiguration colSpiConfiguration;
 
-    /** Authentication SPI. */
-    private AuthenticationSpi authSpi;
+    /** Authentication SPI configuration. */
+    private AuthenticationSpiConfiguration authSpiConfiguration;
 
-    /** Secure session SPI. */
-    private SecureSessionSpi sesSpi;
+    /** Secure session SPI configuration. */
+    private SecureSessionSpiConfiguration sesSpiConfiguration;
 
-    /** Deployment SPI. */
-    private DeploymentSpi deploySpi;
+    /** Deployment SPI configuration. */
+    private DeploymentSpiConfiguration deploySpiConfiguration;
 
-    /** Checkpoint SPI. */
-    private CheckpointSpi[] cpSpi;
+    /** Checkpoint SPI configuration. */
+    private CheckpointSpiConfiguration[] cpSpiConfiguration;
 
-    /** Failover SPI. */
-    private FailoverSpi[] failSpi;
+    /** Failover SPI configuration. */
+    private FailoverSpiConfiguration[] failSpiConfiguration;
 
-    /** Load balancing SPI. */
-    private LoadBalancingSpi[] loadBalancingSpi;
+    /** Load balancing SPI configuration. */
+    private LoadBalancingSpiConfiguration[] loadBalancingSpiConfiguration;
 
-    /** Checkpoint SPI. */
-    private SwapSpaceSpi swapSpaceSpi;
+    /** Checkpoint SPI configuration. */
+    private SwapSpaceSpiConfiguration swapSpaceSpiConfiguration;
 
-    /** Indexing SPI. */
-    private GridIndexingSpi indexingSpi;
+    /** Indexing SPI configuration. */
+    private GridIndexingSpiConfiguration indexingSpiConfiguration;
 
     /** Address resolver. */
     private IgniteAddressResolver addrRslvr;
@@ -524,6 +522,18 @@ public class IgniteConfiguration {
 
     /** */
     private IgniteQueryConfiguration qryCfg;
+    private CommunicationSpi communicationSpi;
+    private CheckpointSpi[] checkpointSpi;
+    private DiscoverySpi discoverySpi;
+    private EventStorageSpi eventStorageSpi;
+    private AuthenticationSpi authenticationSpi;
+    private SecureSessionSpi secureSessionSpi;
+    private DeploymentSpi deploymentSpi;
+    private FailoverSpi[] failoverSpi;
+    private CollisionSpi collisionSpi;
+    private LoadBalancingSpi[] loadBalancingSpi;
+    private SwapSpaceSpi swapSpaceSpi;
+    private GridIndexingSpi indexingSpi;
 
     /**
      * Creates valid grid configuration with all default values.
@@ -543,18 +553,18 @@ public class IgniteConfiguration {
         assert cfg != null;
 
         // SPIs.
-        discoSpi = cfg.getDiscoverySpi();
-        commSpi = cfg.getCommunicationSpi();
-        deploySpi = cfg.getDeploymentSpi();
-        evtSpi = cfg.getEventStorageSpi();
-        cpSpi = cfg.getCheckpointSpi();
-        colSpi = cfg.getCollisionSpi();
-        failSpi = cfg.getFailoverSpi();
-        authSpi = cfg.getAuthenticationSpi();
-        sesSpi = cfg.getSecureSessionSpi();
-        loadBalancingSpi = cfg.getLoadBalancingSpi();
-        swapSpaceSpi = cfg.getSwapSpaceSpi();
-        indexingSpi = cfg.getIndexingSpi();
+        discoSciConfiguration = cfg.getDiscoverySpiConfiguration();
+        commSpiConfiguration = cfg.getCommunicationSpiConfiguration();
+        deploySpiConfiguration = cfg.getDeploymentSpiConfiguration();
+        evtSpiConfiguration = cfg.getEventStorageSpiConfiguration();
+        cpSpiConfiguration = cfg.getCheckpointSpiConfiguration();
+        colSpiConfiguration = cfg.getCollisionSpiConfiguration();
+        failSpiConfiguration = cfg.getFailoverSpiConfiguration();
+        authSpiConfiguration = cfg.getAuthenticationSpiConfiguration();
+        sesSpiConfiguration = cfg.getSecureSessionSpiConfiguration();
+        loadBalancingSpiConfiguration = cfg.getLoadBalancingSpiConfiguration();
+        swapSpaceSpiConfiguration = cfg.getSwapSpaceSpiConfiguration();
+        indexingSpiConfiguration = cfg.getIndexingSpiConfiguration();
 
         /*
          * Order alphabetically for maintenance purposes.
@@ -1760,8 +1770,8 @@ public class IgniteConfiguration {
      *
      * @return Grid event SPI implementation or {@code null} to use default 
implementation.
      */
-    public EventStorageSpi getEventStorageSpi() {
-        return evtSpi;
+    public EventStorageSpiConfiguration getEventStorageSpiConfiguration() {
+        return evtSpiConfiguration;
     }
 
     /**
@@ -1770,8 +1780,8 @@ public class IgniteConfiguration {
      * @param evtSpi Fully configured instance of {@link 
org.apache.ignite.spi.eventstorage.EventStorageSpi}.
      * @see IgniteConfiguration#getEventStorageSpi()
      */
-    public void setEventStorageSpi(EventStorageSpi evtSpi) {
-        this.evtSpi = evtSpi;
+    public void setEventStorageSpiConfiguration(EventStorageSpiConfiguration 
evtSpi) {
+        this.evtSpiConfiguration = evtSpi;
     }
 
     /**
@@ -1780,8 +1790,8 @@ public class IgniteConfiguration {
      *
      * @return Grid discovery SPI implementation or {@code null} to use 
default implementation.
      */
-    public DiscoverySpi getDiscoverySpi() {
-        return discoSpi;
+    public DiscoverySpiConfiguration getDiscoverySpiConfiguration() {
+        return discoSciConfiguration;
     }
 
     /**
@@ -1790,8 +1800,8 @@ public class IgniteConfiguration {
      * @param discoSpi Fully configured instance of {@link 
org.apache.ignite.spi.discovery.DiscoverySpi}.
      * @see IgniteConfiguration#getDiscoverySpi()
      */
-    public void setDiscoverySpi(DiscoverySpi discoSpi) {
-        this.discoSpi = discoSpi;
+    public void setDiscoverySpiConfiguration(DiscoverySpiConfiguration 
discoSpi) {
+        this.discoSciConfiguration = discoSpi;
     }
 
     /**
@@ -1934,8 +1944,8 @@ public class IgniteConfiguration {
      *
      * @return Grid communication SPI implementation or {@code null} to use 
default implementation.
      */
-    public CommunicationSpi getCommunicationSpi() {
-        return commSpi;
+    public CommunicationSpiConfiguration getCommunicationSpiConfiguration() {
+        return commSpiConfiguration;
     }
 
     /**
@@ -1944,8 +1954,8 @@ public class IgniteConfiguration {
      * @param commSpi Fully configured instance of {@link 
org.apache.ignite.spi.communication.CommunicationSpi}.
      * @see IgniteConfiguration#getCommunicationSpi()
      */
-    public void setCommunicationSpi(CommunicationSpi commSpi) {
-        this.commSpi = commSpi;
+    public void setCommunicationSpiConfiguration(CommunicationSpiConfiguration 
commSpi) {
+        this.commSpiConfiguration = commSpi;
     }
 
     /**
@@ -1958,8 +1968,8 @@ public class IgniteConfiguration {
      *
      * @return Grid collision SPI implementation or {@code null} to use 
default implementation.
      */
-    public CollisionSpi getCollisionSpi() {
-        return colSpi;
+    public CollisionSpiConfiguration getCollisionSpiConfiguration() {
+        return colSpiConfiguration;
     }
 
     /**
@@ -1969,8 +1979,8 @@ public class IgniteConfiguration {
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getCollisionSpi()
      */
-    public void setCollisionSpi(CollisionSpi colSpi) {
-        this.colSpi = colSpi;
+    public void setCollisionSpiConfiguration(CollisionSpiConfiguration colSpi) 
{
+        this.colSpiConfiguration = colSpi;
     }
 
     /**
@@ -1979,8 +1989,8 @@ public class IgniteConfiguration {
      *
      * @return Grid authentication SPI implementation or {@code null} to use 
default implementation.
      */
-    public AuthenticationSpi getAuthenticationSpi() {
-        return authSpi;
+    public AuthenticationSpiConfiguration getAuthenticationSpiConfiguration() {
+        return authSpiConfiguration;
     }
 
     /**
@@ -1990,8 +2000,8 @@ public class IgniteConfiguration {
      * {@code null} if no SPI provided.
      * @see IgniteConfiguration#getAuthenticationSpi()
      */
-    public void setAuthenticationSpi(AuthenticationSpi authSpi) {
-        this.authSpi = authSpi;
+    public void 
setAuthenticationSpiConfiguration(AuthenticationSpiConfiguration authSpi) {
+        this.authSpiConfiguration = authSpi;
     }
 
     /**
@@ -2000,19 +2010,19 @@ public class IgniteConfiguration {
      *
      * @return Grid secure session SPI implementation or {@code null} to use 
default implementation.
      */
-    public SecureSessionSpi getSecureSessionSpi() {
-        return sesSpi;
+    public SecureSessionSpiConfiguration getSecureSessionSpiConfiguration() {
+        return sesSpiConfiguration;
     }
 
     /**
      * Sets fully configured instance of {@link 
org.apache.ignite.spi.securesession.SecureSessionSpi}.
      *
-     * @param sesSpi Fully configured instance of {@link 
org.apache.ignite.spi.securesession.SecureSessionSpi} or
+     * @param sesSpi Configuration Fully configured instance of {@link 
org.apache.ignite.spi.securesession.SecureSessionSpi} or
      * {@code null} if no SPI provided.
      * @see IgniteConfiguration#getSecureSessionSpi()
      */
-    public void setSecureSessionSpi(SecureSessionSpi sesSpi) {
-        this.sesSpi = sesSpi;
+    public void setSecureSessionSpiConfiguration(SecureSessionSpiConfiguration 
sesSpi) {
+        this.sesSpiConfiguration = sesSpi;
     }
 
     /**
@@ -2021,8 +2031,8 @@ public class IgniteConfiguration {
      *
      * @return Grid deployment SPI implementation or {@code null} to use 
default implementation.
      */
-    public DeploymentSpi getDeploymentSpi() {
-        return deploySpi;
+    public DeploymentSpiConfiguration getDeploymentSpiConfiguration() {
+        return deploySpiConfiguration;
     }
 
     /**
@@ -2031,8 +2041,8 @@ public class IgniteConfiguration {
      * @param deploySpi Fully configured instance of {@link 
org.apache.ignite.spi.deployment.DeploymentSpi}.
      * @see IgniteConfiguration#getDeploymentSpi()
      */
-    public void setDeploymentSpi(DeploymentSpi deploySpi) {
-        this.deploySpi = deploySpi;
+    public void setDeploymentSpiConfiguration(DeploymentSpiConfiguration  
deploySpi) {
+        this.deploySpiConfiguration = deploySpi;
     }
 
     /**
@@ -2041,8 +2051,8 @@ public class IgniteConfiguration {
      *
      * @return Grid checkpoint SPI implementation or {@code null} to use 
default implementation.
      */
-    public CheckpointSpi[] getCheckpointSpi() {
-        return cpSpi;
+    public CheckpointSpiConfiguration[] getCheckpointSpiConfiguration() {
+        return cpSpiConfiguration;
     }
 
     /**
@@ -2051,8 +2061,8 @@ public class IgniteConfiguration {
      * @param cpSpi Fully configured instance of {@link 
org.apache.ignite.spi.checkpoint.CheckpointSpi}.
      * @see IgniteConfiguration#getCheckpointSpi()
      */
-    public void setCheckpointSpi(CheckpointSpi... cpSpi) {
-        this.cpSpi = cpSpi;
+    public void setCheckpointSpiConfiguration(CheckpointSpiConfiguration... 
cpSpi) {
+        this.cpSpiConfiguration = cpSpi;
     }
 
     /**
@@ -2061,8 +2071,8 @@ public class IgniteConfiguration {
      *
      * @return Grid failover SPI implementation or {@code null} to use default 
implementation.
      */
-    public FailoverSpi[] getFailoverSpi() {
-        return failSpi;
+    public FailoverSpiConfiguration[] getFailoverSpiConfiguration() {
+        return failSpiConfiguration;
     }
 
     /**
@@ -2072,8 +2082,8 @@ public class IgniteConfiguration {
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getFailoverSpi()
      */
-    public void setFailoverSpi(FailoverSpi... failSpi) {
-        this.failSpi = failSpi;
+    public void setFailoverSpiConfiguration(FailoverSpiConfiguration... 
failSpi) {
+        this.failSpiConfiguration = failSpi;
     }
 
     /**
@@ -2082,8 +2092,8 @@ public class IgniteConfiguration {
      *
      * @return Grid load balancing SPI implementation or {@code null} to use 
default implementation.
      */
-    public LoadBalancingSpi[] getLoadBalancingSpi() {
-        return loadBalancingSpi;
+    public LoadBalancingSpiConfiguration[] getLoadBalancingSpiConfiguration() {
+        return loadBalancingSpiConfiguration;
     }
 
     /**
@@ -2125,8 +2135,8 @@ public class IgniteConfiguration {
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getLoadBalancingSpi()
      */
-    public void setLoadBalancingSpi(LoadBalancingSpi... loadBalancingSpi) {
-        this.loadBalancingSpi = loadBalancingSpi;
+    public void 
setLoadBalancingSpiConfiguration(LoadBalancingSpiConfiguration... 
loadBalancingSpi) {
+        this.loadBalancingSpiConfiguration = loadBalancingSpi;
     }
 
     /**
@@ -2136,8 +2146,8 @@ public class IgniteConfiguration {
      *      <tt>null</tt> if no SPI provided.
      * @see IgniteConfiguration#getSwapSpaceSpi()
      */
-    public void setSwapSpaceSpi(SwapSpaceSpi swapSpaceSpi) {
-        this.swapSpaceSpi = swapSpaceSpi;
+    public void setSwapSpaceSpiConfiguration(SwapSpaceSpiConfiguration 
swapSpaceSpi) {
+        this.swapSpaceSpiConfiguration = swapSpaceSpi;
     }
 
     /**
@@ -2149,8 +2159,8 @@ public class IgniteConfiguration {
      *
      * @return Grid swap space SPI implementation or <tt>null</tt> to use 
default implementation.
      */
-    public SwapSpaceSpi getSwapSpaceSpi() {
-        return swapSpaceSpi;
+    public SwapSpaceSpiConfiguration  getSwapSpaceSpiConfiguration() {
+        return swapSpaceSpiConfiguration;
     }
 
     /**
@@ -2159,8 +2169,8 @@ public class IgniteConfiguration {
      * @param indexingSpi Fully configured instances of {@link 
org.apache.ignite.spi.indexing.GridIndexingSpi}.
      * @see IgniteConfiguration#getIndexingSpi()
      */
-    public void setIndexingSpi(GridIndexingSpi indexingSpi) {
-        this.indexingSpi = indexingSpi;
+    public void setIndexingSpiConfiguration(GridIndexingSpiConfiguration 
indexingSpi) {
+        this.indexingSpiConfiguration = indexingSpi;
     }
 
     /**
@@ -2168,8 +2178,8 @@ public class IgniteConfiguration {
      *
      * @return Indexing SPI implementation.
      */
-    public GridIndexingSpi getIndexingSpi() {
-        return indexingSpi;
+    public GridIndexingSpiConfiguration  getIndexingSpiConfiguration() {
+        return indexingSpiConfiguration;
     }
 
     /**
@@ -3162,4 +3172,98 @@ public class IgniteConfiguration {
     @Override public String toString() {
         return S.toString(IgniteConfiguration.class, this);
     }
+
+    public CommunicationSpi getCommunicationSpi() {
+        return communicationSpi;
+    }
+
+    public DiscoverySpi getDiscoverySpi() {
+        return discoverySpi;
+    }
+
+    public CheckpointSpi[] getCheckpointSpi() {
+        return checkpointSpi;
+    }
+
+    public EventStorageSpi getEventStorageSpi() {
+        return eventStorageSpi;
+    }
+
+    public AuthenticationSpi getAuthenticationSpi() {
+        return authenticationSpi;
+    }
+
+    public SecureSessionSpi getSecureSessionSpi() {
+        return secureSessionSpi;
+    }
+
+    public DeploymentSpi getDeploymentSpi() {
+        return deploymentSpi;
+    }
+
+    public FailoverSpi[] getFailoverSpi() {
+        return failoverSpi;
+    }
+
+    public CollisionSpi getCollisionSpi() {
+        return collisionSpi;
+    }
+
+    public LoadBalancingSpi[] getLoadBalancingSpi() {
+        return loadBalancingSpi;
+    }
+
+    public SwapSpaceSpi getSwapSpaceSpi() {
+        return swapSpaceSpi;
+    }
+
+    public GridIndexingSpi getIndexingSpi() {
+        return indexingSpi;
+    }
+
+
+
+/*    public void setCommunicationSpi(CommunicationSpi communicationSpi) {
+        this.communicationSpi = communicationSpi;
+    }
+
+    public void setCheckpointSpi(CheckpointSpi[] checkpointSpi) {
+        this.checkpointSpi = checkpointSpi;
+    }
+
+    public void setEventStorageSpi(EventStorageSpi eventStorageSpi) {
+        this.eventStorageSpi = eventStorageSpi;
+    }
+
+    public void setAuthenticationSpi(AuthenticationSpi authenticationSpi) {
+        this.authenticationSpi = authenticationSpi;
+    }
+
+    public void setSecureSessionSpi(SecureSessionSpi secureSessionSpi) {
+        this.secureSessionSpi = secureSessionSpi;
+    }
+
+    public void setDeploymentSpi(DeploymentSpi deploymentSpi) {
+        this.deploymentSpi = deploymentSpi;
+    }
+
+    public void setFailoverSpi(FailoverSpi[] failoverSpi) {
+        this.failoverSpi = failoverSpi;
+    }
+
+    public void setCollisionSpi(CollisionSpi collisionSpi) {
+        this.collisionSpi = collisionSpi;
+    }
+
+    public void setLoadBalancingSpi(LoadBalancingSpi[] loadBalancingSpi) {
+        this.loadBalancingSpi = loadBalancingSpi;
+    }
+
+    public void setSwapSpaceSpi(SwapSpaceSpi swapSpaceSpi) {
+        this.swapSpaceSpi = swapSpaceSpi;
+    }
+
+    public void setIndexingSpi(GridIndexingSpi indexingSpi) {
+        this.indexingSpi = indexingSpi;
+    }*/
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index b4b60e0..a778684 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -1502,18 +1502,87 @@ public class IgnitionEx {
 
             String[] p2pExclude = 
cfg.getPeerClassLoadingLocalClassPathExclude();
 
-            CommunicationSpi commSpi = cfg.getCommunicationSpi();
-            DiscoverySpi discoSpi = cfg.getDiscoverySpi();
-            EventStorageSpi evtSpi = cfg.getEventStorageSpi();
-            CollisionSpi colSpi = cfg.getCollisionSpi();
-            AuthenticationSpi authSpi = cfg.getAuthenticationSpi();
-            SecureSessionSpi sesSpi = cfg.getSecureSessionSpi();
-            DeploymentSpi deploySpi = cfg.getDeploymentSpi();
-            CheckpointSpi[] cpSpi = cfg.getCheckpointSpi();
-            FailoverSpi[] failSpi = cfg.getFailoverSpi();
-            LoadBalancingSpi[] loadBalancingSpi = cfg.getLoadBalancingSpi();
-            SwapSpaceSpi swapspaceSpi = cfg.getSwapSpaceSpi();
-            GridIndexingSpi indexingSpi = cfg.getIndexingSpi();
+            CommunicationSpi commSpi = null;
+            DiscoverySpi discoSpi = null;
+            EventStorageSpi evtSpi = null;
+            CollisionSpi colSpi = null;
+            AuthenticationSpi authSpi = null;
+            SecureSessionSpi sesSpi = null;
+            DeploymentSpi deploySpi = null;
+            CheckpointSpi[] cpSpi = null;
+            FailoverSpi[] failSpi = null;
+            LoadBalancingSpi[] loadBalancingSpi = null;
+            SwapSpaceSpi swapspaceSpi = null;
+            GridIndexingSpi indexingSpi = null;
+
+            if (cfg.getCommunicationSpiConfiguration() != null)
+                commSpi = 
(CommunicationSpi)createSpi(cfg.getCommunicationSpiConfiguration());
+
+            if (cfg.getDiscoverySpiConfiguration() != null)
+                discoSpi = 
(DiscoverySpi)createSpi(cfg.getDiscoverySpiConfiguration());
+
+            if (cfg.getEventStorageSpiConfiguration() != null)
+                evtSpi = 
(EventStorageSpi)createSpi(cfg.getCollisionSpiConfiguration());
+
+            if (cfg.getCollisionSpiConfiguration() != null)
+                colSpi = 
(CollisionSpi)createSpi(cfg.getCollisionSpiConfiguration());
+
+            if (cfg.getAuthenticationSpiConfiguration() != null)
+                authSpi = 
(AuthenticationSpi)createSpi(cfg.getAuthenticationSpiConfiguration());
+
+            if (cfg.getSecureSessionSpiConfiguration() != null)
+                sesSpi = 
(SecureSessionSpi)createSpi(cfg.getSecureSessionSpiConfiguration());
+
+            if (cfg.getDeploymentSpiConfiguration() != null)
+                deploySpi = 
(DeploymentSpi)createSpi(cfg.getDeploymentSpiConfiguration());
+
+            if (cfg.getSwapSpaceSpiConfiguration() != null)
+                swapspaceSpi = 
(SwapSpaceSpi)createSpi(cfg.getSwapSpaceSpiConfiguration());
+
+            if (cfg.getIndexingSpiConfiguration() != null)
+                indexingSpi = 
(GridIndexingSpi)createSpi(cfg.getIndexingSpiConfiguration());
+
+            if (cfg.getCheckpointSpiConfiguration() != null && 
cfg.getCheckpointSpiConfiguration().length > 0){
+                CheckpointSpiConfiguration[] checkpointSpiCfg = 
cfg.getCheckpointSpiConfiguration();
+
+                cpSpi = new CheckpointSpi[checkpointSpiCfg.length];
+
+                int i = 0;
+
+                for (CheckpointSpiConfiguration spiCfg : checkpointSpiCfg){
+                    cpSpi[i] = (CheckpointSpi)createSpi(spiCfg);
+
+                    ++i;
+                }
+            }
+
+            if (cfg.getFailoverSpiConfiguration() != null && 
cfg.getFailoverSpiConfiguration().length > 0){
+                FailoverSpiConfiguration[] failSpiCfg = 
cfg.getFailoverSpiConfiguration();
+
+                failSpi = new FailoverSpi[failSpiCfg.length];
+
+                int i = 0;
+
+                for (FailoverSpiConfiguration spiCfg : failSpiCfg){
+                    failSpi[i] = (FailoverSpi)createSpi(spiCfg);
+
+                    ++i;
+                }
+            }
+
+            if (cfg.getLoadBalancingSpiConfiguration() != null && 
cfg.getLoadBalancingSpiConfiguration().length > 0){
+                LoadBalancingSpiConfiguration[] loadBalancingSpiCfg = 
cfg.getLoadBalancingSpiConfiguration();
+
+                loadBalancingSpi = new 
LoadBalancingSpi[loadBalancingSpiCfg.length];
+
+                int i = 0;
+
+                for (LoadBalancingSpiConfiguration spiCfg : 
loadBalancingSpiCfg){
+                    loadBalancingSpi[i] = (LoadBalancingSpi)createSpi(spiCfg);
+
+                    ++i;
+                }
+            }
 
             execSvc = cfg.getExecutorService();
             sysExecSvc = cfg.getSystemExecutorService();
@@ -1763,18 +1832,18 @@ public class IgnitionEx {
             if (indexingSpi == null)
                 indexingSpi = new GridNoopIndexingSpi();
 
-            myCfg.setCommunicationSpi(commSpi);
-            myCfg.setDiscoverySpi(discoSpi);
-            myCfg.setCheckpointSpi(cpSpi);
-            myCfg.setEventStorageSpi(evtSpi);
-            myCfg.setAuthenticationSpi(authSpi);
-            myCfg.setSecureSessionSpi(sesSpi);
-            myCfg.setDeploymentSpi(deploySpi);
-            myCfg.setFailoverSpi(failSpi);
-            myCfg.setCollisionSpi(colSpi);
-            myCfg.setLoadBalancingSpi(loadBalancingSpi);
-            myCfg.setSwapSpaceSpi(swapspaceSpi);
-            myCfg.setIndexingSpi(indexingSpi);
+//            myCfg.setCommunicationSpi(commSpi);
+//            myCfg.setDiscoverySpi(discoSpi);
+//            myCfg.setCheckpointSpi(cpSpi);
+//            myCfg.setEventStorageSpi(evtSpi);
+//            myCfg.setAuthenticationSpi(authSpi);
+//            myCfg.setSecureSessionSpi(sesSpi);
+//            myCfg.setDeploymentSpi(deploySpi);
+//            myCfg.setFailoverSpi(failSpi);
+//            myCfg.setCollisionSpi(colSpi);
+//            myCfg.setLoadBalancingSpi(loadBalancingSpi);
+//            myCfg.setSwapSpaceSpi(swapspaceSpi);
+//            myCfg.setIndexingSpi(indexingSpi);
 
             myCfg.setAddressResolver(cfg.getAddressResolver());
 
@@ -2056,6 +2125,15 @@ public class IgnitionEx {
             }
         }
 
+        private <T extends IgniteSpi> T createSpi(IgniteSpiConfiguration<T> 
cfg) throws IgniteCheckedException {
+            try {
+                return 
cfg.spiClass().getConstructor(cfg.getClass()).newInstance(cfg);
+            }
+            catch (Exception e){
+                throw new IgniteCheckedException("Failed to create SPI.", e);
+            }
+        }
+
         /**
          * Creates utility system cache configuration.
          *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java 
b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
index 4bfb4d9..1a4b4fb 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java
@@ -69,6 +69,8 @@ public abstract class IgniteSpiAdapter implements IgniteSpi, 
IgniteSpiManagement
     /** Discovery listener. */
     private GridLocalEventListener paramsLsnr;
 
+
+
     /**
      * Create SPI from configuration object.
      *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConfiguration.java 
b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConfiguration.java
index b931353..80cfabe 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConfiguration.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.spi;
 
-import java.io.Serializable;
+import java.io.*;
 
 /**
  * TODO: Add javadoc
@@ -26,5 +26,5 @@ public interface IgniteSpiConfiguration<T extends IgniteSpi> 
extends Serializabl
     /**
      * @return SPI object.
      */
-    public Class<T> spiClass();
+    public Class<? extends T> spiClass();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiFactory.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiFactory.java 
b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiFactory.java
deleted file mode 100644
index 535dd53..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiFactory.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.spi;
-
-/**
- * TODO: Add javadoc
- */
-public interface IgniteSpiFactory<T extends IgniteSpi> {
-    /**
-     * @return SPI object.
-     */
-    public Class<T> spiClass();
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/authentication/AuthenticationSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/authentication/AuthenticationSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/AuthenticationSpiConfiguration.java
new file mode 100644
index 0000000..110cffa
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/AuthenticationSpiConfiguration.java
@@ -0,0 +1,27 @@
+/*
+ * 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.spi.authentication;
+
+import org.apache.ignite.spi.*;
+
+/**
+ *
+ */
+@IgniteSpiConsistencyChecked(optional = false, checkDaemon = true)
+public interface AuthenticationSpiConfiguration<T extends AuthenticationSpi> 
extends IgniteSpiConfiguration<T> {
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpi.java
index 01e1d60..a8cb987 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpi.java
@@ -77,6 +77,13 @@ public class NoopAuthenticationSpi extends IgniteSpiAdapter
 
     /**
      * Create SPI from configuration object.
+     */
+    public NoopAuthenticationSpi() {
+        super(new NoopAuthenticationSpiConfiguration());
+    }
+
+    /**
+     * Create SPI from configuration object.
      *
      * @param spiCfg SPI configuration.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpiConfiguration.java
index 2fc113c..444e3c7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/authentication/noop/NoopAuthenticationSpiConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.spi.authentication.noop;
 
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.authentication.*;
 
 /**
  * Default implementation of the authentication SPI which permits any request.
@@ -58,7 +59,7 @@ import org.apache.ignite.spi.*;
  */
 @IgniteSpiNoop
 @IgniteSpiMultipleInstancesSupport(true)
-public class NoopAuthenticationSpiConfiguration implements 
IgniteSpiConfiguration<NoopAuthenticationSpi> {
+public class NoopAuthenticationSpiConfiguration implements 
AuthenticationSpiConfiguration<NoopAuthenticationSpi> {
     /** {@inheritDoc} */
     @Override public Class<NoopAuthenticationSpi> spiClass() {
         return NoopAuthenticationSpi.class;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/CheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/CheckpointSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/CheckpointSpiConfiguration.java
new file mode 100644
index 0000000..68972fe
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/CheckpointSpiConfiguration.java
@@ -0,0 +1,26 @@
+/*
+ * 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.spi.checkpoint;
+
+import org.apache.ignite.spi.*;
+
+/**
+ *
+ */
+public interface CheckpointSpiConfiguration<T extends CheckpointSpi> extends 
IgniteSpiConfiguration<T> {
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpiConfiguration.java
index f7522ba..4904b2b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpiConfiguration.java
@@ -18,12 +18,13 @@
 package org.apache.ignite.spi.checkpoint.cache;
 
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.checkpoint.CheckpointSpiConfiguration;
 
 /**
  *
  */
 @IgniteSpiMultipleInstancesSupport(true)
-public class CacheCheckpointSpiConfiguration implements 
IgniteSpiConfiguration<CacheCheckpointSpi> {
+public class CacheCheckpointSpiConfiguration implements 
CheckpointSpiConfiguration<CacheCheckpointSpi> {
     /** Default cache name (value is <tt>checkpoints</tt>). */
     public static final String DFLT_CACHE_NAME = "checkpoints";
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpiConfiguration.java
index 02e75cb..5ee8ffc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpiConfiguration.java
@@ -26,7 +26,7 @@ import javax.sql.*;
  *
  */
 @IgniteSpiMultipleInstancesSupport(true)
-public class JdbcCheckpointSpiConfiguration implements 
IgniteSpiConfiguration<JdbcCheckpointSpi> {
+public class JdbcCheckpointSpiConfiguration implements 
CheckpointSpiConfiguration<JdbcCheckpointSpi> {
     /** Default number of retries in case of errors (value is {@code 2}). */
     public static final int DFLT_NUMBER_OF_RETRIES = 2;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.java
index d4adc26..713c6a4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.java
@@ -35,8 +35,17 @@ public class NoopCheckpointSpi extends IgniteSpiAdapter 
implements CheckpointSpi
     @IgniteLoggerResource
     private IgniteLogger log;
 
-    /** {@inheritDoc} */
-    protected NoopCheckpointSpi(IgniteSpiConfiguration spiCfg) {
+    /**
+     *
+     */
+    public NoopCheckpointSpi() {
+        super(new NoopCheckpointSpiConfiguration());
+    }
+
+    /**
+     *
+     */
+    public NoopCheckpointSpi(NoopCheckpointSpiConfiguration spiCfg) {
         super(spiCfg);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpiConfiguration.java
index 792c70c..dc6d52e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpiConfiguration.java
@@ -18,13 +18,14 @@
 package org.apache.ignite.spi.checkpoint.noop;
 
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.checkpoint.CheckpointSpiConfiguration;
 
 /**
  *
  */
 @IgniteSpiNoop
 @IgniteSpiMultipleInstancesSupport(true)
-public class NoopCheckpointSpiConfiguration implements 
IgniteSpiConfiguration<NoopCheckpointSpi> {
+public class NoopCheckpointSpiConfiguration implements 
CheckpointSpiConfiguration<NoopCheckpointSpi> {
     /** {@inheritDoc} */
     @Override public Class<NoopCheckpointSpi> spiClass() {
         return NoopCheckpointSpi.class;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpiConfiguration.java
index dca8efc..d1e6e1f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpiConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.ignite.spi.checkpoint.sharedfs;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.checkpoint.CheckpointSpiConfiguration;
 
 import java.util.*;
 
@@ -28,7 +29,7 @@ import java.util.*;
  */
 @IgniteSpiMultipleInstancesSupport(true)
 @IgniteSpiConsistencyChecked(optional = false)
-public class SharedFsCheckpointSpiConfiguration implements 
IgniteSpiConfiguration<SharedFsCheckpointSpi> {
+public class SharedFsCheckpointSpiConfiguration implements 
CheckpointSpiConfiguration<SharedFsCheckpointSpi> {
     /**
      * Default checkpoint directory. Note that this path is relative to {@code 
IGNITE_HOME/work} folder
      * if {@code IGNITE_HOME} system or environment variable specified, 
otherwise it is relative to

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/CollisionSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/CollisionSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/CollisionSpiConfiguration.java
new file mode 100644
index 0000000..f64a07b
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/CollisionSpiConfiguration.java
@@ -0,0 +1,26 @@
+/*
+ * 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.spi.collision;
+
+import org.apache.ignite.spi.*;
+
+/**
+ *
+ */
+public interface CollisionSpiConfiguration<T extends CollisionSpi> extends 
IgniteSpiConfiguration<T> {
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiConfiguration.java
index ccfba91..b63641e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiConfiguration.java
@@ -19,12 +19,13 @@ package org.apache.ignite.spi.collision.fifoqueue;
 
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.collision.*;
 
 /**
  * 
  */
 @IgniteSpiMultipleInstancesSupport(true)
-public class FifoQueueCollisionSpiConfiguration implements 
IgniteSpiConfiguration<FifoQueueCollisionSpi> {
+public class FifoQueueCollisionSpiConfiguration implements 
CollisionSpiConfiguration<FifoQueueCollisionSpi> {
     /**
      * Default number of parallel jobs allowed (value is {@code 95} which is
      * slightly less same as default value of threads in the execution thread 
pool

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiConfiguration.java
index 8c0943d..1d371b0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.ignite.spi.collision.jobstealing;
 import org.apache.ignite.internal.util.tostring.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.collision.*;
 
 import java.io.*;
 import java.util.*;
@@ -30,7 +31,7 @@ import java.util.*;
 @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
 @IgniteSpiMultipleInstancesSupport(true)
 @IgniteSpiConsistencyChecked(optional = true)
-public class JobStealingCollisionSpiConfiguration implements 
IgniteSpiConfiguration<JobStealingCollisionSpi> {
+public class JobStealingCollisionSpiConfiguration implements 
CollisionSpiConfiguration<JobStealingCollisionSpi> {
     /** Maximum number of attempts to steal job by another node (default is 
{@code 5}). */
     public static final int DFLT_MAX_STEALING_ATTEMPTS = 5;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpi.java
index 987ebc2..dc99260 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpi.java
@@ -34,6 +34,13 @@ import org.jetbrains.annotations.*;
 @IgniteSpiMultipleInstancesSupport(true)
 public class NoopCollisionSpi extends IgniteSpiAdapter implements CollisionSpi 
{
     /**
+     * Default constructor.
+     */
+    public NoopCollisionSpi() {
+        this(new NoopCollisionSpiConfiguration());
+    }
+
+    /**
      *
      */
     public NoopCollisionSpi(NoopCollisionSpiConfiguration spiCfg) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpiConfiguration.java
index 9e6309b..ab453d7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/noop/NoopCollisionSpiConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.spi.collision.noop;
 
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.collision.CollisionSpiConfiguration;
 
 /**
  * No-op implementation of {@link 
org.apache.ignite.spi.collision.CollisionSpi}. This is default implementation
@@ -29,7 +30,7 @@ import org.apache.ignite.spi.*;
  */
 @IgniteSpiNoop
 @IgniteSpiMultipleInstancesSupport(true)
-public class NoopCollisionSpiConfiguration implements 
IgniteSpiConfiguration<NoopCollisionSpi> {
+public class NoopCollisionSpiConfiguration implements 
CollisionSpiConfiguration<NoopCollisionSpi> {
     /** {@inheritDoc} */
     @Override public Class<NoopCollisionSpi> spiClass() {
         return NoopCollisionSpi.class;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/collision/priorityqueue/PriorityQueueCollisionSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/priorityqueue/PriorityQueueCollisionSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/priorityqueue/PriorityQueueCollisionSpiConfiguration.java
index 13ece82..a1162e4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/collision/priorityqueue/PriorityQueueCollisionSpiConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/collision/priorityqueue/PriorityQueueCollisionSpiConfiguration.java
@@ -19,13 +19,14 @@ package org.apache.ignite.spi.collision.priorityqueue;
 
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.collision.*;
 
 /**
  *
  */
 @IgniteSpiMultipleInstancesSupport(true)
 @IgniteSpiConsistencyChecked(optional = true)
-public class PriorityQueueCollisionSpiConfiguration implements 
IgniteSpiConfiguration<PriorityQueueCollisionSpi> {
+public class PriorityQueueCollisionSpiConfiguration implements 
CollisionSpiConfiguration<PriorityQueueCollisionSpi> {
     /**
      * Default number of parallel jobs allowed (value is {@code 95} which is
      * slightly less same as default value of threads in the execution thread 
pool

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/communication/CommunicationSpiConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/CommunicationSpiConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/CommunicationSpiConfiguration.java
new file mode 100644
index 0000000..a79cbe9
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/CommunicationSpiConfiguration.java
@@ -0,0 +1,32 @@
+/*
+ * 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.spi.communication;
+
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.spi.IgniteSpi;
+import org.apache.ignite.spi.IgniteSpiConfiguration;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.jetbrains.annotations.Nullable;
+
+import java.io.Serializable;
+
+/**
+ * TODO: javadoc
+ */
+public interface CommunicationSpiConfiguration<T extends CommunicationSpi> 
extends IgniteSpiConfiguration<T> {
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/edbfd9ad/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index e5b019d..956845d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -869,6 +869,46 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
     };
 
     /**
+     * Create SPI from configuration object.
+     *
+     * @param spiCfg SPI configuration.
+     */
+    public TcpCommunicationSpi(TcpCommunicationSpiConfiguration spiCfg) {
+        super(spiCfg);
+
+        ackSndThreshold = spiCfg.getAckSendThreshold();
+        addrRslvr = spiCfg.getAddressResolver();
+        bufSizeRatio = spiCfg.getBufferSizeRatio();
+        connBufFlushFreq = spiCfg.getConnectionBufferFlushFrequency();
+        connBufSize = spiCfg.getConnectionBufferSize();
+        connTimeout = spiCfg.getConnectTimeout();
+        directBuf = spiCfg.isDirectBuffer();
+        directSndBuf = spiCfg.isDirectSendBuffer();
+        idleConnTimeout = spiCfg.getIdleConnectionTimeout();
+        locAddr = spiCfg.getLocalAddress();
+        locPort = spiCfg.getLocalPort();
+        locPortRange = spiCfg.getLocalPortRange();
+        maxConnTimeout = spiCfg.getMaxConnectTimeout();
+        msgQueueLimit = spiCfg.getMessageQueueLimit();
+        minBufferedMsgCnt = spiCfg.getMinimumBufferedMessageCount();
+        reconCnt = spiCfg.getReconnectCount();
+        selectorsCnt = spiCfg.getSelectorsCount();
+        shmemPort = spiCfg.getSharedMemoryPort();
+        sockRcvBuf = spiCfg.getSocketReceiveBuffer();
+        sockSndBuf = spiCfg.getSocketSendBuffer();
+        sockWriteTimeout = spiCfg.getSocketWriteTimeout();
+        tcpNoDelay = spiCfg.isTcpNoDelay();
+        unackedMsgsBufSize = spiCfg.getUnacknowledgedMessagesBufferSize();
+    }
+
+    /**
+     * Default constructor.
+     */
+    public TcpCommunicationSpi() {
+        this(new TcpCommunicationSpiConfiguration());
+    }
+
+    /**
      * Sets address resolver.
      *
      * @param addrRslvr Address resolver.

Reply via email to