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/03/31 16:22:39 UTC

[05/18] ignite git commit: IGNITE-4564: All setters on public configuration now return "this" instance to allow convenient chaining. This closes #1449.

IGNITE-4564: All setters on public configuration now return "this" instance to allow convenient chaining. This closes #1449.


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

Branch: refs/heads/ignite-3477-master
Commit: cfc88028fb359d1ccb64ca636eccc86db0f0e61d
Parents: 44cf1d2
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Thu Mar 30 19:01:29 2017 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Thu Mar 30 19:01:29 2017 +0300

----------------------------------------------------------------------
 .../spi/checkpoint/s3/S3CheckpointSpi.java      |  72 ++-
 .../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java |  27 +-
 .../cloud/TcpDiscoveryCloudIpFinder.java        |  51 +-
 .../ignite/binary/BinaryBasicIdMapper.java      |   5 +-
 .../ignite/binary/BinaryBasicNameMapper.java    |   5 +-
 .../ignite/binary/BinaryTypeConfiguration.java  |  30 +-
 .../ignite/cache/CacheKeyConfiguration.java     |  10 +-
 .../org/apache/ignite/cache/QueryEntity.java    |  35 +-
 .../affinity/fair/FairAffinityFunction.java     |  21 +-
 .../rendezvous/RendezvousAffinityFunction.java  |  27 +-
 .../cache/eviction/AbstractEvictionPolicy.java  |  15 +-
 .../cache/eviction/fifo/FifoEvictionPolicy.java |  74 ++-
 .../eviction/fifo/FifoEvictionPolicyMBean.java  |   2 +
 .../igfs/IgfsPerBlockLruEvictionPolicy.java     | 131 ++++-
 .../cache/eviction/lru/LruEvictionPolicy.java   |  74 ++-
 .../eviction/sorted/SortedEvictionPolicy.java   |  74 ++-
 .../configuration/AtomicConfiguration.java      |  15 +-
 .../configuration/BinaryConfiguration.java      |  30 +-
 .../configuration/CacheConfiguration.java       |  71 ++-
 .../configuration/CollectionConfiguration.java  |  36 +-
 .../configuration/ConnectorConfiguration.java   | 100 +++-
 .../configuration/FileSystemConfiguration.java  | 151 ++++--
 .../configuration/HadoopConfiguration.java      |  31 +-
 .../configuration/NearCacheConfiguration.java   |  50 ++
 .../configuration/TransactionConfiguration.java |  45 +-
 .../igfs/IgfsGroupDataBlocksKeyMapper.java      |   5 +-
 .../igfs/IgfsIpcEndpointConfiguration.java      |  30 +-
 .../client/GridClientConfiguration.java         | 100 +++-
 .../client/GridClientDataConfiguration.java     |  15 +-
 .../client/GridClientPartitionAffinity.java     |  15 +-
 .../balancer/GridClientBalancerAdapter.java     |   5 +-
 .../router/GridTcpRouterConfiguration.java      |  50 +-
 .../internal/jdbc2/JdbcSqlFieldsQuery.java      |  57 ++
 .../processors/cache/GridCacheProcessor.java    |  39 +-
 .../dotnet/PlatformDotNetConfigurationEx.java   |  21 +-
 .../utils/PlatformConfigurationUtils.java       |   3 +-
 .../optimized/OptimizedMarshaller.java          |  15 +-
 .../apache/ignite/mxbean/IgniteMBeanAware.java  |  28 +
 .../dotnet/PlatformDotNetAffinityFunction.java  |  10 +-
 .../PlatformDotNetBinaryConfiguration.java      |  31 +-
 .../PlatformDotNetBinaryTypeConfiguration.java  |  35 +-
 .../dotnet/PlatformDotNetConfiguration.java     |  10 +-
 .../ignite/services/ServiceConfiguration.java   |  35 +-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |  50 +-
 .../ignite/spi/IgniteSpiMBeanAdapter.java       |  78 +++
 .../checkpoint/cache/CacheCheckpointSpi.java    |  40 +-
 .../spi/checkpoint/jdbc/JdbcCheckpointSpi.java  | 219 ++++++--
 .../spi/checkpoint/noop/NoopCheckpointSpi.java  |   7 +
 .../sharedfs/SharedFsCheckpointSpi.java         |  54 +-
 .../fifoqueue/FifoQueueCollisionSpi.java        | 134 ++++-
 .../fifoqueue/FifoQueueCollisionSpiMBean.java   |   2 +-
 .../jobstealing/JobStealingCollisionSpi.java    | 281 ++++++++--
 .../JobStealingCollisionSpiMBean.java           |   6 +-
 .../spi/collision/noop/NoopCollisionSpi.java    |   7 +
 .../PriorityQueueCollisionSpi.java              | 278 ++++++++--
 .../PriorityQueueCollisionSpiMBean.java         |   2 +-
 .../communication/tcp/TcpCommunicationSpi.java  | 536 ++++++++++++++++---
 .../deployment/local/LocalDeploymentSpi.java    |  24 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 437 ++++++++++++---
 .../ipfinder/TcpDiscoveryIpFinderAdapter.java   |   5 +-
 .../ipfinder/jdbc/TcpDiscoveryJdbcIpFinder.java |  17 +-
 .../TcpDiscoveryMulticastIpFinder.java          |  47 +-
 .../sharedfs/TcpDiscoverySharedFsIpFinder.java  |  12 +-
 .../tcp/ipfinder/vm/TcpDiscoveryVmIpFinder.java |  14 +-
 .../memory/MemoryEventStorageSpi.java           |  98 +++-
 .../spi/failover/always/AlwaysFailoverSpi.java  |  53 +-
 .../jobstealing/JobStealingFailoverSpi.java     |  68 ++-
 .../spi/failover/never/NeverFailoverSpi.java    |  30 +-
 .../spi/indexing/noop/NoopIndexingSpi.java      |   7 +
 .../adaptive/AdaptiveLoadBalancingSpi.java      |  43 +-
 .../roundrobin/RoundRobinLoadBalancingSpi.java  |  44 +-
 .../WeightedRandomLoadBalancingSpi.java         |  61 ++-
 .../spi/swapspace/file/FileSwapSpaceSpi.java    | 112 +++-
 .../spi/swapspace/noop/NoopSwapSpaceSpi.java    |   7 +
 .../gce/TcpDiscoveryGoogleStorageIpFinder.java  |  33 +-
 .../fs/IgniteHadoopIgfsSecondaryFileSystem.java |  10 +-
 .../IgniteHadoopWeightedMapReducePlanner.java   |  26 +-
 .../spi/deployment/uri/UriDeploymentSpi.java    |  80 ++-
 .../zk/TcpDiscoveryZookeeperIpFinder.java       |  37 +-
 79 files changed, 3935 insertions(+), 710 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/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 3d5954f..2330ef3 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
@@ -51,6 +51,7 @@ import org.apache.ignite.resources.LoggerResource;
 import org.apache.ignite.spi.IgniteSpiAdapter;
 import org.apache.ignite.spi.IgniteSpiConfiguration;
 import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.IgniteSpiMBeanAdapter;
 import org.apache.ignite.spi.IgniteSpiMultipleInstancesSupport;
 import org.apache.ignite.spi.IgniteSpiThread;
 import org.apache.ignite.spi.checkpoint.CheckpointListener;
@@ -122,7 +123,7 @@ import org.jetbrains.annotations.Nullable;
  * @see org.apache.ignite.spi.checkpoint.CheckpointSpi
  */
 @IgniteSpiMultipleInstancesSupport(true)
-public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi, S3CheckpointSpiMBean {
+public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi {
     /** Logger. */
     @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"})
     @LoggerResource
@@ -169,7 +170,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      *
      * @return S3 bucket name to use.
      */
-    @Override public String getBucketName() {
+    public String getBucketName() {
         return bucketName;
     }
 
@@ -178,7 +179,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      *
      * @return S3 access key.
      */
-    @Override public String getAccessKey() {
+    public String getAccessKey() {
         return cred.getAWSAccessKeyId();
     }
 
@@ -196,7 +197,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      *
      * @return HTTP proxy host.
      */
-    @Override public String getProxyHost() {
+    public String getProxyHost() {
         return cfg.getProxyHost();
     }
 
@@ -205,7 +206,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      *
      * @return HTTP proxy port.
      */
-    @Override public int getProxyPort() {
+    public int getProxyPort() {
         return cfg.getProxyPort();
     }
 
@@ -214,7 +215,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      *
      * @return HTTP proxy user name.
      */
-    @Override public String getProxyUsername() {
+    public String getProxyUsername() {
         return cfg.getProxyUsername();
     }
 
@@ -231,10 +232,13 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      * Sets bucket name suffix.
      *
      * @param bucketNameSuffix Bucket name suffix.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setBucketNameSuffix(String bucketNameSuffix) {
+    public S3CheckpointSpi setBucketNameSuffix(String bucketNameSuffix) {
         this.bucketNameSuffix = bucketNameSuffix;
+
+        return this;
     }
 
     /**
@@ -243,10 +247,13 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      * For details refer to Amazon S3 API reference.
      *
      * @param cfg Amazon client configuration.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setClientConfiguration(ClientConfiguration cfg) {
+    public S3CheckpointSpi setClientConfiguration(ClientConfiguration cfg) {
         this.cfg = cfg;
+
+        return this;
     }
 
     /**
@@ -255,10 +262,13 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
      * For details refer to Amazon S3 API reference.
      *
      * @param cred AWS credentials.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setAwsCredentials(AWSCredentials cred) {
+    public S3CheckpointSpi setAwsCredentials(AWSCredentials cred) {
         this.cred = cred;
+
+        return this;
     }
 
     /** {@inheritDoc} */
@@ -351,7 +361,7 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
 
         timeoutWrk.start();
 
-        registerMBean(igniteInstanceName, this, S3CheckpointSpiMBean.class);
+        registerMBean(igniteInstanceName, new S3CheckpointSpiMBeanImpl(this), S3CheckpointSpiMBean.class);
 
         // Ack ok start.
         if (log.isDebugEnabled())
@@ -570,6 +580,13 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
     }
 
     /** {@inheritDoc} */
+    @Override public S3CheckpointSpi setName(String name) {
+        super.setName(name);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(S3CheckpointSpi.class, this);
     }
@@ -702,4 +719,39 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi,
             return S.toString(S3TimeoutWorker.class, this);
         }
     }
+
+    /**
+     * MBean implementation for S3CheckpointSpi.
+     */
+    private class S3CheckpointSpiMBeanImpl extends IgniteSpiMBeanAdapter implements S3CheckpointSpiMBean {
+        /** {@inheritDoc} */
+        S3CheckpointSpiMBeanImpl(IgniteSpiAdapter spiAdapter) {
+            super(spiAdapter);
+        }
+
+        /** {@inheritDoc} */
+        @Override public String getBucketName() {
+            return S3CheckpointSpi.this.getBucketName();
+        }
+
+        /** {@inheritDoc} */
+        @Override public String getAccessKey() {
+            return S3CheckpointSpi.this.getAccessKey();
+        }
+
+        /** {@inheritDoc} */
+        @Override public String getProxyHost() {
+            return S3CheckpointSpi.this.getProxyHost();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getProxyPort() {
+            return S3CheckpointSpi.this.getProxyPort();
+        }
+
+        /** {@inheritDoc} */
+        @Override public String getProxyUsername() {
+            return S3CheckpointSpi.this.getProxyUsername();
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/aws/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java
----------------------------------------------------------------------
diff --git a/modules/aws/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java b/modules/aws/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java
index d9f50c2..2307a66 100644
--- a/modules/aws/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java
+++ b/modules/aws/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java
@@ -308,10 +308,13 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
      * Sets bucket name for IP finder.
      *
      * @param bucketName Bucket name.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setBucketName(String bucketName) {
+    public TcpDiscoveryS3IpFinder setBucketName(String bucketName) {
         this.bucketName = bucketName;
+
+        return this;
     }
 
     /**
@@ -320,10 +323,13 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
      * For details refer to Amazon S3 API reference.
      *
      * @param cfg Amazon client configuration.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setClientConfiguration(ClientConfiguration cfg) {
+    public TcpDiscoveryS3IpFinder setClientConfiguration(ClientConfiguration cfg) {
         this.cfg = cfg;
+
+        return this;
     }
 
     /**
@@ -332,10 +338,13 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
      * For details refer to Amazon S3 API reference.
      *
      * @param cred AWS credentials.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setAwsCredentials(AWSCredentials cred) {
+    public TcpDiscoveryS3IpFinder setAwsCredentials(AWSCredentials cred) {
         this.cred = cred;
+
+        return this;
     }
 
     /**
@@ -344,10 +353,20 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
      * For details refer to Amazon S3 API reference.
      *
      * @param credProvider AWS credentials provider.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setAwsCredentialsProvider(AWSCredentialsProvider credProvider) {
+    public TcpDiscoveryS3IpFinder setAwsCredentialsProvider(AWSCredentialsProvider credProvider) {
         this.credProvider = credProvider;
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public TcpDiscoveryS3IpFinder setShared(boolean shared) {
+        super.setShared(shared);
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/cloud/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinder.java
----------------------------------------------------------------------
diff --git a/modules/cloud/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinder.java b/modules/cloud/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinder.java
index 2c03557..1aa3790 100644
--- a/modules/cloud/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinder.java
+++ b/modules/cloud/src/main/java/org/apache/ignite/spi/discovery/tcp/ipfinder/cloud/TcpDiscoveryCloudIpFinder.java
@@ -36,6 +36,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 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.spi.IgniteSpiConfiguration;
 import org.apache.ignite.spi.IgniteSpiException;
@@ -230,10 +231,13 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * ComputeService section contains names of all supported providers.
      *
      * @param provider Provider name.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setProvider(String provider) {
+    public TcpDiscoveryCloudIpFinder setProvider(String provider) {
         this.provider = provider;
+
+        return this;
     }
 
     /**
@@ -244,10 +248,13 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * what is used as an identity for a particular cloud platform.
      *
      * @param identity Identity to use during authentication on the cloud.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = false)
-    public void setIdentity(String identity) {
+    public TcpDiscoveryCloudIpFinder setIdentity(String identity) {
         this.identity = identity;
+
+        return this;
     }
 
     /**
@@ -258,10 +265,13 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * what is used as an credential for a particular cloud platform.
      *
      * @param credential Credential to use during authentication on the cloud.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setCredential(String credential) {
+    public TcpDiscoveryCloudIpFinder setCredential(String credential) {
         this.credential = credential;
+
+        return this;
     }
 
     /**
@@ -275,10 +285,13 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * what is used as an credential for a particular cloud platform.
      *
      * @param credentialPath Path to the credential to use during authentication on the cloud.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setCredentialPath(String credentialPath) {
+    public TcpDiscoveryCloudIpFinder setCredentialPath(String credentialPath) {
         this.credentialPath = credentialPath;
+
+        return this;
     }
 
     /**
@@ -291,13 +304,14 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * providers a call to this method is redundant.
      *
      * @param zones Zones where VMs are located or null if to take every zone into account.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setZones(Collection<String> zones) {
-        if (F.isEmpty(zones))
-            return;
+    public TcpDiscoveryCloudIpFinder setZones(Collection<String> zones) {
+        if (!F.isEmpty(zones))
+            this.zones = new TreeSet<>(zones);
 
-        this.zones = new TreeSet<>(zones);
+        return this;
     }
 
     /**
@@ -310,13 +324,14 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
      * providers a call to this method is redundant.
      *
      * @param regions Regions where VMs are located or null if to check every region a provider has.
+     * @return {@code this} for chaining.
      */
     @IgniteSpiConfiguration(optional = true)
-    public void setRegions(Collection<String> regions) {
-        if (F.isEmpty(regions))
-            return;
+    public TcpDiscoveryCloudIpFinder setRegions(Collection<String> regions) {
+        if (!F.isEmpty(regions))
+            this.regions = new TreeSet<>(regions);
 
-        this.regions = new TreeSet<>(regions);
+        return this;
     }
 
     /**
@@ -452,4 +467,16 @@ public class TcpDiscoveryCloudIpFinder extends TcpDiscoveryIpFinderAdapter {
 
         return builder.toString();
     }
+
+    /** {@inheritDoc} */
+    @Override public TcpDiscoveryCloudIpFinder setShared(boolean shared) {
+        super.setShared(shared);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(TcpDiscoveryCloudIpFinder.class, this);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicIdMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicIdMapper.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicIdMapper.java
index da31751..53ad9b6 100644
--- a/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicIdMapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicIdMapper.java
@@ -114,9 +114,12 @@ public class BinaryBasicIdMapper implements BinaryIdMapper {
      * Sets whether to use strings in lower case or not.
      *
      * @param isLowerCase Whether to use strings in lower case or not.
+     * @return {@code this} for chaining.
      */
-    public void setLowerCase(boolean isLowerCase) {
+    public BinaryBasicIdMapper setLowerCase(boolean isLowerCase) {
         this.isLowerCase = isLowerCase;
+
+        return this;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicNameMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicNameMapper.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicNameMapper.java
index 42d6b5b..bc338b4 100644
--- a/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicNameMapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryBasicNameMapper.java
@@ -58,9 +58,12 @@ public class BinaryBasicNameMapper implements BinaryNameMapper {
      * Sets whether to use simple name of class or not.
      *
      * @param isSimpleName Whether to use simple name of class or not.
+     * @return {@code this} for chaining.
      */
-    public void setSimpleName(boolean isSimpleName) {
+    public BinaryBasicNameMapper setSimpleName(boolean isSimpleName) {
         this.isSimpleName = isSimpleName;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
index d95e0ae..1b2d828 100644
--- a/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
@@ -91,9 +91,12 @@ public class BinaryTypeConfiguration {
      * Sets type name.
      *
      * @param typeName Type name.
+     * @return {@code this} for chaining.
      */
-    public void setTypeName(String typeName) {
+    public BinaryTypeConfiguration setTypeName(String typeName) {
         this.typeName = typeName;
+
+        return this;
     }
 
     /**
@@ -109,9 +112,12 @@ public class BinaryTypeConfiguration {
      * Sets ID mapper.
      *
      * @param idMapper ID mapper.
+     * @return {@code this} for chaining.
      */
-    public void setIdMapper(BinaryIdMapper idMapper) {
+    public BinaryTypeConfiguration setIdMapper(BinaryIdMapper idMapper) {
         this.idMapper = idMapper;
+
+        return this;
     }
 
     /**
@@ -127,9 +133,12 @@ public class BinaryTypeConfiguration {
      * Sets name mapper.
      *
      * @param nameMapper Name mapper.
+     * @return {@code this} for chaining.
      */
-    public void setNameMapper(BinaryNameMapper nameMapper) {
+    public BinaryTypeConfiguration setNameMapper(BinaryNameMapper nameMapper) {
         this.nameMapper = nameMapper;
+
+        return this;
     }
 
     /**
@@ -145,9 +154,12 @@ public class BinaryTypeConfiguration {
      * Sets serializer.
      *
      * @param serializer Serializer.
+     * @return {@code this} for chaining.
      */
-    public void setSerializer(BinarySerializer serializer) {
+    public BinaryTypeConfiguration setSerializer(BinarySerializer serializer) {
         this.serializer = serializer;
+
+        return this;
     }
 
     /**
@@ -163,9 +175,12 @@ public class BinaryTypeConfiguration {
      * Sets identity resolver.
      *
      * @param identityRslvr Identity resolver.
+     * @return {@code this} for chaining.
      */
-    public void setIdentityResolver(@Nullable BinaryIdentityResolver identityRslvr) {
+    public BinaryTypeConfiguration setIdentityResolver(@Nullable BinaryIdentityResolver identityRslvr) {
         this.identityRslvr = identityRslvr;
+
+        return this;
     }
 
     /**
@@ -181,9 +196,12 @@ public class BinaryTypeConfiguration {
      * Sets whether this is enum type.
      *
      * @param isEnum {@code True} if enum.
+     * @return {@code this} for chaining.
      */
-    public void setEnum(boolean isEnum) {
+    public BinaryTypeConfiguration setEnum(boolean isEnum) {
         this.isEnum = isEnum;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java
index f117847..33e5881 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheKeyConfiguration.java
@@ -81,9 +81,12 @@ public class CacheKeyConfiguration implements Serializable {
 
     /**
      * @param typeName Type name for which affinity field name is being defined.
+     * @return {@code this} for chaining.
      */
-    public void setTypeName(String typeName) {
+    public CacheKeyConfiguration setTypeName(String typeName) {
         this.typeName = typeName;
+
+        return this;
     }
 
     /**
@@ -99,9 +102,12 @@ public class CacheKeyConfiguration implements Serializable {
      * Sets affinity key field name.
      *
      * @param affKeyFieldName Affinity key field name.
+     * @return {@code this} for chaining.
      */
-    public void setAffinityKeyFieldName(String affKeyFieldName) {
+    public CacheKeyConfiguration setAffinityKeyFieldName(String affKeyFieldName) {
         this.affKeyFieldName = affKeyFieldName;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
index 48cdae5..f791c1c 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/QueryEntity.java
@@ -86,9 +86,12 @@ public class QueryEntity implements Serializable {
      * Sets key type for this query pair.
      *
      * @param keyType Key type.
+     * @return {@code this} for chaining.
      */
-    public void setKeyType(String keyType) {
+    public QueryEntity setKeyType(String keyType) {
         this.keyType = keyType;
+
+        return this;
     }
 
     /**
@@ -104,9 +107,12 @@ public class QueryEntity implements Serializable {
      * Sets value type for this query pair.
      *
      * @param valType Value type.
+     * @return {@code this} for chaining.
      */
-    public void setValueType(String valType) {
+    public QueryEntity setValueType(String valType) {
         this.valType = valType;
+
+        return this;
     }
 
     /**
@@ -124,9 +130,12 @@ public class QueryEntity implements Serializable {
      * order of columns returned by the 'select *' queries.
      *
      * @param fields Field-to-type map.
+     * @return {@code this} for chaining.
      */
-    public void setFields(LinkedHashMap<String, String> fields) {
+    public QueryEntity setFields(LinkedHashMap<String, String> fields) {
         this.fields = fields;
+
+        return this;
     }
 
     /**
@@ -146,9 +155,12 @@ public class QueryEntity implements Serializable {
      * Thus, setting this parameter in XML is not mandatory and should be based on particular use case.
      *
      * @param keyFields Set of names of key fields.
+     * @return {@code this} for chaining.
      */
-    public void setKeyFields(Set<String> keyFields) {
+    public QueryEntity setKeyFields(Set<String> keyFields) {
         this.keyFields = keyFields;
+
+        return this;
     }
 
     /**
@@ -174,17 +186,21 @@ public class QueryEntity implements Serializable {
      * Example: {"parent.name" -> "parentName"}.
      *
      * @param aliases Aliases map.
+     * @return {@code this} for chaining.
      */
-    public void setAliases(Map<String, String> aliases) {
+    public QueryEntity setAliases(Map<String, String> aliases) {
         this.aliases = aliases;
+
+        return this;
     }
 
     /**
      * Sets a collection of index entities.
      *
      * @param idxs Collection of index entities.
+     * @return {@code this} for chaining.
      */
-    public void setIndexes(Collection<QueryIndex> idxs) {
+    public QueryEntity setIndexes(Collection<QueryIndex> idxs) {
         for (QueryIndex idx : idxs) {
             if (!F.isEmpty(idx.getFields())) {
                 if (idx.getName() == null)
@@ -199,6 +215,8 @@ public class QueryEntity implements Serializable {
                     throw new IllegalArgumentException("Duplicate index name: " + idx.getName());
             }
         }
+
+        return this;
     }
 
     /**
@@ -220,8 +238,9 @@ public class QueryEntity implements Serializable {
 
     /**
      * Utility method for building query entities programmatically.
+     * @return {@code this} for chaining.
      */
-    public void addQueryField(String fullName, String type, String alias) {
+    public QueryEntity addQueryField(String fullName, String type, String alias) {
         A.notNull(fullName, "fullName");
         A.notNull(type, "type");
 
@@ -229,6 +248,8 @@ public class QueryEntity implements Serializable {
 
         if (alias != null)
             aliases.put(fullName, alias);
+
+        return this;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
index 7acb5b4..c406ba6 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
@@ -196,11 +196,14 @@ public class FairAffinityFunction implements AffinityFunction {
      * Sets total number of partitions.
      *
      * @param parts Total number of partitions.
+     * @return {@code this} for chaining.
      */
-    public void setPartitions(int parts) {
+    public FairAffinityFunction setPartitions(int parts) {
         A.ensure(parts <= CacheConfiguration.MAX_PARTITIONS_COUNT, "parts <= " + CacheConfiguration.MAX_PARTITIONS_COUNT);
 
         this.parts = parts;
+
+        return this;
     }
 
 
@@ -226,10 +229,13 @@ public class FairAffinityFunction implements AffinityFunction {
      *
      * @param backupFilter Optional backup filter.
      * @deprecated Use {@code affinityBackupFilter} instead.
+     * @return {@code this} for chaining.
      */
     @Deprecated
-    public void setBackupFilter(@Nullable IgniteBiPredicate<ClusterNode, ClusterNode> backupFilter) {
+    public FairAffinityFunction setBackupFilter(@Nullable IgniteBiPredicate<ClusterNode, ClusterNode> backupFilter) {
         this.backupFilter = backupFilter;
+
+        return this;
     }
 
     /**
@@ -253,9 +259,13 @@ public class FairAffinityFunction implements AffinityFunction {
      * Note that {@code affinityBackupFilter} is ignored if {@code excludeNeighbors} is set to {@code true}.
      *
      * @param affinityBackupFilter Optional backup filter.
+     * @return {@code this} for chaining.
      */
-    public void setAffinityBackupFilter(@Nullable IgniteBiPredicate<ClusterNode, List<ClusterNode>> affinityBackupFilter) {
+    public FairAffinityFunction setAffinityBackupFilter(
+        @Nullable IgniteBiPredicate<ClusterNode, List<ClusterNode>> affinityBackupFilter) {
         this.affinityBackupFilter = affinityBackupFilter;
+
+        return this;
     }
 
     /**
@@ -275,9 +285,12 @@ public class FairAffinityFunction implements AffinityFunction {
      * Note that {@code backupFilter} is ignored if {@code excludeNeighbors} is set to {@code true}.
      *
      * @param exclNeighbors {@code True} if nodes residing on the same host may not act as backups of each other.
+     * @return {@code this} for chaining.
      */
-    public void setExcludeNeighbors(boolean exclNeighbors) {
+    public FairAffinityFunction setExcludeNeighbors(boolean exclNeighbors) {
         this.exclNeighbors = exclNeighbors;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
index 3d21dd5..0fee1af 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
@@ -219,11 +219,14 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
      * Sets total number of partitions.
      *
      * @param parts Total number of partitions.
+     * @return {@code this} for chaining.
      */
-    public void setPartitions(int parts) {
+    public RendezvousAffinityFunction setPartitions(int parts) {
         A.ensure(parts <= CacheConfiguration.MAX_PARTITIONS_COUNT, "parts <= " + CacheConfiguration.MAX_PARTITIONS_COUNT);
 
         this.parts = parts;
+
+        return this;
     }
 
     /**
@@ -256,10 +259,13 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
      * @param hashIdRslvr Hash ID resolver.
      *
      * @deprecated Use {@link IgniteConfiguration#setConsistentId(Serializable)} instead.
+     * @return {@code this} for chaining.
      */
     @Deprecated
-    public void setHashIdResolver(AffinityNodeHashResolver hashIdRslvr) {
+    public RendezvousAffinityFunction setHashIdResolver(AffinityNodeHashResolver hashIdRslvr) {
         this.hashIdRslvr = hashIdRslvr;
+
+        return this;
     }
 
     /**
@@ -284,10 +290,14 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
      *
      * @param backupFilter Optional backup filter.
      * @deprecated Use {@code affinityBackupFilter} instead.
+     * @return {@code this} for chaining.
      */
     @Deprecated
-    public void setBackupFilter(@Nullable IgniteBiPredicate<ClusterNode, ClusterNode> backupFilter) {
+    public RendezvousAffinityFunction setBackupFilter(
+        @Nullable IgniteBiPredicate<ClusterNode, ClusterNode> backupFilter) {
         this.backupFilter = backupFilter;
+
+        return this;
     }
 
     /**
@@ -311,9 +321,13 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
      * Note that {@code affinityBackupFilter} is ignored if {@code excludeNeighbors} is set to {@code true}.
      *
      * @param affinityBackupFilter Optional backup filter.
+     * @return {@code this} for chaining.
      */
-    public void setAffinityBackupFilter(@Nullable IgniteBiPredicate<ClusterNode, List<ClusterNode>> affinityBackupFilter) {
+    public RendezvousAffinityFunction setAffinityBackupFilter(
+        @Nullable IgniteBiPredicate<ClusterNode, List<ClusterNode>> affinityBackupFilter) {
         this.affinityBackupFilter = affinityBackupFilter;
+
+        return this;
     }
 
     /**
@@ -333,9 +347,12 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
      * Note that {@code backupFilter} is ignored if {@code excludeNeighbors} is set to {@code true}.
      *
      * @param exclNeighbors {@code True} if nodes residing on the same host may not act as backups of each other.
+     * @return {@code this} for chaining.
      */
-    public void setExcludeNeighbors(boolean exclNeighbors) {
+    public RendezvousAffinityFunction setExcludeNeighbors(boolean exclNeighbors) {
         this.exclNeighbors = exclNeighbors;
+
+        return this;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/AbstractEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/AbstractEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/AbstractEvictionPolicy.java
index cf0aa1f..d282f27 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/AbstractEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/AbstractEvictionPolicy.java
@@ -122,11 +122,14 @@ public abstract class AbstractEvictionPolicy<K, V> implements EvictionPolicy<K,
 
     /**
      * Sets maximum allowed cache size in bytes.
+     * @return {@code this} for chaining.
      */
-    public void setMaxMemorySize(long maxMemSize) {
+    public AbstractEvictionPolicy<K, V> setMaxMemorySize(long maxMemSize) {
         A.ensure(maxMemSize >= 0, "maxMemSize >= 0");
 
         this.maxMemSize = maxMemSize;
+
+        return this;
     }
 
     /**
@@ -151,11 +154,14 @@ public abstract class AbstractEvictionPolicy<K, V> implements EvictionPolicy<K,
      * Sets maximum allowed size of cache before entry will start getting evicted.
      *
      * @param max Maximum allowed size of cache before entry will start getting evicted.
+     * @return {@code this} for chaining.
      */
-    public void setMaxSize(int max) {
+    public AbstractEvictionPolicy<K, V>  setMaxSize(int max) {
         A.ensure(max >= 0, "max >= 0");
 
         this.max = max;
+
+        return this;
     }
 
     /**
@@ -171,11 +177,14 @@ public abstract class AbstractEvictionPolicy<K, V> implements EvictionPolicy<K,
      * Sets batch size.
      *
      * @param batchSize Batch size.
+     * @return {@code this} for chaining.
      */
-    public void setBatchSize(int batchSize) {
+    public AbstractEvictionPolicy<K, V>  setBatchSize(int batchSize) {
         A.ensure(batchSize > 0, "batchSize > 0");
 
         this.batchSize = batchSize;
+
+        return this;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
index f95a588..68495db 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java
@@ -22,6 +22,7 @@ import java.util.Collections;
 import org.apache.ignite.cache.eviction.AbstractEvictionPolicy;
 import org.apache.ignite.cache.eviction.EvictableEntry;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.mxbean.IgniteMBeanAware;
 import org.jsr166.ConcurrentLinkedDeque8;
 import org.jsr166.ConcurrentLinkedDeque8.Node;
 
@@ -43,7 +44,7 @@ import org.jsr166.ConcurrentLinkedDeque8.Node;
  * table-like data structures. The {@code FIFO} ordering information is
  * maintained by attaching ordering metadata to cache entries.
  */
-public class FifoEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements FifoEvictionPolicyMBean {
+public class FifoEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements IgniteMBeanAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -83,6 +84,27 @@ public class FifoEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imple
         return queue.sizex();
     }
 
+    /** {@inheritDoc} */
+    @Override public FifoEvictionPolicy<K, V> setMaxMemorySize(long maxMemSize) {
+        super.setMaxMemorySize(maxMemSize);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public FifoEvictionPolicy<K, V> setMaxSize(int max) {
+        super.setMaxSize(max);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public FifoEvictionPolicy<K, V> setBatchSize(int batchSize) {
+        super.setBatchSize(batchSize);
+
+        return this;
+    }
+
     /**
      * Gets read-only view on internal {@code FIFO} queue in proper order.
      *
@@ -167,7 +189,57 @@ public class FifoEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imple
     }
 
     /** {@inheritDoc} */
+    @Override public Object getMBean() {
+        return new FifoEvictionPolicyMBeanImpl();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(FifoEvictionPolicy.class, this);
     }
+
+    /**
+     * MBean implementation for FifoEvictionPolicy.
+     */
+    private class FifoEvictionPolicyMBeanImpl implements FifoEvictionPolicyMBean {
+        /** {@inheritDoc} */
+        @Override public long getCurrentMemorySize() {
+            return FifoEvictionPolicy.this.getCurrentMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getCurrentSize() {
+            return FifoEvictionPolicy.this.getCurrentSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getMaxSize() {
+            return FifoEvictionPolicy.this.getMaxSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxSize(int max) {
+            FifoEvictionPolicy.this.setMaxSize(max);
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getBatchSize() {
+            return FifoEvictionPolicy.this.getBatchSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setBatchSize(int batchSize) {
+            FifoEvictionPolicy.this.setBatchSize(batchSize);
+        }
+
+        /** {@inheritDoc} */
+        @Override public long getMaxMemorySize() {
+            return FifoEvictionPolicy.this.getMaxMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxMemorySize(long maxMemSize) {
+            FifoEvictionPolicy.this.setMaxMemorySize(maxMemSize);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicyMBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicyMBean.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicyMBean.java
index 2615bbf..06f281f 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicyMBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicyMBean.java
@@ -74,6 +74,8 @@ public interface FifoEvictionPolicyMBean {
 
     /**
      * Sets maximum allowed cache size in bytes.
+     *
+     * @param maxMemSize Maximum memory size.
      */
     @MXBeanDescription("Set maximum allowed cache size in bytes.")
     public void setMaxMemorySize(long maxMemSize);

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java
index a82d541..df3c73f 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java
@@ -33,6 +33,7 @@ import org.apache.ignite.cache.eviction.EvictionPolicy;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.processors.cache.CacheEvictableEntryImpl;
 import org.apache.ignite.internal.processors.igfs.IgfsBlockKey;
+import org.apache.ignite.mxbean.IgniteMBeanAware;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentLinkedDeque8;
 import org.jsr166.ConcurrentLinkedDeque8.Node;
@@ -41,8 +42,8 @@ import org.jsr166.LongAdder8;
 /**
  * IGFS eviction policy which evicts particular blocks.
  */
-public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKey, byte[]>,
-    IgfsPerBlockLruEvictionPolicyMXBean, Externalizable {
+public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKey, byte[]>, IgniteMBeanAware,
+    Externalizable {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -237,49 +238,98 @@ public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKe
             curSize.add(delta);
     }
 
-    /** {@inheritDoc} */
-    @Override public long getMaxSize() {
+    /**
+     * Gets maximum allowed size of all blocks in bytes.
+     *
+     * @return Maximum allowed size of all blocks in bytes.
+     */
+    public long getMaxSize() {
         return maxSize;
     }
 
-    /** {@inheritDoc} */
-    @Override public void setMaxSize(long maxSize) {
+    /**
+     * Sets maximum allowed size of data in all blocks in bytes.
+     *
+     * @param maxSize Maximum allowed size of data in all blocks in bytes.
+     *
+     * @return {@code this} for chaining.
+     */
+    public IgfsPerBlockLruEvictionPolicy setMaxSize(long maxSize) {
         this.maxSize = maxSize;
+
+        return this;
     }
 
-    /** {@inheritDoc} */
-    @Override public int getMaxBlocks() {
+    /**
+     * Gets maximum allowed amount of blocks.
+     *
+     * @return Maximum allowed amount of blocks.
+     */
+    public int getMaxBlocks() {
         return maxBlocks;
     }
 
-    /** {@inheritDoc} */
-    @Override public void setMaxBlocks(int maxBlocks) {
+    /**
+     * Sets maximum allowed amount of blocks.
+     *
+     * @param maxBlocks Maximum allowed amount of blocks.
+     *
+     * @return {@code this} for chaining.
+     */
+    public IgfsPerBlockLruEvictionPolicy setMaxBlocks(int maxBlocks) {
         this.maxBlocks = maxBlocks;
+
+        return this;
     }
 
-    /** {@inheritDoc} */
-    @Override public Collection<String> getExcludePaths() {
+    /**
+     * Gets collection of regex for paths whose blocks must not be evicted.
+     *
+     * @return Collection of regex for paths whose blocks must not be evicted.
+     */
+    public Collection<String> getExcludePaths() {
         return Collections.unmodifiableCollection(excludePaths);
     }
 
-    /** {@inheritDoc} */
-    @Override public void setExcludePaths(@Nullable Collection<String> excludePaths) {
+    /**
+     * Sets collection of regex for paths whose blocks must not be evicted.
+     *
+     * @param excludePaths Collection of regex for paths whose blocks must not be evicted.
+     *
+     * @return {@code this} for chaining.
+     */
+    public IgfsPerBlockLruEvictionPolicy setExcludePaths(@Nullable Collection<String> excludePaths) {
         this.excludePaths = excludePaths;
 
         excludeRecompile.set(true);
+
+        return this;
     }
 
-    /** {@inheritDoc} */
-    @Override public long getCurrentSize() {
+    /**
+     * Gets current size of data in all blocks.
+     *
+     * @return Current size of data in all blocks.
+     */
+    public long getCurrentSize() {
         return curSize.longValue();
     }
 
-    /** {@inheritDoc} */
-    @Override public int getCurrentBlocks() {
+    /**
+     * Gets current amount of blocks.
+     *
+     * @return Current amount of blocks.
+     */
+    public int getCurrentBlocks() {
         return queue.size();
     }
 
     /** {@inheritDoc} */
+    @Override public Object getMBean() {
+        return new IgfsPerBlockLruEvictionPolicyMXBeanImpl();
+    }
+
+    /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         out.writeLong(maxSize);
         out.writeInt(maxBlocks);
@@ -381,4 +431,49 @@ public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKe
             return size;
         }
     }
+
+    /**
+     * MBean implementation for IgfsPerBlockLruEvictionPolicy.
+     */
+    private class IgfsPerBlockLruEvictionPolicyMXBeanImpl implements IgfsPerBlockLruEvictionPolicyMXBean {
+        /** {@inheritDoc} */
+        @Override public long getMaxSize() {
+            return IgfsPerBlockLruEvictionPolicy.this.getMaxSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxSize(long maxSize) {
+            IgfsPerBlockLruEvictionPolicy.this.setMaxSize(maxSize);
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getMaxBlocks() {
+            return IgfsPerBlockLruEvictionPolicy.this.getMaxBlocks();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxBlocks(int maxBlocks) {
+            IgfsPerBlockLruEvictionPolicy.this.setMaxBlocks(maxBlocks);
+        }
+
+        /** {@inheritDoc} */
+        @Nullable @Override public Collection<String> getExcludePaths() {
+            return IgfsPerBlockLruEvictionPolicy.this.getExcludePaths();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setExcludePaths(@Nullable Collection<String> excludePaths) {
+            IgfsPerBlockLruEvictionPolicy.this.setExcludePaths(excludePaths);
+        }
+
+        /** {@inheritDoc} */
+        @Override public long getCurrentSize() {
+            return IgfsPerBlockLruEvictionPolicy.this.getCurrentSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getCurrentBlocks() {
+            return IgfsPerBlockLruEvictionPolicy.this.getCurrentBlocks();
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
index 17835f1..d571e8c 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java
@@ -22,6 +22,7 @@ import java.util.Collections;
 import org.apache.ignite.cache.eviction.AbstractEvictionPolicy;
 import org.apache.ignite.cache.eviction.EvictableEntry;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.mxbean.IgniteMBeanAware;
 import org.jsr166.ConcurrentLinkedDeque8;
 import org.jsr166.ConcurrentLinkedDeque8.Node;
 
@@ -42,7 +43,7 @@ import org.jsr166.ConcurrentLinkedDeque8.Node;
  * This implementation is very efficient since it is lock-free and does not create any additional table-like
  * data structures. The {@code LRU} ordering information is maintained by attaching ordering metadata to cache entries.
  */
-public class LruEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements LruEvictionPolicyMBean {
+public class LruEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements IgniteMBeanAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -71,6 +72,27 @@ public class LruEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implem
         return queue.sizex();
     }
 
+    /** {@inheritDoc} */
+    @Override public LruEvictionPolicy<K, V> setMaxMemorySize(long maxMemSize) {
+        super.setMaxMemorySize(maxMemSize);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public LruEvictionPolicy<K, V> setMaxSize(int max) {
+        super.setMaxSize(max);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public LruEvictionPolicy<K, V> setBatchSize(int batchSize) {
+        super.setBatchSize(batchSize);
+
+        return this;
+    }
+
     /**
      * Gets read-only view on internal {@code FIFO} queue in proper order.
      *
@@ -163,7 +185,57 @@ public class LruEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implem
     }
 
     /** {@inheritDoc} */
+    @Override public Object getMBean() {
+        return new LruEvictionPolicyMBeanImpl();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(LruEvictionPolicy.class, this, "size", getCurrentSize());
     }
+
+    /**
+     * MBean implementation for LruEvictionPolicy.
+     */
+    private class LruEvictionPolicyMBeanImpl implements LruEvictionPolicyMBean {
+        /** {@inheritDoc} */
+        @Override public long getCurrentMemorySize() {
+            return LruEvictionPolicy.this.getCurrentMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getCurrentSize() {
+            return LruEvictionPolicy.this.getCurrentSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getMaxSize() {
+            return LruEvictionPolicy.this.getMaxSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxSize(int max) {
+            LruEvictionPolicy.this.setMaxSize(max);
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getBatchSize() {
+            return LruEvictionPolicy.this.getBatchSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setBatchSize(int batchSize) {
+            LruEvictionPolicy.this.setBatchSize(batchSize);
+        }
+
+        /** {@inheritDoc} */
+        @Override public long getMaxMemorySize() {
+            return LruEvictionPolicy.this.getMaxMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxMemorySize(long maxMemSize) {
+            LruEvictionPolicy.this.setMaxMemorySize(maxMemSize);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
index d0cc975..4b8ac2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java
@@ -32,6 +32,7 @@ import org.apache.ignite.cache.eviction.AbstractEvictionPolicy;
 import org.apache.ignite.cache.eviction.EvictableEntry;
 import org.apache.ignite.internal.util.GridConcurrentSkipListSet;
 import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.mxbean.IgniteMBeanAware;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.LongAdder8;
 
@@ -58,7 +59,7 @@ import static org.apache.ignite.configuration.CacheConfiguration.DFLT_CACHE_SIZE
  * <p>
  * User defined comparator should implement {@link Serializable} interface.
  */
-public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements SortedEvictionPolicyMBean {
+public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> implements IgniteMBeanAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -122,6 +123,27 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
         this.set = new GridConcurrentSkipListSetEx<>(this.comp);
     }
 
+    /** {@inheritDoc} */
+    @Override public SortedEvictionPolicy<K, V> setMaxMemorySize(long maxMemSize) {
+        super.setMaxMemorySize(maxMemSize);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public SortedEvictionPolicy<K, V> setMaxSize(int max) {
+        super.setMaxSize(max);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public SortedEvictionPolicy<K, V> setBatchSize(int batchSize) {
+        super.setBatchSize(batchSize);
+
+        return this;
+    }
+
     /**
      * Gets read-only view of backed queue in proper order.
      *
@@ -210,6 +232,11 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
     }
 
     /** {@inheritDoc} */
+    @Override public Object getMBean() {
+        return new SortedEvictionPolicyMBeanImpl();
+    }
+
+    /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         super.writeExternal(out);
 
@@ -401,4 +428,49 @@ public class SortedEvictionPolicy<K, V> extends AbstractEvictionPolicy<K, V> imp
             return e;
         }
     }
+
+    /**
+     * MBean implementation for SortedEvictionPolicy.
+     */
+    private class SortedEvictionPolicyMBeanImpl implements SortedEvictionPolicyMBean {
+        /** {@inheritDoc} */
+        @Override public long getCurrentMemorySize() {
+            return SortedEvictionPolicy.this.getCurrentMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getCurrentSize() {
+            return SortedEvictionPolicy.this.getCurrentSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getMaxSize() {
+            return SortedEvictionPolicy.this.getMaxSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxSize(int max) {
+            SortedEvictionPolicy.this.setMaxSize(max);
+        }
+
+        /** {@inheritDoc} */
+        @Override public int getBatchSize() {
+            return SortedEvictionPolicy.this.getBatchSize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setBatchSize(int batchSize) {
+            SortedEvictionPolicy.this.setBatchSize(batchSize);
+        }
+
+        /** {@inheritDoc} */
+        @Override public long getMaxMemorySize() {
+            return SortedEvictionPolicy.this.getMaxMemorySize();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void setMaxMemorySize(long maxMemSize) {
+            SortedEvictionPolicy.this.setMaxMemorySize(maxMemSize);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
index 6649b5e..573e803 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
@@ -54,9 +54,12 @@ public class AtomicConfiguration {
 
     /**
      * @param backups Number of backup nodes.
+     * @return {@code this} for chaining.
      */
-    public void setBackups(int backups) {
+    public AtomicConfiguration setBackups(int backups) {
         this.backups = backups;
+
+        return this;
     }
 
     /**
@@ -68,9 +71,12 @@ public class AtomicConfiguration {
 
     /**
      * @param cacheMode Cache mode.
+     * @return {@code this} for chaining.
      */
-    public void setCacheMode(CacheMode cacheMode) {
+    public AtomicConfiguration setCacheMode(CacheMode cacheMode) {
         this.cacheMode = cacheMode;
+
+        return this;
     }
 
     /**
@@ -93,9 +99,12 @@ public class AtomicConfiguration {
      *
      * @param seqReserveSize Atomic sequence reservation size.
      * @see #getAtomicSequenceReserveSize()
+     * @return {@code this} for chaining.
      */
-    public void setAtomicSequenceReserveSize(int seqReserveSize) {
+    public AtomicConfiguration setAtomicSequenceReserveSize(int seqReserveSize) {
         this.seqReserveSize = seqReserveSize;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java
index 30d77de..54bfc40 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/BinaryConfiguration.java
@@ -52,13 +52,16 @@ public class BinaryConfiguration {
      * Sets class names of binary objects explicitly.
      *
      * @param clsNames Class names.
+     * @return {@code this} for chaining.
      */
-    public void setClassNames(Collection<String> clsNames) {
+    public BinaryConfiguration setClassNames(Collection<String> clsNames) {
         if (typeCfgs == null)
             typeCfgs = new ArrayList<>(clsNames.size());
 
         for (String clsName : clsNames)
             typeCfgs.add(new BinaryTypeConfiguration(clsName));
+
+        return this;
     }
 
     /**
@@ -74,9 +77,12 @@ public class BinaryConfiguration {
      * Sets ID mapper.
      *
      * @param idMapper ID mapper.
+     * @return {@code this} for chaining.
      */
-    public void setIdMapper(BinaryIdMapper idMapper) {
+    public BinaryConfiguration setIdMapper(BinaryIdMapper idMapper) {
         this.idMapper = idMapper;
+
+        return this;
     }
 
     /**
@@ -92,9 +98,12 @@ public class BinaryConfiguration {
      * Sets name mapper.
      *
      * @param nameMapper Name mapper.
+     * @return {@code this} for chaining.
      */
-    public void setNameMapper(BinaryNameMapper nameMapper) {
+    public BinaryConfiguration setNameMapper(BinaryNameMapper nameMapper) {
         this.nameMapper = nameMapper;
+
+        return this;
     }
 
     /**
@@ -110,9 +119,12 @@ public class BinaryConfiguration {
      * Sets serializer.
      *
      * @param serializer Serializer.
+     * @return {@code this} for chaining.
      */
-    public void setSerializer(BinarySerializer serializer) {
+    public BinaryConfiguration setSerializer(BinarySerializer serializer) {
         this.serializer = serializer;
+
+        return this;
     }
 
     /**
@@ -128,9 +140,12 @@ public class BinaryConfiguration {
      * Sets type configurations.
      *
      * @param typeCfgs Type configurations.
+     * @return {@code this} for chaining.
      */
-    public void setTypeConfigurations(Collection<BinaryTypeConfiguration> typeCfgs) {
+    public BinaryConfiguration setTypeConfigurations(Collection<BinaryTypeConfiguration> typeCfgs) {
         this.typeCfgs = typeCfgs;
+
+        return this;
     }
 
     /**
@@ -155,9 +170,12 @@ public class BinaryConfiguration {
      * Set whether to write footers in compact form. See {@link #isCompactFooter()} for more info.
      *
      * @param compactFooter Whether to write footers in compact form.
+     * @return {@code this} for chaining.
      */
-    public void setCompactFooter(boolean compactFooter) {
+    public BinaryConfiguration setCompactFooter(boolean compactFooter) {
         this.compactFooter = compactFooter;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index a47f07c..c4fc98b 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -40,6 +40,8 @@ import javax.cache.configuration.CompleteConfiguration;
 import javax.cache.configuration.Factory;
 import javax.cache.configuration.MutableConfiguration;
 import javax.cache.expiry.ExpiryPolicy;
+import javax.cache.integration.CacheLoader;
+import javax.cache.integration.CacheWriter;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheAtomicWriteOrderMode;
@@ -940,9 +942,12 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      * Sets keep binary in store flag.
      *
      * @param storeKeepBinary Keep binary in store flag.
+     * @return {@code this} for chaining.
      */
-    public void setStoreKeepBinary(boolean storeKeepBinary) {
+    public CacheConfiguration<K, V> setStoreKeepBinary(boolean storeKeepBinary) {
         this.storeKeepBinary = storeKeepBinary;
+
+        return this;
     }
 
     /**
@@ -2474,6 +2479,70 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
     }
 
     /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setStatisticsEnabled(boolean enabled) {
+        super.setStatisticsEnabled(enabled);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setManagementEnabled(boolean enabled) {
+        super.setManagementEnabled(enabled);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setCacheLoaderFactory(Factory<? extends CacheLoader<K, V>> factory) {
+        super.setCacheLoaderFactory(factory);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setCacheWriterFactory(
+        Factory<? extends CacheWriter<? super K, ? super V>> factory) {
+        super.setCacheWriterFactory(factory);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setExpiryPolicyFactory(Factory<? extends ExpiryPolicy> factory) {
+        super.setExpiryPolicyFactory(factory);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setTypes(Class<K> keyType, Class<V> valueType) {
+        super.setTypes(keyType, valueType);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setReadThrough(boolean isReadThrough) {
+        super.setReadThrough(isReadThrough);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setWriteThrough(boolean isWriteThrough) {
+        super.setWriteThrough(isWriteThrough);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
+    @Override public CacheConfiguration<K, V> setStoreByValue(boolean isStoreByValue) {
+        super.setStoreByValue(isStoreByValue);
+
+        return this;
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(CacheConfiguration.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
index 5ea5074..7b79c58 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CollectionConfiguration.java
@@ -68,9 +68,13 @@ public class CollectionConfiguration implements Serializable {
      * @param collocated If {@code true} then all items within the same collection will be collocated on the same node.
      *      Otherwise elements of the same set maybe be cached on different nodes. This parameter works only
      *      collections stored in {@link CacheMode#PARTITIONED} cache.
+     *
+     * @return {@code this} for chaining.
      */
-    public void setCollocated(boolean collocated) {
+    public CollectionConfiguration setCollocated(boolean collocated) {
         this.collocated = collocated;
+
+        return this;
     }
 
     /**
@@ -82,9 +86,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param atomicityMode Cache atomicity mode.
+     * @return {@code this} for chaining.
      */
-    public void setAtomicityMode(CacheAtomicityMode atomicityMode) {
+    public CollectionConfiguration setAtomicityMode(CacheAtomicityMode atomicityMode) {
         this.atomicityMode = atomicityMode;
+
+        return this;
     }
 
     /**
@@ -96,9 +103,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param cacheMode Cache mode.
+     * @return {@code this} for chaining.
      */
-    public void setCacheMode(CacheMode cacheMode) {
+    public CollectionConfiguration setCacheMode(CacheMode cacheMode) {
         this.cacheMode = cacheMode;
+
+        return this;
     }
 
     /**
@@ -110,9 +120,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param memoryMode Memory mode.
+     * @return {@code this} for chaining.
      */
-    public void setMemoryMode(CacheMemoryMode memoryMode) {
+    public CollectionConfiguration setMemoryMode(CacheMemoryMode memoryMode) {
         this.memoryMode = memoryMode;
+
+        return this;
     }
 
     /**
@@ -124,9 +137,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param nodeFilter Predicate specifying on which nodes the cache should be started.
+     * @return {@code this} for chaining.
      */
-    public void setNodeFilter(IgnitePredicate<ClusterNode> nodeFilter) {
+    public CollectionConfiguration setNodeFilter(IgnitePredicate<ClusterNode> nodeFilter) {
         this.nodeFilter = nodeFilter;
+
+        return this;
     }
 
     /**
@@ -138,9 +154,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param backups Cache number of backups.
+     * @return {@code this} for chaining.
      */
-    public void setBackups(int backups) {
+    public CollectionConfiguration setBackups(int backups) {
         this.backups = backups;
+
+        return this;
     }
 
     /**
@@ -152,9 +171,12 @@ public class CollectionConfiguration implements Serializable {
 
     /**
      * @param offHeapMaxMemory Off-heap memory size.
+     * @return {@code this} for chaining.
      */
-    public void setOffHeapMaxMemory(long offHeapMaxMemory) {
+    public CollectionConfiguration setOffHeapMaxMemory(long offHeapMaxMemory) {
         this.offHeapMaxMem = offHeapMaxMemory;
+
+        return this;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/cfc88028/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
index 6e33b9c..0ee1388 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
@@ -169,9 +169,12 @@ public class ConnectorConfiguration {
      * accessing Ignite APIs remotely.
      *
      * @param jettyPath Path to {@code JETTY} XML configuration file.
+     * @return {@code this} for chaining.
      */
-    public void setJettyPath(String jettyPath) {
+    public ConnectorConfiguration setJettyPath(String jettyPath) {
         this.jettyPath = jettyPath;
+
+        return this;
     }
 
     /**
@@ -195,9 +198,12 @@ public class ConnectorConfiguration {
      * Sets secret key to authenticate REST requests. If key is {@code null} or empty authentication is disabled.
      *
      * @param secretKey REST secret key.
+     * @return {@code this} for chaining.
      */
-    public void setSecretKey(@Nullable String secretKey) {
+    public ConnectorConfiguration setSecretKey(@Nullable String secretKey) {
         this.secretKey = secretKey;
+
+        return this;
     }
 
     /**
@@ -231,9 +237,12 @@ public class ConnectorConfiguration {
      * Sets host for TCP binary protocol server.
      *
      * @param host TCP host.
+     * @return {@code this} for chaining.
      */
-    public void setHost(String host) {
+    public ConnectorConfiguration setHost(String host) {
         this.host = host;
+
+        return this;
     }
 
     /**
@@ -251,9 +260,12 @@ public class ConnectorConfiguration {
      * Sets port for TCP binary protocol server.
      *
      * @param port TCP port.
+     * @return {@code this} for chaining.
      */
-    public void setPort(int port) {
+    public ConnectorConfiguration setPort(int port) {
         this.port = port;
+
+        return this;
     }
 
     /**
@@ -274,9 +286,12 @@ public class ConnectorConfiguration {
      *
      * @param noDelay {@code True} if option should be enabled.
      * @see #isNoDelay()
+     * @return {@code this} for chaining.
      */
-    public void setNoDelay(boolean noDelay) {
+    public ConnectorConfiguration setNoDelay(boolean noDelay) {
         this.noDelay = noDelay;
+
+        return this;
     }
 
     /**
@@ -296,9 +311,12 @@ public class ConnectorConfiguration {
      *
      * @param directBuf {@code True} if option should be enabled.
      * @see #isDirectBuffer()
+     * @return {@code this} for chaining.
      */
-    public void setDirectBuffer(boolean directBuf) {
+    public ConnectorConfiguration setDirectBuffer(boolean directBuf) {
         this.directBuf = directBuf;
+
+        return this;
     }
 
     /**
@@ -315,9 +333,12 @@ public class ConnectorConfiguration {
      *
      * @param sndBufSize Send buffer size.
      * @see #getSendBufferSize()
+     * @return {@code this} for chaining.
      */
-    public void setSendBufferSize(int sndBufSize) {
+    public ConnectorConfiguration setSendBufferSize(int sndBufSize) {
         this.sndBufSize = sndBufSize;
+
+        return this;
     }
 
     /**
@@ -334,9 +355,12 @@ public class ConnectorConfiguration {
      *
      * @param rcvBufSize Receive buffer size.
      * @see #getReceiveBufferSize()
+     * @return {@code this} for chaining.
      */
-    public void setReceiveBufferSize(int rcvBufSize) {
+    public ConnectorConfiguration setReceiveBufferSize(int rcvBufSize) {
         this.rcvBufSize = rcvBufSize;
+
+        return this;
     }
 
     /**
@@ -354,9 +378,12 @@ public class ConnectorConfiguration {
      *
      * @param sndQueueLimit REST TCP server send queue limit (0 for unlimited).
      * @see #getSendQueueLimit()
+     * @return {@code this} for chaining.
      */
-    public void setSendQueueLimit(int sndQueueLimit) {
+    public ConnectorConfiguration setSendQueueLimit(int sndQueueLimit) {
         this.sndQueueLimit = sndQueueLimit;
+
+        return this;
     }
 
     /**
@@ -374,9 +401,12 @@ public class ConnectorConfiguration {
      *
      * @param selectorCnt Number of selector threads for REST TCP server.
      * @see #getSelectorCount()
+     * @return {@code this} for chaining.
      */
-    public void setSelectorCount(int selectorCnt) {
+    public ConnectorConfiguration setSelectorCount(int selectorCnt) {
         this.selectorCnt = selectorCnt;
+
+        return this;
     }
 
     /**
@@ -396,9 +426,12 @@ public class ConnectorConfiguration {
      *
      * @param idleTimeout Idle timeout in milliseconds.
      * @see #getIdleTimeout()
+     * @return {@code this} for chaining.
      */
-    public void setIdleTimeout(long idleTimeout) {
+    public ConnectorConfiguration setIdleTimeout(long idleTimeout) {
         this.idleTimeout = idleTimeout;
+
+        return this;
     }
 
     /**
@@ -420,9 +453,12 @@ public class ConnectorConfiguration {
      * should be provided in {@link IgniteConfiguration}. Otherwise, TCP binary protocol will fail to start.
      *
      * @param sslEnabled {@code True} if SSL should be enabled.
+     * @return {@code this} for chaining.
      */
-    public void setSslEnabled(boolean sslEnabled) {
+    public ConnectorConfiguration setSslEnabled(boolean sslEnabled) {
         this.sslEnabled = sslEnabled;
+
+        return this;
     }
 
     /**
@@ -439,9 +475,12 @@ public class ConnectorConfiguration {
      * Sets flag indicating whether or not SSL client authentication is required.
      *
      * @param sslClientAuth Whether or not client authentication is required.
+     * @return {@code this} for chaining.
      */
-    public void setSslClientAuth(boolean sslClientAuth) {
+    public ConnectorConfiguration setSslClientAuth(boolean sslClientAuth) {
         this.sslClientAuth = sslClientAuth;
+
+        return this;
     }
 
     /**
@@ -463,10 +502,13 @@ public class ConnectorConfiguration {
      *
      * @param sslCtxFactory Instance of {@link GridSslContextFactory}
      * @deprecated Use {@link #setSslFactory(Factory)} instead.
+     * @return {@code this} for chaining.
      */
     @Deprecated
-    public void setSslContextFactory(GridSslContextFactory sslCtxFactory) {
+    public ConnectorConfiguration setSslContextFactory(GridSslContextFactory sslCtxFactory) {
         this.sslCtxFactory = sslCtxFactory;
+
+        return this;
     }
 
     /**
@@ -485,9 +527,12 @@ public class ConnectorConfiguration {
      * {@link #setSslEnabled(boolean)} is set to {@code true}.
      *
      * @param sslFactory Instance of {@link Factory}
+     * @return {@code this} for chaining.
      */
-    public void setSslFactory(Factory<SSLContext> sslFactory) {
+    public ConnectorConfiguration setSslFactory(Factory<SSLContext> sslFactory) {
         this.sslFactory = sslFactory;
+
+        return this;
     }
 
     /**
@@ -506,9 +551,12 @@ public class ConnectorConfiguration {
      * Sets number of ports to try if configured one is in use.
      *
      * @param portRange Port range.
+     * @return {@code this} for chaining.
      */
-    public void setPortRange(int portRange) {
+    public ConnectorConfiguration setPortRange(int portRange) {
         this.portRange = portRange;
+
+        return this;
     }
 
     /**
@@ -527,9 +575,12 @@ public class ConnectorConfiguration {
      *
      * @param threadPoolSize Thread pool size to use for processing of client messages.
      * @see #getThreadPoolSize()
+     * @return {@code this} for chaining.
      */
-    public void setThreadPoolSize(int threadPoolSize) {
+    public ConnectorConfiguration setThreadPoolSize(int threadPoolSize) {
         this.threadPoolSize = threadPoolSize;
+
+        return this;
     }
 
     /**
@@ -559,9 +610,12 @@ public class ConnectorConfiguration {
      * access them from java code directly.
      *
      * @param interceptor Interceptor.
+     * @return {@code this} for chaining.
      */
-    public void setMessageInterceptor(ConnectorMessageInterceptor interceptor) {
+    public ConnectorConfiguration setMessageInterceptor(ConnectorMessageInterceptor interceptor) {
         msgInterceptor = interceptor;
+
+        return this;
     }
 
     /**
@@ -569,9 +623,12 @@ public class ConnectorConfiguration {
      *
      * @param idleQryCurTimeout Idle query cursors timeout in milliseconds.
      * @see #getIdleQueryCursorTimeout()
+     * @return {@code this} for chaining.
      */
-    public void setIdleQueryCursorTimeout(long idleQryCurTimeout) {
+    public ConnectorConfiguration setIdleQueryCursorTimeout(long idleQryCurTimeout) {
         this.idleQryCurTimeout = idleQryCurTimeout;
+
+        return this;
     }
 
     /**
@@ -592,9 +649,12 @@ public class ConnectorConfiguration {
      *
      * @param idleQryCurCheckFreq Idle query check frequency in milliseconds.
      * @see #getIdleQueryCursorCheckFrequency()
+     * @return {@code this} for chaining.
      */
-    public void setIdleQueryCursorCheckFrequency(long idleQryCurCheckFreq) {
+    public ConnectorConfiguration setIdleQueryCursorCheckFrequency(long idleQryCurCheckFreq) {
         this.idleQryCurCheckFreq = idleQryCurCheckFreq;
+
+        return this;
     }
 
     /**