ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From agoncha...@apache.org
Subject [1/3] incubator-ignite git commit: IGNITE-45 - WIP
Date Tue, 10 Mar 2015 03:25:29 GMT
Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-45 a847b8bce -> a6a5e48ad


IGNITE-45 - WIP


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

Branch: refs/heads/ignite-45
Commit: 1cd95ae6216268ccdbe7bab79cf41c1e6a926fc8
Parents: a847b8b
Author: Alexey Goncharuk <agoncharuk@gridgain.com>
Authored: Fri Mar 6 15:58:48 2015 -0800
Committer: Alexey Goncharuk <agoncharuk@gridgain.com>
Committed: Fri Mar 6 15:58:48 2015 -0800

----------------------------------------------------------------------
 .../configuration/CacheConfiguration.java       |  37 +-
 .../configuration/ClientCacheConfiguration.java | 174 ++++++++++
 .../configuration/IgniteConfiguration.java      | 137 +++++---
 .../processors/cache/GridCacheAttributes.java   | 334 ++++---------------
 4 files changed, 347 insertions(+), 335 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/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 224176f..a4bc6df 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
@@ -20,6 +20,7 @@ package org.apache.ignite.configuration;
 import org.apache.ignite.*;
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.affinity.*;
+import org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction;
 import org.apache.ignite.cache.eviction.*;
 import org.apache.ignite.cache.store.*;
 import org.apache.ignite.internal.processors.cache.*;
@@ -27,7 +28,9 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.indexing.*;
 import org.jetbrains.annotations.*;
 
+import javax.cache.Cache;
 import javax.cache.configuration.*;
+import javax.cache.expiry.ExpiryPolicy;
 import java.util.*;
 
 /**
@@ -329,13 +332,13 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      *
      * @param cfg Configuration to copy.
      */
-    public CacheConfiguration(CompleteConfiguration cfg) {
+    public CacheConfiguration(CompleteConfiguration<K, V> cfg) {
         super(cfg);
 
         if (!(cfg instanceof CacheConfiguration))
             return;
 
-        CacheConfiguration cc = (CacheConfiguration)cfg;
+        CacheConfiguration<K, V> cc = (CacheConfiguration<K, V>)cfg;
 
         /*
          * NOTE: MAKE SURE TO PRESERVE ALPHABETIC ORDER!
@@ -392,13 +395,13 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
         swapEnabled = cc.isSwapEnabled();
         tmLookupClsName = cc.getTransactionManagerLookupClassName();
         ttl = cc.getDefaultTimeToLive();
+        typeMeta = cc.getTypeMetadata();
         writeBehindBatchSize = cc.getWriteBehindBatchSize();
         writeBehindEnabled = cc.isWriteBehindEnabled();
         writeBehindFlushFreq = cc.getWriteBehindFlushFrequency();
         writeBehindFlushSize = cc.getWriteBehindFlushSize();
         writeBehindFlushThreadCnt = cc.getWriteBehindFlushThreadCount();
         writeSync = cc.getWriteSynchronizationMode();
-        typeMeta = cc.getTypeMetadata();
     }
 
     /**
@@ -484,6 +487,20 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
     }
 
     /**
+     * @return Near enabled flag.
+     */
+    public boolean isNearEnabled() {
+        return distro == CacheDistributionMode.NEAR_ONLY || distro == CacheDistributionMode.NEAR_PARTITIONED;
+    }
+
+    /**
+     * @param nearEnabled Near enabled flag.
+     */
+    public void setNearEnabled(boolean nearEnabled) {
+        distro = nearEnabled ? CacheDistributionMode.NEAR_PARTITIONED : CacheDistributionMode.PARTITIONED_ONLY;
+    }
+
+    /**
      * Gets write synchronization mode. This mode controls whether the main
      * caller should wait for update on other nodes to complete or not.
      *
@@ -688,7 +705,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
     /**
      * Gets eviction filter to specify which entries should not be evicted
      * (except explicit evict by calling {@link IgniteCache#localEvict(Collection)}).
-     * If {@link org.apache.ignite.cache.eviction.CacheEvictionFilter#evictAllowed(javax.cache.Cache.Entry)} method
+     * If {@link CacheEvictionFilter#evictAllowed(Cache.Entry)} method
      * returns {@code false} then eviction policy will not be notified and entry will
      * never be evicted.
      * <p>
@@ -718,8 +735,8 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      * When not set, default value is {@link #DFLT_EAGER_TTL}.
      * <p>
      * <b>Note</b> that this flag only matters for entries expiring based on
-     * {@link javax.cache.expiry.ExpiryPolicy} and should not be confused with entry
-     * evictions based on configured {@link org.apache.ignite.cache.eviction.CacheEvictionPolicy}.
+     * {@link ExpiryPolicy} and should not be confused with entry
+     * evictions based on configured {@link CacheEvictionPolicy}.
      *
      * @return Flag indicating whether Ignite will eagerly remove expired entries.
      */
@@ -1107,7 +1124,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      * swap is disabled which is defined via {@link #DFLT_SWAP_ENABLED} constant.
      * <p>
      * Note that this flag may be overridden for cache projection created with flag
-     * {@link org.apache.ignite.internal.processors.cache.CacheFlag#SKIP_SWAP}.
+     * {@link CacheFlag#SKIP_SWAP}.
      *
      * @return {@code True} if swap storage is enabled.
      */
@@ -1343,7 +1360,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      * For better efficiency user should usually make sure that new nodes get placed on
      * the same place of consistent hash ring as the left nodes, and that nodes are
      * restarted before this delay expires. To place nodes on the same place in consistent hash ring,
-     * use {@link org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction#setHashIdResolver(CacheAffinityNodeHashResolver)}
+     * use {@link CacheRendezvousAffinityFunction#setHashIdResolver(CacheAffinityNodeHashResolver)}
      * to make sure that a node maps to the same hash ID event if restarted. As an example,
      * node IP address and port combination may be used in this case.
      * <p>
@@ -1408,7 +1425,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
      * on the same node (they will also be backed up on the same nodes as well).
      * <p>
      * If not provided, then default implementation will be used. The default behavior
-     * is described in {@link org.apache.ignite.cache.affinity.CacheAffinityKeyMapper} documentation.
+     * is described in {@link CacheAffinityKeyMapper} documentation.
      *
      * @return Mapper to use for affinity key mapping.
      */
@@ -1418,7 +1435,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
 
     /**
      * Sets custom affinity mapper. If not provided, then default implementation will be used. The default behavior is
-     * described in {@link org.apache.ignite.cache.affinity.CacheAffinityKeyMapper} documentation.
+     * described in {@link CacheAffinityKeyMapper} documentation.
      *
      * @param affMapper Affinity mapper.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java
new file mode 100644
index 0000000..ecfeadc
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java
@@ -0,0 +1,174 @@
+/*
+ * 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.configuration;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
+import org.apache.ignite.cache.eviction.*;
+
+import javax.cache.configuration.*;
+
+import static org.apache.ignite.configuration.CacheConfiguration.*;
+
+/**
+ * Client cache configuration.
+ */
+public class ClientCacheConfiguration<K, V> extends MutableConfiguration<K, V> {
+    /** Cache name. */
+    private String name;
+
+    /** Near enabled flag. */
+    private boolean nearEnabled;
+
+    /** Near cache eviction policy. */
+    private CacheEvictionPolicy nearEvictPlc;
+
+    /** Flag indicating whether eviction is synchronized with near nodes. */
+    private boolean evictNearSync = DFLT_EVICT_NEAR_SYNCHRONIZED;
+
+    /** Default near cache start size. */
+    private int nearStartSize = DFLT_NEAR_START_SIZE;
+
+    /**
+     * Empty constructor.
+     */
+    public ClientCacheConfiguration() {
+        // No-op.
+    }
+
+    /**
+     * @param cfg Configuration to copy.
+     */
+    public ClientCacheConfiguration(CompleteConfiguration<K, V> cfg) {
+        super(cfg);
+
+        // Preserve alphabetic order.
+        if (cfg instanceof CacheConfiguration) {
+            CacheConfiguration ccfg = (CacheConfiguration)cfg;
+
+            evictNearSync = ccfg.isEvictNearSynchronized();
+            name = ccfg.getName();
+            nearEnabled = ccfg.isNearEnabled();
+            nearEvictPlc = ccfg.getNearEvictionPolicy();
+            nearStartSize = ccfg.getNearStartSize();
+        }
+        else if (cfg instanceof ClientCacheConfiguration) {
+            ClientCacheConfiguration ccfg = (ClientCacheConfiguration)cfg;
+
+            evictNearSync = ccfg.isEvictNearSynchronized();
+            name = ccfg.getName();
+            nearEnabled = ccfg.isNearEnabled();
+            nearEvictPlc = ccfg.getNearEvictionPolicy();
+            nearStartSize = ccfg.getNearStartSize();
+        }
+    }
+
+    /**
+     * Gets cache name. The cache can be accessed via {@link Ignite#jcache(String)} method.
+     *
+     * @return Cache name.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets cache name.
+     *
+     * @param name Cache name.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Gets near enabled flag.
+     *
+     * @return Near enabled flag.
+     */
+    public boolean isNearEnabled() {
+        return nearEnabled;
+    }
+
+    /**
+     * Sets near enabled flag.
+     *
+     * @param nearEnabled Near enabled flag.
+     */
+    public void setNearEnabled(boolean nearEnabled) {
+        this.nearEnabled = nearEnabled;
+    }
+
+    /**
+     * @return Near eviction policy.
+     */
+    public CacheEvictionPolicy getNearEvictionPolicy() {
+        return nearEvictPlc;
+    }
+
+    /**
+     * @param nearEvictPlc Near eviction policy.
+     */
+    public void setNearEvictionPolicy(CacheEvictionPolicy nearEvictPlc) {
+        this.nearEvictPlc = nearEvictPlc;
+    }
+
+    /**
+     * Gets flag indicating whether eviction on primary node is synchronized with
+     * near nodes where entry is kept. Default value is {@code true}.
+     * <p>
+     * Note that in most cases this property should be set to {@code true} to keep
+     * cache consistency. But there may be the cases when user may use some
+     * special near eviction policy to have desired control over near cache
+     * entry set.
+     *
+     * @return {@code true} If eviction is synchronized with near nodes in
+     *      partitioned cache, {@code false} if not.
+     */
+    public boolean isEvictNearSynchronized() {
+        return evictNearSync;
+    }
+
+    /**
+     * Sets flag indicating whether eviction is synchronized with near nodes.
+     *
+     * @param evictNearSync {@code true} if synchronized, {@code false} if not.
+     */
+    public void setEvictNearSynchronized(boolean evictNearSync) {
+        this.evictNearSync = evictNearSync;
+    }
+
+    /**
+     * Gets initial cache size for near cache which will be used to pre-create internal
+     * hash table after start. Default value is defined by {@link CacheConfiguration#DFLT_NEAR_START_SIZE}.
+     *
+     * @return Initial near cache size.
+     */
+    public int getNearStartSize() {
+        return nearStartSize;
+    }
+
+    /**
+     * Start size for near cache. This property is only used for {@link CacheMode#PARTITIONED} caching mode.
+     *
+     * @param nearStartSize Start size for near cache.
+     */
+    public void setNearStartSize(int nearStartSize) {
+        this.nearStartSize = nearStartSize;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/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 8bd2f83..c84daab 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
@@ -18,14 +18,28 @@
 package org.apache.ignite.configuration;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.compute.*;
 import org.apache.ignite.events.*;
+import org.apache.ignite.events.EventType;
 import org.apache.ignite.internal.managers.eventstorage.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.lifecycle.*;
 import org.apache.ignite.marshaller.*;
+import org.apache.ignite.marshaller.jdk.*;
+import org.apache.ignite.marshaller.optimized.*;
 import org.apache.ignite.plugin.*;
+import org.apache.ignite.spi.checkpoint.noop.*;
+import org.apache.ignite.spi.collision.noop.*;
+import org.apache.ignite.spi.communication.tcp.*;
+import org.apache.ignite.spi.deployment.local.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.eventstorage.memory.*;
+import org.apache.ignite.spi.failover.always.*;
 import org.apache.ignite.spi.indexing.*;
+import org.apache.ignite.spi.loadbalancing.roundrobin.*;
+import org.apache.ignite.spi.swapspace.file.*;
 import org.apache.ignite.streamer.*;
 import org.apache.ignite.plugin.segmentation.*;
 import org.apache.ignite.services.*;
@@ -51,15 +65,15 @@ import static org.apache.ignite.plugin.segmentation.GridSegmentationPolicy.*;
 
 /**
  * This class defines grid runtime configuration. This configuration is passed to
- * {@link org.apache.ignite.Ignition#start(IgniteConfiguration)} method. It defines all configuration
+ * {@link Ignition#start(IgniteConfiguration)} method. It defines all configuration
  * parameters required to start a grid instance. Usually, a special
  * class called "loader" will create an instance of this interface and apply
- * {@link org.apache.ignite.Ignition#start(IgniteConfiguration)} method to initialize Ignite instance.
+ * {@link Ignition#start(IgniteConfiguration)} method to initialize Ignite instance.
  * <p>
  * Note that you should only set values that differ from defaults, as grid
  * will automatically pick default values for all values that are not set.
  * <p>
- * For more information about grid configuration and startup refer to {@link org.apache.ignite.Ignition}
+ * For more information about grid configuration and startup refer to {@link Ignition}
  * documentation.
  */
 public class IgniteConfiguration {
@@ -306,6 +320,9 @@ public class IgniteConfiguration {
     /** Cache configurations. */
     private CacheConfiguration[] cacheCfg;
 
+    /** Client cache configurations. */
+    private ClientCacheConfiguration[] clientCacheCfg;
+
     /** Transactions configuration. */
     private TransactionConfiguration txCfg = new TransactionConfiguration();
 
@@ -475,7 +492,7 @@ public class IgniteConfiguration {
      * <p>
      * Daemon nodes are the usual grid nodes that participate in topology but not
      * visible on the main APIs, i.e. they are not part of any projections. The only
-     * way to see daemon nodes is to use {@link org.apache.ignite.cluster.ClusterGroup#forDaemons()} method.
+     * way to see daemon nodes is to use {@link ClusterGroup#forDaemons()} method.
      * <p>
      * Daemon nodes are used primarily for management and monitoring functionality that
      * is build on Ignite and needs to participate in the topology but also needs to be
@@ -483,7 +500,7 @@ public class IgniteConfiguration {
      * or in-memory data grid storage.
      *
      * @return {@code True} if this node should be a daemon node, {@code false} otherwise.
-     * @see org.apache.ignite.cluster.ClusterGroup#forDaemons()
+     * @see ClusterGroup#forDaemons()
      */
     public boolean isDaemon() {
         return daemon;
@@ -494,7 +511,7 @@ public class IgniteConfiguration {
      * <p>
      * Daemon nodes are the usual grid nodes that participate in topology but not
      * visible on the main APIs, i.e. they are not part of any projections. The only
-     * way to see daemon nodes is to use {@link org.apache.ignite.cluster.ClusterGroup#forDaemons()} method.
+     * way to see daemon nodes is to use {@link ClusterGroup#forDaemons()} method.
      * <p>
      * Daemon nodes are used primarily for management and monitoring functionality that
      * is build on Ignite and needs to participate in the topology but also needs to be
@@ -519,8 +536,8 @@ public class IgniteConfiguration {
 
     /**
      * Should return any user-defined attributes to be added to this node. These attributes can
-     * then be accessed on nodes by calling {@link org.apache.ignite.cluster.ClusterNode#attribute(String)} or
-     * {@link org.apache.ignite.cluster.ClusterNode#attributes()} methods.
+     * then be accessed on nodes by calling {@link ClusterNode#attribute(String)} or
+     * {@link ClusterNode#attributes()} methods.
      * <p>
      * Note that system adds the following (among others) attributes automatically:
      * <ul>
@@ -574,7 +591,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return a thread pool size to be used in grid.
-     * This executor service will be in charge of processing {@link org.apache.ignite.compute.ComputeJob GridJobs}
+     * This executor service will be in charge of processing {@link ComputeJob GridJobs}
      * and user messages sent to node.
      * <p>
      * If not provided, executor service will have size {@link #DFLT_PUBLIC_THREAD_CNT}.
@@ -599,7 +616,7 @@ public class IgniteConfiguration {
 
     /**
      * Size of thread pool that is in charge of processing internal and Visor
-     * {@link org.apache.ignite.compute.ComputeJob GridJobs}.
+     * {@link ComputeJob GridJobs}.
      * <p>
      * If not provided, executor service will have size {@link #DFLT_MGMT_THREAD_CNT}
      *
@@ -642,7 +659,7 @@ public class IgniteConfiguration {
      * @see IgniteConfiguration#getPublicThreadPoolSize()
      */
     public void setPublicThreadPoolSize(int poolSize) {
-        this.pubPoolSize = poolSize;
+        pubPoolSize = poolSize;
     }
 
     /**
@@ -652,7 +669,7 @@ public class IgniteConfiguration {
      * @see IgniteConfiguration#getSystemThreadPoolSize()
      */
     public void setSystemThreadPoolSize(int poolSize) {
-        this.sysPoolSize = poolSize;
+        sysPoolSize = poolSize;
     }
 
     /**
@@ -662,7 +679,7 @@ public class IgniteConfiguration {
      * @see IgniteConfiguration#getManagementThreadPoolSize()
      */
     public void setManagementThreadPoolSize(int poolSize) {
-        this.mgmtPoolSize = poolSize;
+        mgmtPoolSize = poolSize;
     }
 
     /**
@@ -672,7 +689,7 @@ public class IgniteConfiguration {
      * @see IgniteConfiguration#getPeerClassLoadingThreadPoolSize()
      */
     public void setPeerClassLoadingThreadPoolSize(int poolSize) {
-        this.p2pPoolSize = poolSize;
+        p2pPoolSize = poolSize;
     }
 
     /**
@@ -682,7 +699,7 @@ public class IgniteConfiguration {
      * @see IgniteConfiguration#getIgfsThreadPoolSize()
      */
     public void setIgfsThreadPoolSize(int poolSize) {
-        this.igfsPoolSize = poolSize;
+        igfsPoolSize = poolSize;
     }
 
     /**
@@ -693,7 +710,7 @@ public class IgniteConfiguration {
      *
      * @return Ignite installation home or {@code null} to make the system attempt to
      *      infer it automatically.
-     * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME
+     * @see IgniteSystemProperties#IGNITE_HOME
      */
     public String getIgniteHome() {
         return ggHome;
@@ -704,7 +721,7 @@ public class IgniteConfiguration {
      *
      * @param ggHome {@code Ignition} installation folder.
      * @see IgniteConfiguration#getIgniteHome()
-     * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME
+     * @see IgniteSystemProperties#IGNITE_HOME
      */
     public void setIgniteHome(String ggHome) {
         this.ggHome = ggHome;
@@ -719,7 +736,7 @@ public class IgniteConfiguration {
      *
      * @return Ignite work folder or {@code null} to make the system attempt to infer it automatically.
      * @see IgniteConfiguration#getIgniteHome()
-     * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME
+     * @see IgniteSystemProperties#IGNITE_HOME
      */
     public String getWorkDirectory() {
         return ggWork;
@@ -776,8 +793,8 @@ public class IgniteConfiguration {
 
     /**
      * Should return an instance of marshaller to use in grid. If not provided,
-     * {@link org.apache.ignite.marshaller.optimized.OptimizedMarshaller} will be used on Java HotSpot VM, and
-     * {@link org.apache.ignite.marshaller.jdk.JdkMarshaller} will be used on other VMs.
+     * {@link OptimizedMarshaller} will be used on Java HotSpot VM, and
+     * {@link JdkMarshaller} will be used on other VMs.
      *
      * @return Marshaller to use in grid.
      */
@@ -805,7 +822,7 @@ public class IgniteConfiguration {
      * execution. This way, a task can be physically deployed only on one node
      * and then internally penetrate to all other nodes.
      * <p>
-     * See {@link org.apache.ignite.compute.ComputeTask} documentation for more information about task deployment.
+     * See {@link ComputeTask} documentation for more information about task deployment.
      *
      * @return {@code true} if peer class loading is enabled, {@code false}
      *      otherwise.
@@ -1077,8 +1094,8 @@ public class IgniteConfiguration {
      * routines.
      *
      * @return Collection of life-cycle beans.
-     * @see org.apache.ignite.lifecycle.LifecycleBean
-     * @see org.apache.ignite.lifecycle.LifecycleEventType
+     * @see LifecycleBean
+     * @see LifecycleEventType
      */
     public LifecycleBean[] getLifecycleBeans() {
         return lifecycleBeans;
@@ -1091,7 +1108,7 @@ public class IgniteConfiguration {
      * routines.
      *
      * @param lifecycleBeans Collection of lifecycle beans.
-     * @see org.apache.ignite.lifecycle.LifecycleEventType
+     * @see LifecycleEventType
      */
     public void setLifecycleBeans(LifecycleBean... lifecycleBeans) {
         this.lifecycleBeans = lifecycleBeans;
@@ -1099,7 +1116,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured event SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpi} will be used.
+     * {@link MemoryEventStorageSpi} will be used.
      *
      * @return Grid event SPI implementation or {@code null} to use default implementation.
      */
@@ -1108,9 +1125,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.eventstorage.EventStorageSpi}.
+     * Sets fully configured instance of {@link EventStorageSpi}.
      *
-     * @param evtSpi Fully configured instance of {@link org.apache.ignite.spi.eventstorage.EventStorageSpi}.
+     * @param evtSpi Fully configured instance of {@link EventStorageSpi}.
      * @see IgniteConfiguration#getEventStorageSpi()
      */
     public void setEventStorageSpi(EventStorageSpi evtSpi) {
@@ -1119,7 +1136,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured discovery SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi} will be used by default.
+     * {@link TcpDiscoverySpi} will be used by default.
      *
      * @return Grid discovery SPI implementation or {@code null} to use default implementation.
      */
@@ -1128,9 +1145,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.discovery.DiscoverySpi}.
+     * Sets fully configured instance of {@link DiscoverySpi}.
      *
-     * @param discoSpi Fully configured instance of {@link org.apache.ignite.spi.discovery.DiscoverySpi}.
+     * @param discoSpi Fully configured instance of {@link DiscoverySpi}.
      * @see IgniteConfiguration#getDiscoverySpi()
      */
     public void setDiscoverySpi(DiscoverySpi discoSpi) {
@@ -1273,7 +1290,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured SPI communication  implementation. If not provided,
-     * {@link org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi} will be used by default.
+     * {@link TcpCommunicationSpi} will be used by default.
      *
      * @return Grid communication SPI implementation or {@code null} to use default implementation.
      */
@@ -1282,9 +1299,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.communication.CommunicationSpi}.
+     * Sets fully configured instance of {@link CommunicationSpi}.
      *
-     * @param commSpi Fully configured instance of {@link org.apache.ignite.spi.communication.CommunicationSpi}.
+     * @param commSpi Fully configured instance of {@link CommunicationSpi}.
      * @see IgniteConfiguration#getCommunicationSpi()
      */
     public void setCommunicationSpi(CommunicationSpi commSpi) {
@@ -1293,7 +1310,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured collision SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.collision.noop.NoopCollisionSpi} is used and jobs get activated immediately
+     * {@link NoopCollisionSpi} is used and jobs get activated immediately
      * on arrive to mapped node. This approach suits well for large amount of small
      * jobs (which is a wide-spread use case). User still can control the number
      * of concurrent jobs by setting maximum thread pool size defined by
@@ -1306,9 +1323,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.collision.CollisionSpi}.
+     * Sets fully configured instance of {@link CollisionSpi}.
      *
-     * @param colSpi Fully configured instance of {@link org.apache.ignite.spi.collision.CollisionSpi} or
+     * @param colSpi Fully configured instance of {@link CollisionSpi} or
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getCollisionSpi()
      */
@@ -1318,7 +1335,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured deployment SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.deployment.local.LocalDeploymentSpi} will be used.
+     * {@link LocalDeploymentSpi} will be used.
      *
      * @return Grid deployment SPI implementation or {@code null} to use default implementation.
      */
@@ -1327,9 +1344,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.deployment.DeploymentSpi}.
+     * Sets fully configured instance of {@link DeploymentSpi}.
      *
-     * @param deploySpi Fully configured instance of {@link org.apache.ignite.spi.deployment.DeploymentSpi}.
+     * @param deploySpi Fully configured instance of {@link DeploymentSpi}.
      * @see IgniteConfiguration#getDeploymentSpi()
      */
     public void setDeploymentSpi(DeploymentSpi deploySpi) {
@@ -1338,7 +1355,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured checkpoint SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.checkpoint.noop.NoopCheckpointSpi} will be used.
+     * {@link NoopCheckpointSpi} will be used.
      *
      * @return Grid checkpoint SPI implementation or {@code null} to use default implementation.
      */
@@ -1347,9 +1364,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.checkpoint.CheckpointSpi}.
+     * Sets fully configured instance of {@link CheckpointSpi}.
      *
-     * @param cpSpi Fully configured instance of {@link org.apache.ignite.spi.checkpoint.CheckpointSpi}.
+     * @param cpSpi Fully configured instance of {@link CheckpointSpi}.
      * @see IgniteConfiguration#getCheckpointSpi()
      */
     public void setCheckpointSpi(CheckpointSpi... cpSpi) {
@@ -1358,7 +1375,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured failover SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.failover.always.AlwaysFailoverSpi} will be used.
+     * {@link AlwaysFailoverSpi} will be used.
      *
      * @return Grid failover SPI implementation or {@code null} to use default implementation.
      */
@@ -1367,9 +1384,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.failover.FailoverSpi}.
+     * Sets fully configured instance of {@link FailoverSpi}.
      *
-     * @param failSpi Fully configured instance of {@link org.apache.ignite.spi.failover.FailoverSpi} or
+     * @param failSpi Fully configured instance of {@link FailoverSpi} or
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getFailoverSpi()
      */
@@ -1379,7 +1396,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured load balancing SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi} will be used.
+     * {@link RoundRobinLoadBalancingSpi} will be used.
      *
      * @return Grid load balancing SPI implementation or {@code null} to use default implementation.
      */
@@ -1420,9 +1437,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instance of {@link org.apache.ignite.spi.loadbalancing.LoadBalancingSpi}.
+     * Sets fully configured instance of {@link LoadBalancingSpi}.
      *
-     * @param loadBalancingSpi Fully configured instance of {@link org.apache.ignite.spi.loadbalancing.LoadBalancingSpi} or
+     * @param loadBalancingSpi Fully configured instance of {@link LoadBalancingSpi} or
      *      {@code null} if no SPI provided.
      * @see IgniteConfiguration#getLoadBalancingSpi()
      */
@@ -1431,9 +1448,9 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets fully configured instances of {@link org.apache.ignite.spi.swapspace.SwapSpaceSpi}.
+     * Sets fully configured instances of {@link SwapSpaceSpi}.
      *
-     * @param swapSpaceSpi Fully configured instances of {@link org.apache.ignite.spi.swapspace.SwapSpaceSpi} or
+     * @param swapSpaceSpi Fully configured instances of {@link SwapSpaceSpi} or
      *      <tt>null</tt> if no SPI provided.
      * @see IgniteConfiguration#getSwapSpaceSpi()
      */
@@ -1443,7 +1460,7 @@ public class IgniteConfiguration {
 
     /**
      * Should return fully configured swap space SPI implementation. If not provided,
-     * {@link org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi} will be used.
+     * {@link FileSwapSpaceSpi} will be used.
      * <p>
      * Note that user can provide one or multiple instances of this SPI (and select later which one
      * is used in a particular context).
@@ -1552,6 +1569,20 @@ public class IgniteConfiguration {
     }
 
     /**
+     * Gets configuration (descriptors) for all client caches.
+     *
+     * @return Client cache configurations.
+     */
+    public ClientCacheConfiguration[] getClientCacheConfiguration() {
+        return clientCacheCfg;
+    }
+
+    @SuppressWarnings({"ZeroLengthArrayAllocation"})
+    public void setClientCacheConfiguration(ClientCacheConfiguration... clientCacheCfg) {
+        this.clientCacheCfg = clientCacheCfg == null ? new ClientCacheConfiguration[0] : clientCacheCfg;
+    }
+
+    /**
      * Gets flag indicating whether cache sanity check is enabled. If enabled, then Ignite
      * will perform the following checks and throw an exception if check fails:
      * <ul>
@@ -1602,7 +1633,7 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Sets array of event types, which will be recorded by {@link GridEventStorageManager#record(org.apache.ignite.events.Event)}.
+     * Sets array of event types, which will be recorded by {@link GridEventStorageManager#record(Event)}.
      * Note, that either the include event types or the exclude event types can be established.
      *
      * @param inclEvtTypes Include event types.
@@ -1817,7 +1848,7 @@ public class IgniteConfiguration {
      * Each listener is mapped to array of event types.
      *
      * @return Pre-configured event listeners map.
-     * @see org.apache.ignite.events.EventType
+     * @see EventType
      */
     public Map<IgnitePredicate<? extends Event>, int[]> getLocalEventListeners() {
         return lsnrs;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java
index 94ae1fa..8cd51e9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java
@@ -36,172 +36,24 @@ import static org.apache.ignite.cache.CacheMode.*;
  * <p>
  * This class contains information on a single cache configured on some node.
  */
-public class GridCacheAttributes implements Externalizable {
+public class GridCacheAttributes implements Serializable {
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Cache name. */
-    private String name;
-
-    /** Cache mode. */
-    private CacheMode cacheMode;
-
-    /** Cache atomicity mode. */
-    private CacheAtomicityMode atomicityMode;
-
-    /** Default time to live for cache entries. */
-    private long ttl;
-
-    /** Flag indicating whether eviction is synchronized. */
-    private boolean evictSync;
-
-    /** Flag indicating whether eviction is synchronized with near nodes. */
-    private boolean evictNearSync;
-
-    /** Maximum eviction overflow ratio. */
-    private float evictMaxOverflowRatio;
-
-    /** Default query timeout. */
-    private long dfltQryTimeout;
-
-    /** Default lock timeout. */
-    private long dfltLockTimeout;
-
-    /** Flag indicating if cached values should be additionally stored in serialized form. */
-    private boolean storeValBytes;
-
-    /** Cache preload mode. */
-    private CachePreloadMode preloadMode;
-
-    /** Partitioned cache mode. */
-    private CacheDistributionMode partDistro;
-
-    /** Preload batch size. */
-    private int preloadBatchSize;
-
-    /** Synchronization mode. */
-    private CacheWriteSynchronizationMode writeSyncMode;
-
-    /** Flag indicating whether Ignite should use swap storage by default. */
-    protected boolean swapEnabled;
-
-    /** Flag indicating whether  query indexing is enabled. */
-    private boolean qryIdxEnabled;
-
-    /** Flag indicating whether Ignite should use write-behind behaviour for the cache store. */
-    private boolean writeBehindEnabled;
-
-    /** Maximum size of write-behind cache. */
-    private int writeBehindFlushSize;
-
-    /** Write-behind flush frequency in milliseconds. */
-    private long writeBehindFlushFreq;
-
-    /** Flush thread count for write-behind cache store. */
-    private int writeBehindFlushThreadCnt;
-
-    /** Maximum batch size for write-behind cache store. */
-    private int writeBehindBatchSize;
-
-    /** Name of SPI to use for indexing. */
-    private String indexingSpiName;
-
-    /** Cache affinity class name. */
-    private String affClsName;
-
-    /** Affinity mapper class name. */
-    private String affMapperClsName;
-
-    /** */
-    private boolean affInclNeighbors;
-
-    /** */
-    private int affKeyBackups = -1;
-
-    /** */
-    private String affHashIdRslvrClsName;
-
-    /** */
-    private int affPartsCnt;
-
-    /** Eviction filter class name. */
-    private String evictFilterClsName;
-
-    /** Eviction policy class name. */
-    private String evictPlcClsName;
-
-    /** Near eviction policy class name. */
-    private String nearEvictPlcClsName;
+    /** Cache configuration. */
+    private CacheConfiguration ccfg;
 
     /** Cache store class name. */
     private String storeClsName;
 
-    /** Transaction Manager lookup class name. */
-    private String tmLookupClsName;
-
-    /** Store read-through flag. */
-    private boolean readThrough;
-
-    /** Store write-through flag. */
-    private boolean writeThrough;
-
-    /** Store load previous value flag. */
-    private boolean loadPrevVal;
-
     /**
      * @param cfg Cache configuration.
      * @param store Cache store.
      */
     public GridCacheAttributes(CacheConfiguration cfg, @Nullable CacheStore<?, ?> store) {
-        atomicityMode = cfg.getAtomicityMode();
-        cacheMode = cfg.getCacheMode();
-        dfltLockTimeout = cfg.getDefaultLockTimeout();
-        dfltQryTimeout = cfg.getDefaultQueryTimeout();
-        evictMaxOverflowRatio = cfg.getEvictMaxOverflowRatio();
-        evictNearSync = cfg.isEvictNearSynchronized();
-        evictSync = cfg.isEvictSynchronized();
-        indexingSpiName = cfg.getIndexingSpiName();
-        loadPrevVal = cfg.isLoadPreviousValue();
-        name = cfg.getName();
-        partDistro = GridCacheUtils.distributionMode(cfg);
-        preloadBatchSize = cfg.getPreloadBatchSize();
-        preloadMode = cfg.getPreloadMode();
-        qryIdxEnabled = cfg.isQueryIndexEnabled();
-        readThrough = cfg.isReadThrough();
-        storeValBytes = cfg.isStoreValueBytes();
-        swapEnabled = cfg.isSwapEnabled();
-        ttl = cfg.getDefaultTimeToLive();
-        writeBehindBatchSize = cfg.getWriteBehindBatchSize();
-        writeBehindEnabled = cfg.isWriteBehindEnabled();
-        writeBehindFlushFreq  = cfg.getWriteBehindFlushFrequency();
-        writeBehindFlushSize = cfg.getWriteBehindFlushSize();
-        writeBehindFlushThreadCnt = cfg.getWriteBehindFlushThreadCount();
-        writeSyncMode = cfg.getWriteSynchronizationMode();
-        writeThrough = cfg.isWriteThrough();
-
-        affMapperClsName = className(cfg.getAffinityMapper());
-
-        affKeyBackups = cfg.getBackups();
-
-        CacheAffinityFunction aff = cfg.getAffinity();
-
-        if (aff != null) {
-            if (aff instanceof CacheRendezvousAffinityFunction) {
-                CacheRendezvousAffinityFunction aff0 = (CacheRendezvousAffinityFunction) aff;
-
-                affInclNeighbors = aff0.isExcludeNeighbors();
-                affHashIdRslvrClsName = className(aff0.getHashIdResolver());
-            }
-
-            affPartsCnt = aff.partitions();
-            affClsName = className(aff);
-        }
-
-        evictFilterClsName = className(cfg.getEvictionFilter());
-        evictPlcClsName = className(cfg.getEvictionPolicy());
-        nearEvictPlcClsName = className(cfg.getNearEvictionPolicy());
+        ccfg = cfg;
+
         storeClsName = className(store);
-        tmLookupClsName = cfg.getTransactionManagerLookupClassName();
     }
 
     /**
@@ -212,16 +64,25 @@ public class GridCacheAttributes implements Externalizable {
     }
 
     /**
+     * @return Cache configuration.
+     */
+    public CacheConfiguration configuration() {
+        return ccfg;
+    }
+
+    /**
      * @return Cache name.
      */
     public String cacheName() {
-        return name;
+        return ccfg.getName();
     }
 
     /**
      * @return Cache mode.
      */
     public CacheMode cacheMode() {
+        CacheMode cacheMode = ccfg.getCacheMode();
+
         return cacheMode != null ? cacheMode : DFLT_CACHE_MODE;
     }
 
@@ -229,6 +90,8 @@ public class GridCacheAttributes implements Externalizable {
      * @return Cache atomicity mode.
      */
     public CacheAtomicityMode atomicityMode() {
+        CacheAtomicityMode atomicityMode = ccfg.getAtomicityMode();
+
         return atomicityMode != null ? atomicityMode : DFLT_CACHE_ATOMICITY_MODE;
     }
 
@@ -236,8 +99,7 @@ public class GridCacheAttributes implements Externalizable {
      * @return {@code True} if near cache is enabled.
      */
     public boolean nearCacheEnabled() {
-        return cacheMode() != LOCAL &&
-            (partDistro == NEAR_PARTITIONED || partDistro == NEAR_ONLY);
+        return cacheMode() != LOCAL && ccfg.isNearEnabled();
     }
 
     /**
@@ -249,6 +111,10 @@ public class GridCacheAttributes implements Externalizable {
         if (cacheMode() == LOCAL)
             return true;
 
+        // TODO IGNITE-45 affinity node detection.
+
+        CacheDistributionMode partDistro = ccfg.getDistributionMode();
+
         return partDistro == PARTITIONED_ONLY || partDistro == NEAR_PARTITIONED;
     }
 
@@ -256,70 +122,78 @@ public class GridCacheAttributes implements Externalizable {
      * @return Preload mode.
      */
     public CachePreloadMode cachePreloadMode() {
-        return preloadMode;
+        return ccfg.getPreloadMode();
     }
 
     /**
      * @return Affinity class name.
      */
     public String cacheAffinityClassName() {
-        return affClsName;
+        return className(ccfg.getAffinity());
     }
 
     /**
      * @return Affinity mapper class name.
      */
     public String cacheAffinityMapperClassName() {
-        return affMapperClsName;
+        return className(ccfg.getAffinityMapper());
     }
 
     /**
      * @return Affinity include neighbors.
      */
     public boolean affinityIncludeNeighbors() {
-        return affInclNeighbors;
+        CacheAffinityFunction aff = ccfg.getAffinity();
+
+        return aff instanceof CacheRendezvousAffinityFunction
+            && !((CacheRendezvousAffinityFunction)aff).isExcludeNeighbors();
     }
 
     /**
      * @return Affinity key backups.
      */
     public int affinityKeyBackups() {
-        return affKeyBackups;
+        return ccfg.getBackups();
     }
 
     /**
      * @return Affinity partitions count.
      */
     public int affinityPartitionsCount() {
-        return affPartsCnt;
+        return ccfg.getAffinity().partitions();
     }
 
     /**
      * @return Affinity hash ID resolver class name.
      */
     public String affinityHashIdResolverClassName() {
-        return affHashIdRslvrClsName;
+        CacheAffinityFunction aff = ccfg.getAffinity();
+
+        if (aff instanceof CacheRendezvousAffinityFunction)
+            return className(((CacheRendezvousAffinityFunction)aff).getHashIdResolver());
+
+        return null;
     }
 
     /**
      * @return Eviction filter class name.
      */
     public String evictionFilterClassName() {
-        return evictFilterClsName;
+        return className(ccfg.getEvictionFilter());
     }
 
     /**
      * @return Eviction policy class name.
      */
     public String evictionPolicyClassName() {
-        return evictPlcClsName;
+        return className(ccfg.getEvictionPolicy());
     }
 
     /**
      * @return Near eviction policy class name.
      */
     public String nearEvictionPolicyClassName() {
-        return nearEvictPlcClsName;
+        return className(ccfg.getNearEvictionPolicy());
     }
 
     /**
@@ -333,14 +207,14 @@ public class GridCacheAttributes implements Externalizable {
      * @return Transaction manager lookup class name.
      */
     public String transactionManagerLookupClassName() {
-        return tmLookupClsName;
+        return ccfg.getTransactionManagerLookupClassName();
     }
 
     /**
      * @return {@code True} if swap enabled.
      */
     public boolean swapEnabled() {
-        return swapEnabled;
+        return ccfg.isSwapEnabled();
     }
 
 
@@ -348,224 +222,140 @@ public class GridCacheAttributes implements Externalizable {
      * @return Default time to live for cache entries.
      */
     public long defaultTimeToLive() {
-        return ttl;
+        return ccfg.getDefaultTimeToLive();
     }
 
     /**
      * @return Flag indicating whether eviction is synchronized.
      */
     public boolean evictSynchronized() {
-        return evictSync;
+        return ccfg.isEvictSynchronized();
     }
 
     /**
      * @return Flag indicating whether eviction is synchronized with near nodes.
      */
     public boolean evictNearSynchronized() {
-        return evictNearSync;
+        return ccfg.isEvictNearSynchronized();
     }
 
     /**
      * @return Maximum eviction overflow ratio.
      */
     public float evictMaxOverflowRatio() {
-        return evictMaxOverflowRatio;
+        return ccfg.getEvictMaxOverflowRatio();
     }
 
     /**
      * @return Partitioned cache mode.
      */
     public CacheDistributionMode partitionedTaxonomy() {
-        return partDistro;
+        return ccfg.getDistributionMode();
     }
 
     /**
      * @return Default query timeout.
      */
     public long defaultQueryTimeout() {
-        return dfltQryTimeout;
+        return ccfg.getDefaultQueryTimeout();
     }
 
     /**
      * @return Default lock timeout.
      */
     public long defaultLockTimeout() {
-        return dfltLockTimeout;
+        return ccfg.getDefaultLockTimeout();
     }
 
     /**
      * @return Flag indicating if cached values should be additionally stored in serialized form.
      */
     public boolean storeValueBytes() {
-        return storeValBytes;
+        return ccfg.isStoreValueBytes();
     }
 
     /**
      * @return Preload batch size.
      */
     public int preloadBatchSize() {
-        return preloadBatchSize;
+        return ccfg.getPreloadBatchSize();
     }
 
     /**
      * @return Synchronization mode.
      */
     public CacheWriteSynchronizationMode writeSynchronization() {
-        return writeSyncMode;
+        return ccfg.getWriteSynchronizationMode();
     }
 
     /**
      * @return Flag indicating whether  query indexing is enabled.
      */
     public boolean queryIndexEnabled() {
-        return qryIdxEnabled;
+        return ccfg.isQueryIndexEnabled();
     }
 
     /**
      * @return Flag indicating whether read-through behaviour is enabled.
      */
     public boolean readThrough() {
-        return readThrough;
+        return ccfg.isReadThrough();
     }
 
     /**
      * @return Flag indicating whether read-through behaviour is enabled.
      */
     public boolean writeThrough() {
-        return writeThrough;
+        return ccfg.isWriteThrough();
     }
 
     /**
      * @return Flag indicating whether old value is loaded from store for cache operation.
      */
     public boolean loadPreviousValue() {
-        return loadPrevVal;
+        return ccfg.isLoadPreviousValue();
     }
 
     /**
      * @return Flag indicating whether Ignite should use write-behind behaviour for the cache store.
      */
     public boolean writeBehindEnabled() {
-        return writeBehindEnabled;
+        return ccfg.isWriteBehindEnabled();
     }
 
     /**
      * @return Maximum size of write-behind cache.
      */
     public int writeBehindFlushSize() {
-        return writeBehindFlushSize;
+        return ccfg.getWriteBehindFlushSize();
     }
 
     /**
      * @return Write-behind flush frequency in milliseconds.
      */
     public long writeBehindFlushFrequency() {
-        return writeBehindFlushFreq;
+        return ccfg.getWriteBehindFlushFrequency();
     }
 
     /**
      * @return Flush thread count for write-behind cache store.
      */
     public int writeBehindFlushThreadCount() {
-        return writeBehindFlushThreadCnt;
+        return ccfg.getWriteBehindFlushThreadCount();
     }
 
     /**
      * @return Maximum batch size for write-behind cache store.
      */
     public int writeBehindBatchSize() {
-        return writeBehindBatchSize;
+        return ccfg.getWriteBehindBatchSize();
     }
 
     /**
      * @return Name of SPI to use for indexing.
      */
     public String indexingSpiName() {
-        return indexingSpiName;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        U.writeEnum(out, atomicityMode);
-        U.writeEnum(out, cacheMode);
-        out.writeLong(dfltLockTimeout);
-        out.writeLong(dfltQryTimeout);
-        out.writeFloat(evictMaxOverflowRatio);
-        out.writeBoolean(evictNearSync);
-        out.writeBoolean(evictSync);
-        U.writeString(out, indexingSpiName);
-        out.writeBoolean(loadPrevVal);
-        U.writeString(out, name);
-        U.writeEnum(out, partDistro);
-        out.writeInt(preloadBatchSize);
-        U.writeEnum(out, preloadMode);
-        out.writeBoolean(qryIdxEnabled);
-        out.writeBoolean(readThrough);
-        out.writeBoolean(storeValBytes);
-        out.writeBoolean(swapEnabled);
-        out.writeLong(ttl);
-        out.writeInt(writeBehindBatchSize);
-        out.writeBoolean(writeBehindEnabled);
-        out.writeLong(writeBehindFlushFreq);
-        out.writeInt(writeBehindFlushSize);
-        out.writeInt(writeBehindFlushThreadCnt);
-        U.writeEnum(out, writeSyncMode);
-        out.writeBoolean(writeThrough);
-
-        U.writeString(out, affClsName);
-        U.writeString(out, affMapperClsName);
-        out.writeBoolean(affInclNeighbors);
-        out.writeInt(affKeyBackups);
-        out.writeInt(affPartsCnt);
-        U.writeString(out, affHashIdRslvrClsName);
-
-        U.writeString(out, evictFilterClsName);
-        U.writeString(out, evictPlcClsName);
-        U.writeString(out, nearEvictPlcClsName);
-        U.writeString(out, storeClsName);
-        U.writeString(out, tmLookupClsName);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        atomicityMode = CacheAtomicityMode.fromOrdinal(in.readByte());
-        cacheMode = CacheMode.fromOrdinal(in.readByte());
-        dfltLockTimeout = in.readLong();
-        dfltQryTimeout = in.readLong();
-        evictMaxOverflowRatio = in.readFloat();
-        evictNearSync = in.readBoolean();
-        evictSync  = in.readBoolean();
-        indexingSpiName = U.readString(in);
-        loadPrevVal = in.readBoolean();
-        name = U.readString(in);
-        partDistro = CacheDistributionMode.fromOrdinal(in.readByte());
-        preloadBatchSize = in.readInt();
-        preloadMode = CachePreloadMode.fromOrdinal(in.readByte());
-        qryIdxEnabled = in.readBoolean();
-        readThrough = in.readBoolean();
-        storeValBytes = in.readBoolean();
-        swapEnabled = in.readBoolean();
-        ttl = in.readLong();
-        writeBehindBatchSize = in.readInt();
-        writeBehindEnabled = in.readBoolean();
-        writeBehindFlushFreq = in.readLong();
-        writeBehindFlushSize = in.readInt();
-        writeBehindFlushThreadCnt = in.readInt();
-        writeSyncMode = CacheWriteSynchronizationMode.fromOrdinal(in.readByte());
-        writeThrough = in.readBoolean();
-
-        affClsName = U.readString(in);
-        affMapperClsName = U.readString(in);
-        affInclNeighbors = in.readBoolean();
-        affKeyBackups = in.readInt();
-        affPartsCnt = in.readInt();
-        affHashIdRslvrClsName = U.readString(in);
-
-        evictFilterClsName = U.readString(in);
-        evictPlcClsName = U.readString(in);
-        nearEvictPlcClsName = U.readString(in);
-        storeClsName = U.readString(in);
-        tmLookupClsName = U.readString(in);
+        return ccfg.getIndexingSpiName();
     }
 
     /**


Mime
View raw message