Allow BindingNormalizedNodeCachingCodec on any BindingObject 66/81566/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 11 Apr 2019 11:58:40 +0000 (13:58 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 11 Apr 2019 12:01:57 +0000 (14:01 +0200)
This lowers the requirements so we can have a caching codec for
any BindingObject.

JIRA: MDSAL-407
Change-Id: I1ae3659b277df29743028761e136457c2dfd1a0f
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingDataObjectCodecTreeNode.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCachingCodec.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeCodec.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java

index 870db5e3d85cb7bf86240d4fe2b48d0799341a63..9f8efd559de76448420bdca277ef6ed3a0b0a9a1 100644 (file)
@@ -13,6 +13,7 @@ import java.util.List;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.binding.BindingObject;
 import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -134,7 +135,7 @@ public interface BindingDataObjectCodecTreeNode<T extends DataObject> extends Bi
      * @return Codec which uses cache for serialization / deserialization.
      */
     @NonNull BindingNormalizedNodeCachingCodec<T> createCachingCodec(
-            @NonNull ImmutableCollection<Class<? extends DataObject>> cacheSpecifier);
+            @NonNull ImmutableCollection<Class<? extends BindingObject>> cacheSpecifier);
 
     @Beta
     void writeAsNormalizedNode(T data, NormalizedNodeStreamWriter writer);
index 71981b1290abbdc64b87c90b9a52ba9af2518f87..88bbb46efaefdac4580ad49045099b89645e55e0 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.mdsal.binding.dom.codec.api;
 
 import com.google.common.annotations.Beta;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.BindingObject;
 
 /**
  * Caching variant of Binding to Normalized Node codec. Caching may introduce performance penalty to serialization and
@@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
  * @param <T> Binding representtion of data
  */
 @Beta
-public interface BindingNormalizedNodeCachingCodec<T extends DataObject> extends BindingNormalizedNodeCodec<T>,
+public interface BindingNormalizedNodeCachingCodec<T extends BindingObject> extends BindingNormalizedNodeCodec<T>,
         AutoCloseable {
     /**
      * Invoking close will invalidate this codec and any of its child codecs and will invalidate cache. Any subsequent
index 7dde038e07b8965660bedd9d2ad338afcd65a417..d578a559d469bc038813be1b3ff9e580d8f57e67 100644 (file)
@@ -14,7 +14,6 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableSet;
 import org.opendaylight.yangtools.yang.binding.BindingObject;
-import org.opendaylight.yangtools.yang.binding.DataObject;
 
 /**
  * Abstract Holder of Binding to Normalized Node caches indexed by {@link DataContainerCodecContext} to which cache is
@@ -28,9 +27,9 @@ abstract class AbstractBindingNormalizedNodeCacheHolder {
                     return new DataObjectNormalizedNodeCache(AbstractBindingNormalizedNodeCacheHolder.this, key);
                 }
             });
-    private final ImmutableSet<Class<? extends DataObject>> cacheSpec;
+    private final ImmutableSet<Class<? extends BindingObject>> cacheSpec;
 
-    AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet<Class<? extends DataObject>> cacheSpec) {
+    AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet<Class<? extends BindingObject>> cacheSpec) {
         this.cacheSpec = requireNonNull(cacheSpec);
     }
 
index 30e4a458df0b0a44e2f6980d214095047ae73a18..5c89dae130344a1e9033d947f5dd16868083b8ae 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableSet;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec;
+import org.opendaylight.yangtools.yang.binding.BindingObject;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -19,7 +20,7 @@ class CachingNormalizedNodeCodec<D extends DataObject> extends AbstractBindingNo
     private final DataContainerCodecContext<D, ?> context;
 
     CachingNormalizedNodeCodec(final DataContainerCodecContext<D, ?> subtreeRoot,
-            final ImmutableSet<Class<? extends DataObject>> cacheSpec) {
+            final ImmutableSet<Class<? extends BindingObject>> cacheSpec) {
         super(cacheSpec);
         this.context = requireNonNull(subtreeRoot);
     }
index 18d341a518c51344de7080e830347dfd6171aeb4..d999cbc14ff4d85c35c283927af5160c510dd038 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec;
+import org.opendaylight.yangtools.yang.binding.BindingObject;
 import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.DataObjectSerializer;
@@ -128,7 +129,7 @@ abstract class DataContainerCodecContext<D extends DataObject, T extends WithSta
 
     @Override
     public BindingNormalizedNodeCachingCodec<D> createCachingCodec(
-            final ImmutableCollection<Class<? extends DataObject>> cacheSpecifier) {
+            final ImmutableCollection<Class<? extends BindingObject>> cacheSpecifier) {
         if (cacheSpecifier.isEmpty()) {
             return new NonCachingCodec<>(this);
         }