From: Jie Han Date: Thu, 31 Aug 2017 07:36:22 +0000 (+0800) Subject: Binding codec v2 - fix get implemented interface as input of getCacheSerializer X-Git-Tag: release/oxygen~28 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=75cf0ec78e9bd7d06672a8bcca3d508f0a8a3c55;p=mdsal.git Binding codec v2 - fix get implemented interface as input of getCacheSerializer - The class of input is the intern class xxxImpl in Builder, it should be the interface, so we should call implementedInterface. Change-Id: I880cb750cf418541c1f27849dec9c83b4eff8bf8 Signed-off-by: Jie Han --- diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/CachingNormalizedNodeSerializer.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/CachingNormalizedNodeSerializer.java index 0fd479c1ba..b377e0e0e5 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/CachingNormalizedNodeSerializer.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/CachingNormalizedNodeSerializer.java @@ -8,11 +8,13 @@ package org.opendaylight.mdsal.binding.javav2.dom.codec.impl.serializer; import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; import com.google.common.base.Throwables; import java.io.IOException; import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.cache.AbstractBindingNormalizedNodeCacheHolder; import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.cache.BindingNormalizedNodeCache; import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.context.base.DataContainerCodecContext; +import org.opendaylight.mdsal.binding.javav2.spec.base.Instantiable; import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingSerializer; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingStreamEventWriter; @@ -75,7 +77,11 @@ public final class CachingNormalizedNodeSerializer extends ForwardingBindingStre */ @Override public NormalizedNode serialize(final TreeNode input) { - final BindingNormalizedNodeCache cachingSerializer = getCacheSerializer(input.getClass()); + // Binding data input MUST be an instance of Instantiable too. + Preconditions.checkArgument(input instanceof Instantiable, "Input %s is not instantiable", input); + + final BindingNormalizedNodeCache cachingSerializer = + getCacheSerializer(((Instantiable) input).implementedInterface()); if (cachingSerializer != null) { final NormalizedNode domData = cachingSerializer.get(input); domWriter.addChild(domData);