IGNITE-471 - Marshalling refactoring

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

Branch: refs/heads/ignite-471
Commit: adc932ef4c33ab2724a74fdb5598f5b8a74013b9
Parents: 5290845
Author: Valentin Kulichenko <[email protected]>
Authored: Mon Apr 6 15:35:41 2015 -0700
Committer: Valentin Kulichenko <[email protected]>
Committed: Mon Apr 6 15:35:41 2015 -0700

----------------------------------------------------------------------
 .../IgniteCacheObjectProcessorImpl.java         | 22 ++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/adc932ef/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
index fdb64ec..83f0eb9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java
@@ -29,10 +29,12 @@ import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
+import org.jsr166.*;
 
 import java.math.*;
 import java.nio.*;
 import java.util.*;
+import java.util.concurrent.*;
 
 import static org.apache.ignite.cache.CacheMemoryMode.*;
 
@@ -50,6 +52,9 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     private final GridBoundedConcurrentLinkedHashMap<Class<?>, Boolean> 
reflectionCache =
             new GridBoundedConcurrentLinkedHashMap<>(1024, 1024);
 
+    /** */
+    private final ConcurrentMap<String, CacheObjectContext> contexts = new 
ConcurrentHashMap8<>();
+
     /**
      *
      */
@@ -182,6 +187,23 @@ public class IgniteCacheObjectProcessorImpl extends 
GridProcessorAdapter impleme
     /** {@inheritDoc} */
     @Override public CacheObjectContext contextForCache(ClusterNode node, 
@Nullable String cacheName,
         @Nullable CacheConfiguration ccfg) {
+        CacheObjectContext ctx = contexts.get(cacheName);
+
+        if (ctx == null) {
+            CacheObjectContext old = contexts.putIfAbsent(cacheName, ctx = 
createContext(ccfg));
+
+            if (old != null)
+                ctx = old;
+        }
+
+        return ctx;
+    }
+
+    /**
+     * @param ccfg Configuration.
+     * @return New cache context.
+     */
+    protected CacheObjectContext createContext(@Nullable CacheConfiguration 
ccfg) {
         if (ccfg != null) {
             CacheMemoryMode memMode = ccfg.getMemoryMode();
 

Reply via email to