X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FLazyDataObjectModification.java;h=1170828ce94946a023c2b5c437a860f91e2244f5;hp=b29ed3849bc4749eaee18ce0f41260c93f9455bf;hb=b830d5ede22e323fe724cd747fe99280dfa2240d;hpb=e1a6ed792b504c2978c5259f926eaa09257c694c diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDataObjectModification.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDataObjectModification.java index b29ed3849b..1170828ce9 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDataObjectModification.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDataObjectModification.java @@ -15,8 +15,11 @@ import java.util.Iterator; import java.util.List; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeNode; +import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.ChildOf; import org.opendaylight.yangtools.yang.binding.DataObject; +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.PathArgument; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -34,7 +37,7 @@ import org.slf4j.LoggerFactory; * * @param Type of Binding Data Object */ -class LazyDataObjectModification implements DataObjectModification { +final class LazyDataObjectModification implements DataObjectModification { private final static Logger LOG = LoggerFactory.getLogger(LazyDataObjectModification.class); @@ -49,14 +52,14 @@ class LazyDataObjectModification implements DataObjectModi this.identifier = codec.deserializePathArgument(domData.getIdentifier()); } - static DataObjectModification create(final BindingCodecTreeNode codec, + static DataObjectModification create(final BindingCodecTreeNode codec, final DataTreeCandidateNode domData) { return new LazyDataObjectModification<>(codec,domData); } - static Collection> from(final BindingCodecTreeNode parentCodec, + private static Collection> from(final BindingCodecTreeNode parentCodec, final Collection domChildNodes) { - final ArrayList> result = new ArrayList<>(domChildNodes.size()); + final List> result = new ArrayList<>(domChildNodes.size()); populateList(result, parentCodec, domChildNodes); return result; } @@ -76,7 +79,7 @@ class LazyDataObjectModification implements DataObjectModi parentCodec.yangPathArgumentChild(domChildNode.getIdentifier()); populateList(result,type, childCodec, domChildNode); } catch (final IllegalArgumentException e) { - if(type == BindingStructuralType.UNKNOWN) { + if (type == BindingStructuralType.UNKNOWN) { LOG.debug("Unable to deserialize unknown DOM node {}",domChildNode,e); } else { LOG.debug("Binding representation for DOM node {} was not found",domChildNode,e); @@ -86,7 +89,6 @@ class LazyDataObjectModification implements DataObjectModi } } - private static void populateList(final List> result, final BindingStructuralType type, final BindingCodecTreeNode childCodec, final DataTreeCandidateNode domChildNode) { @@ -113,6 +115,11 @@ class LazyDataObjectModification implements DataObjectModi } } + @Override + public T getDataBefore() { + return deserialize(domData.getDataBefore()); + } + @Override public T getDataAfter() { return deserialize(domData.getDataAfter()); @@ -146,12 +153,13 @@ class LazyDataObjectModification implements DataObjectModi @Override public Collection> getModifiedChildren() { - if(childNodesCache == null) { - childNodesCache = from(codec,domData.getChildNodes()); + if (childNodesCache == null) { + childNodesCache = from(codec, domData.getChildNodes()); } return childNodesCache; } + @Override public DataObjectModification getModifiedChild(final PathArgument arg) { final List domArgumentList = new ArrayList<>(); final BindingCodecTreeNode childCodec = codec.bindingPathArgumentChild(arg, domArgumentList); @@ -166,13 +174,28 @@ class LazyDataObjectModification implements DataObjectModi return null; } + @Override + @SuppressWarnings("unchecked") + public & ChildOf, K extends Identifier> DataObjectModification getModifiedChildListItem( + final Class listItem, final K listKey) { + return (DataObjectModification) getModifiedChild(new InstanceIdentifier.IdentifiableItem<>(listItem, listKey)); + } + + @Override @SuppressWarnings("unchecked") - public > DataObjectModification getModifiedChild(final Class arg) { + public > DataObjectModification getModifiedChildContainer(final Class arg) { return (DataObjectModification) getModifiedChild(new InstanceIdentifier.Item<>(arg)); } + @Override + @SuppressWarnings("unchecked") + public & DataObject> DataObjectModification getModifiedAugmentation( + final Class augmentation) { + return (DataObjectModification) getModifiedChild(new InstanceIdentifier.Item<>(augmentation)); + } + private T deserialize(final Optional> dataAfter) { - if(dataAfter.isPresent()) { + if (dataAfter.isPresent()) { return codec.deserialize(dataAfter.get()); } return null;