From c8f9df5fcbd555dcdf5c41fb2b13698f8350518a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 11 Apr 2019 15:36:58 +0200 Subject: [PATCH] Rename LeafNodeCodecContext to ValueNodeCodecContext 'LeafNode' prefix has wrong implications, as it is reminiscent of nodes from 'leaf' statement, when in fact it covers all nodes considered 'leaf' values in the Binding Object tree. This covers leaf, leaf-list, anyxml, anydata -- where leaf-list and leaf have actually differnent handling. This renames the class to ValueNodeCodecContext, to make a clear distinction between the two groups. JIRA: MDSAL-436 Change-Id: I02d60afc1650319efe6cbd90b12eeb47e5152a8f Signed-off-by: Robert Varga --- .../binding/dom/codec/impl/BindingCodecContext.java | 12 ++++++------ .../codec/impl/BindingToNormalizedStreamWriter.java | 4 ++-- .../dom/codec/impl/DataObjectCodecContext.java | 8 ++++---- .../binding/dom/codec/impl/NodeCodecContext.java | 4 ++-- .../codec/impl/TypeObjectNormalizedNodeCache.java | 4 ++-- .../mdsal/binding/dom/codec/impl/ValueContext.java | 2 +- ...eCodecContext.java => ValueNodeCodecContext.java} | 10 +++++++--- 7 files changed, 24 insertions(+), 20 deletions(-) rename binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/{LeafNodeCodecContext.java => ValueNodeCodecContext.java} (94%) 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 ea35425667..e19831657f 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 @@ -189,7 +189,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree bindingArguments.add(((DataContainerCodecContext) nextNode).getBindingPathArgument(domArg)); } currentNode = nextNode; - } else if (nextNode instanceof LeafNodeCodecContext) { + } else if (nextNode instanceof ValueNodeCodecContext) { LOG.debug("Instance identifier referencing a leaf is not representable ({})", dom); return null; } @@ -233,7 +233,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree } @Override - public ImmutableMap getLeafNodes(final Class parentClass, + public ImmutableMap getLeafNodes(final Class parentClass, final DataNodeContainer childSchema) { final Map getterToLeafSchema = new HashMap<>(); for (final DataSchemaNode leaf : childSchema.getChildNodes()) { @@ -244,9 +244,9 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree return getLeafNodesUsingReflection(parentClass, getterToLeafSchema); } - private ImmutableMap getLeafNodesUsingReflection(final Class parentClass, + private ImmutableMap getLeafNodesUsingReflection(final Class parentClass, final Map getterToLeafSchema) { - final Map leaves = new HashMap<>(); + final Map leaves = new HashMap<>(); for (final Method method : parentClass.getMethods()) { if (method.getParameterCount() == 0) { final DataSchemaNode schema = getterToLeafSchema.get(method.getName()); @@ -276,7 +276,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree } final Codec codec = getCodec(valueType, typedSchema.getType()); - final LeafNodeCodecContext leafNode = new LeafNodeCodecContext(typedSchema, codec, method, + final ValueNodeCodecContext leafNode = new ValueNodeCodecContext(typedSchema, codec, method, context.getSchemaContext()); leaves.put(schema.getQName().getLocalName(), leafNode); } @@ -330,7 +330,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree final Class> identifier = optIdentifier.get(); final Map valueCtx = new HashMap<>(); - for (final LeafNodeCodecContext leaf : getLeafNodes(identifier, schema).values()) { + for (final ValueNodeCodecContext leaf : getLeafNodes(identifier, schema).values()) { final QName name = leaf.getDomPathArgument().getNodeType(); valueCtx.put(name, new ValueContext(identifier, leaf)); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingToNormalizedStreamWriter.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingToNormalizedStreamWriter.java index bf8edd9d2a..35791ccf5e 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingToNormalizedStreamWriter.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingToNormalizedStreamWriter.java @@ -111,7 +111,7 @@ final class BindingToNormalizedStreamWriter implements BindingStreamEventWriter, Preconditions.checkArgument(current() instanceof DataObjectCodecContext); DataObjectCodecContext currentCasted = (DataObjectCodecContext) current(); - LeafNodeCodecContext leafContext = currentCasted.getLeafChild(localName); + ValueNodeCodecContext leafContext = currentCasted.getLeafChild(localName); NodeIdentifier domArg = (NodeIdentifier) leafContext.getDomPathArgument(); Object domValue = leafContext.getValueCodec().serialize(value); @@ -137,7 +137,7 @@ final class BindingToNormalizedStreamWriter implements BindingStreamEventWriter, @Override public void leafSetEntryNode(final Object value) throws IOException { - final LeafNodeCodecContext ctx = (LeafNodeCodecContext) current(); + final ValueNodeCodecContext ctx = (ValueNodeCodecContext) current(); final Object domValue = ctx.getValueCodec().serialize(value); delegate.startLeafSetEntryNode(new NodeWithValue<>(ctx.getSchema().getQName(), domValue)); delegate.scalarValue(domValue); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java index 4c105af433..6e3c7ee087 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java @@ -82,7 +82,7 @@ abstract class DataObjectCodecContext leafChild; + private final ImmutableMap leafChild; private final ImmutableMap byYang; private final ImmutableMap byMethod; private final ImmutableMap nonnullToGetter; @@ -114,7 +114,7 @@ abstract class DataObjectCodecContext, DataContainerCodecPrototype> byBindingArgClassBuilder = new HashMap<>(); // Adds leaves to mapping - for (final LeafNodeCodecContext leaf : leafChild.values()) { + for (final ValueNodeCodecContext leaf : leafChild.values()) { tmpMethodToSupplier.put(leaf.getGetter(), leaf); byYangBuilder.put(leaf.getDomPathArgument(), leaf); } @@ -343,8 +343,8 @@ abstract class DataObjectCodecContext * Two core subtypes of codec context are available: *
    - *
  • {@link LeafNodeCodecContext} - Context for nodes, which does not contain any nested YANG modeled substructures. + *
  • {@link ValueNodeCodecContext} - Context for nodes, which does not contain any nested YANG modeled substructures. *
  • *
  • {@link DataObjectCodecContext} - Context for nodes, which does contain nested YANG modeled substructures. This * context nodes contains context for children nodes.
  • @@ -63,7 +63,7 @@ abstract class NodeCodecContext implements BindingCodecTreeNode { * @param schema Instantiated schema of binding type. * @return Map of local name to leaf node context. */ - ImmutableMap getLeafNodes(Class type, DataNodeContainer schema); + ImmutableMap getLeafNodes(Class type, DataNodeContainer schema); /** * Returns Path argument codec for list item. diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/TypeObjectNormalizedNodeCache.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/TypeObjectNormalizedNodeCache.java index 3201e14e89..75cf553f8e 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/TypeObjectNormalizedNodeCache.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/TypeObjectNormalizedNodeCache.java @@ -15,8 +15,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; * A cache of NormalizedNodes corresponding to a particular TypeObject instantiation. */ final class TypeObjectNormalizedNodeCache - extends AbstractBindingNormalizedNodeCache { - TypeObjectNormalizedNodeCache(final LeafNodeCodecContext rootContext) { + extends AbstractBindingNormalizedNodeCache { + TypeObjectNormalizedNodeCache(final ValueNodeCodecContext rootContext) { super(rootContext); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueContext.java index b52eab5389..f18133e483 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueContext.java @@ -21,7 +21,7 @@ final class ValueContext { private final Class identifier; private final String getterName; - ValueContext(final Class identifier, final LeafNodeCodecContext leaf) { + ValueContext(final Class identifier, final ValueNodeCodecContext leaf) { getterName = leaf.getGetter().getName(); try { getter = MethodHandles.publicLookup().unreflect(identifier.getMethod(getterName)).asType(OBJECT_METHOD); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueNodeCodecContext.java similarity index 94% rename from binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java rename to binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueNodeCodecContext.java index 0baae812bf..d0c892835a 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueNodeCodecContext.java @@ -32,16 +32,20 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; +/** + * Abstract base class for atomic nodes. These are nodes which are not decomposed in the Binding Specification, such + * as LeafNodes and LeafSetNodes. + */ // FIXME: MDSAL-436: this class should be specialized for Leaf and LeafSet -final class LeafNodeCodecContext extends NodeCodecContext implements NodeContextSupplier { +final class ValueNodeCodecContext extends NodeCodecContext implements NodeContextSupplier { private final NodeIdentifier yangIdentifier; private final Codec valueCodec; private final Method getter; private final TypedDataSchemaNode schema; private final Object defaultObject; - LeafNodeCodecContext(final TypedDataSchemaNode schema, final Codec codec, final Method getter, - final SchemaContext schemaContext) { + ValueNodeCodecContext(final TypedDataSchemaNode schema, final Codec codec, + final Method getter, final SchemaContext schemaContext) { this.yangIdentifier = NodeIdentifier.create(schema.getQName()); this.valueCodec = requireNonNull(codec); this.getter = getter; -- 2.36.6