From: Robert Varga Date: Sun, 25 Nov 2018 18:39:00 +0000 (+0100) Subject: Use internal classes for codecs X-Git-Tag: v3.0.2~6 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=76afd0a109e9196d64ffde4c6980085779e984eb;p=mdsal.git Use internal classes for codecs As we are exposing codecs through package-private interfaces, there is no point in hiding the implementation class. This helps JIT to devirtualize the calls. Change-Id: I74262f76380c27c3cfbc6af2d97d69bd4f57bf9e Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java index fe0824110d..f42b4808f6 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java @@ -43,11 +43,9 @@ import org.opendaylight.yangtools.yang.binding.DataObjectSerializer; import org.opendaylight.yangtools.yang.binding.Identifiable; import org.opendaylight.yangtools.yang.binding.Identifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; import org.opendaylight.yangtools.yang.binding.Notification; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -69,8 +67,8 @@ import org.slf4j.LoggerFactory; final class BindingCodecContext implements CodecContextFactory, BindingCodecTree, Immutable { private static final Logger LOG = LoggerFactory.getLogger(BindingCodecContext.class); - private final Codec> instanceIdentifierCodec; - private final Codec> identityCodec; + private final InstanceIdentifierCodec instanceIdentifierCodec; + private final IdentityCodec identityCodec; private final BindingNormalizedNodeCodecRegistry registry; private final BindingRuntimeContext context; private final SchemaRootCodecContext root; @@ -88,11 +86,11 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree return context; } - Codec> getInstanceIdentifierCodec() { + InstanceIdentifierCodec getInstanceIdentifierCodec() { return instanceIdentifierCodec; } - public Codec> getIdentityCodec() { + IdentityCodec getIdentityCodec() { return identityCodec; } @@ -319,8 +317,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree } @Override - public Codec> getPathArgumentCodec(final Class listClz, - final ListSchemaNode schema) { + public IdentifiableItemCodec getPathArgumentCodec(final Class listClz, final ListSchemaNode schema) { final Class> identifier = ClassLoaderUtils.findFirstGenericArgument(listClz, Identifiable.class); final Map valueCtx = new HashMap<>(); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java index 7ac98b040d..b7413d3752 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java @@ -10,7 +10,6 @@ package org.opendaylight.mdsal.binding.dom.codec.impl; import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.IDENTIFIABLE_KEY_NAME; import java.util.List; -import org.opendaylight.yangtools.concepts.Codec; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.Identifiable; import org.opendaylight.yangtools.yang.binding.Identifier; @@ -23,7 +22,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; final class KeyedListNodeCodecContext> extends ListNodeCodecContext { - private final Codec> codec; + private final IdentifiableItemCodec codec; KeyedListNodeCodecContext(final DataContainerCodecPrototype prototype) { super(prototype); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeCodecContext.java index 868aa3a804..1c1c8c66aa 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeCodecContext.java @@ -12,13 +12,10 @@ import java.util.List; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode; import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; -import org.opendaylight.yangtools.concepts.Codec; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.DataObjectSerializer; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; @@ -76,8 +73,7 @@ abstract class NodeCodecContext implements BindingCodecTre * @param schema Schema of list item * @return Path argument codec for supplied list item. */ - Codec> getPathArgumentCodec(Class type, - ListSchemaNode schema); + IdentifiableItemCodec getPathArgumentCodec(Class type, ListSchemaNode schema); DataObjectSerializer getEventStreamSerializer(Class type); }