X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2FLazySerializedContainerNode.java;h=2526e920ea0189ee22f0d69122c8eb0f4d2b0bbc;hb=7c1493fd2f93985c4b9a45e214cf7a6df9e53cf9;hp=9f1fa5a0d77e2532832ddb7430a87b72409c0a2c;hpb=2b763aa1346d919544e858fa8289c86c0e7c7ad5;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java index 9f1fa5a0d7..2526e920ea 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java @@ -9,48 +9,44 @@ package org.opendaylight.mdsal.binding.dom.adapter; import static java.util.Objects.requireNonNull; -import java.util.Optional; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.mdsal.binding.dom.codec.util.AbstractBindingLazyContainerNode; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.binding.dom.codec.spi.AbstractBindingLazyContainerNode; import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -/** +/* * FIXME: This is a bit of functionality which should really live in binding-dom-codec, but for to happen we need - * to extends BindingNormalizedNodeCodecRegistry with the concept of a routing context -- which would be - * deprecated, as we want to move to actions in the long term. + * to extend BindingNormalizedNodeSerializer with the concept of a routing context -- which would be deprecated, + * as we want to move to actions in the long term. + * + * Even then, BindingNormalizedNodeCodecRegistry provides background updates to the context used in + * deserialization, which is currently being used. */ -class LazySerializedContainerNode extends AbstractBindingLazyContainerNode implements BindingDataAware { +class LazySerializedContainerNode + extends AbstractBindingLazyContainerNode { - private LazySerializedContainerNode(final QName identifier, final DataObject binding, - final BindingNormalizedNodeCodecRegistry registry) { - super(NodeIdentifier.create(identifier), binding, requireNonNull(registry)); + private LazySerializedContainerNode(final @NonNull NodeIdentifier identifier, final DataObject binding, + final BindingNormalizedNodeSerializer codec) { + super(identifier, binding, requireNonNull(codec)); } - static ContainerNode create(final SchemaPath rpcName, final DataObject data, - final BindingNormalizedNodeCodecRegistry codec) { - return data == null ? null : new LazySerializedContainerNode(rpcName.getLastComponent(), data, codec); + static ContainerNode create(final @NonNull NodeIdentifier identifier, final DataObject data, + final BindingNormalizedNodeSerializer codec) { + return data == null ? null : new LazySerializedContainerNode(identifier, data, codec); } - static ContainerNode withContextRef(final SchemaPath rpcName, final DataObject data, - final LeafNode contextRef, final BindingNormalizedNodeCodecRegistry codec) { - return new WithContextRef(rpcName.getLastComponent(), data, contextRef, codec); - } - - @Override - public final DataObject bindingData() { - return getDataObject(); + static ContainerNode withContextRef(final @NonNull NodeIdentifier identifier, final DataObject data, + final LeafNode contextRef, final BindingNormalizedNodeSerializer serializer) { + return new WithContextRef(identifier, data, contextRef, serializer); } @Override - protected final ContainerNode computeContainerNode(final BindingNormalizedNodeCodecRegistry context) { + protected final ContainerNode computeContainerNode(final BindingNormalizedNodeSerializer context) { return context.toNormalizedNodeRpcData(getDataObject()); } @@ -60,16 +56,16 @@ class LazySerializedContainerNode extends AbstractBindingLazyContainerNode contextRef; - protected WithContextRef(final QName identifier, final DataObject binding, final LeafNode contextRef, - final BindingNormalizedNodeCodecRegistry registry) { - super(identifier, binding, registry); + protected WithContextRef(final @NonNull NodeIdentifier identifier, final DataObject binding, + final LeafNode contextRef, final BindingNormalizedNodeSerializer codec) { + super(identifier, binding, codec); this.contextRef = requireNonNull(contextRef); } @Override - public Optional> getChild(final PathArgument child) { + public DataContainerChild childByArg(final PathArgument child) { // Use pre-cached value of routing field and do not run full serialization if we are accessing it. - return contextRef.getIdentifier().equals(child) ? Optional.of(contextRef) : super.getChild(child); + return contextRef.getIdentifier().equals(child) ? contextRef : super.childByArg(child); } } }