X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fcodec%2Fimpl%2FAbstractBindingNormalizedNodeCacheHolder.java;h=e50b64402e3168b99fa9f8c750a8279c112543dd;hb=3b18d17d6882c14b0f3542717e3ca539c0bc9593;hp=d900d4e8c816085899631f4567fd296f0e3f8680;hpb=d8e14e7435ad76f4c1ccb1080a3b0206f62f66e5;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java index d900d4e8c8..e50b64402e 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java @@ -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.mdsal.binding.dom.codec.api.BindingObjectCodecTreeNode; -import org.opendaylight.mdsal.binding.dom.codec.impl.LeafNodeCodecContext.OfTypeObject; import org.opendaylight.yangtools.yang.binding.BindingObject; /** @@ -23,34 +22,35 @@ import org.opendaylight.yangtools.yang.binding.BindingObject; */ abstract class AbstractBindingNormalizedNodeCacheHolder { @SuppressWarnings("rawtypes") - private final LoadingCache caches = CacheBuilder - .newBuilder().build(new CacheLoader() { - @Override - public AbstractBindingNormalizedNodeCache load(final NodeCodecContext key) { - if (key instanceof DataContainerCodecContext) { - return new DataObjectNormalizedNodeCache(AbstractBindingNormalizedNodeCacheHolder.this, - (DataContainerCodecContext) key); - } else if (key instanceof OfTypeObject) { - return new TypeObjectNormalizedNodeCache<>((OfTypeObject)key); - } else { - throw new IllegalStateException("Unhandled context " + key); - } + private final LoadingCache caches = + CacheBuilder.newBuilder().build(new CacheLoader<>() { + @Override + public AbstractBindingNormalizedNodeCache load(final CodecContext key) { + // FIXME: Use a switch expression once we have https://openjdk.org/jeps/441 + if (key instanceof DataContainerCodecContext dataContainer) { + return new DataObjectNormalizedNodeCache(AbstractBindingNormalizedNodeCacheHolder.this, + dataContainer); } - }); + if (key instanceof LeafNodeCodecContext.OfTypeObject typeObject) { + return new TypeObjectNormalizedNodeCache<>(typeObject); + } + throw new IllegalStateException("Unhandled context " + key); + } + }); - private final ImmutableSet> cacheSpec; + private final ImmutableSet> cacheSpec; - AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet> cacheSpec) { + AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet> cacheSpec) { this.cacheSpec = requireNonNull(cacheSpec); } @SuppressWarnings("unchecked") - > + AbstractBindingNormalizedNodeCache getCachingSerializer(final C childCtx) { return isCached(childCtx.getBindingClass()) ? caches.getUnchecked(childCtx) : null; } - final boolean isCached(final Class type) { + final boolean isCached(final Class type) { return cacheSpec.contains(type); } }