Split BindingNormalizedNodeCache
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / AbstractBindingNormalizedNodeCacheHolder.java
index fa5dc674aa32e3eea6ce4d7d4d4c08e74cd956dd..7dde038e07b8965660bedd9d2ad338afcd65a417 100644 (file)
@@ -7,11 +7,13 @@
  */
 package org.opendaylight.mdsal.binding.dom.codec.impl;
 
-import com.google.common.base.Preconditions;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
-import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.opendaylight.yangtools.yang.binding.BindingObject;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 /**
@@ -19,28 +21,27 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
  * associated.
  */
 abstract class AbstractBindingNormalizedNodeCacheHolder {
-
-    private final Set<Class<? extends DataObject>> cachedValues;
-    private final LoadingCache<DataContainerCodecContext<?, ?>, BindingNormalizedNodeCache> caches = CacheBuilder
-            .newBuilder().build(new CacheLoader<DataContainerCodecContext<?, ?>, BindingNormalizedNodeCache>() {
+    private final LoadingCache<DataContainerCodecContext<?, ?>, DataObjectNormalizedNodeCache> caches = CacheBuilder
+            .newBuilder().build(new CacheLoader<DataContainerCodecContext<?, ?>, DataObjectNormalizedNodeCache>() {
                 @Override
-                public BindingNormalizedNodeCache load(final DataContainerCodecContext<?, ?> key) {
-                    return new BindingNormalizedNodeCache(AbstractBindingNormalizedNodeCacheHolder.this, key);
+                public DataObjectNormalizedNodeCache load(final DataContainerCodecContext<?, ?> key) {
+                    return new DataObjectNormalizedNodeCache(AbstractBindingNormalizedNodeCacheHolder.this, key);
                 }
             });
+    private final ImmutableSet<Class<? extends DataObject>> cacheSpec;
 
-    protected AbstractBindingNormalizedNodeCacheHolder(final Set<Class<? extends DataObject>> cacheSpec) {
-        cachedValues = Preconditions.checkNotNull(cacheSpec);
+    AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet<Class<? extends DataObject>> cacheSpec) {
+        this.cacheSpec = requireNonNull(cacheSpec);
     }
 
-    BindingNormalizedNodeCache getCachingSerializer(final DataContainerCodecContext<?, ?> childCtx) {
+    DataObjectNormalizedNodeCache getCachingSerializer(final DataContainerCodecContext<?, ?> childCtx) {
         if (isCached(childCtx.getBindingClass())) {
             return caches.getUnchecked(childCtx);
         }
         return null;
     }
 
-    boolean isCached(final Class<?> type) {
-        return cachedValues.contains(type);
+    final boolean isCached(final Class<? extends BindingObject> type) {
+        return cacheSpec.contains(type);
     }
 }