X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FLazyDataObjectModification.java;h=a165242b30f08d29902240d868b24ca84464fde9;hb=8360177d8f021df9078ac54919a816a73fbee0a0;hp=b29ed3849bc4749eaee18ce0f41260c93f9455bf;hpb=e1a6ed792b504c2978c5259f926eaa09257c694c;p=controller.git 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..a165242b30 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; @@ -49,7 +52,7 @@ 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); } @@ -152,6 +155,7 @@ class LazyDataObjectModification implements DataObjectModi return childNodesCache; } + @Override public DataObjectModification getModifiedChild(final PathArgument arg) { final List domArgumentList = new ArrayList<>(); final BindingCodecTreeNode childCodec = codec.bindingPathArgumentChild(arg, domArgumentList); @@ -166,11 +170,26 @@ 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()) { return codec.deserialize(dataAfter.get());