Added type-safe DataObjectModification#getModifiedChildren
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / LazyDataObjectModification.java
index e7046162c4ba1724a701e96b1a79ab82349c3a9e..14b76522f6be0e1397e87a22d141bafd76fa5f48 100644 (file)
@@ -7,14 +7,13 @@
  */
 package org.opendaylight.mdsal.binding.dom.adapter;
 
-import org.opendaylight.mdsal.binding.api.DataObjectModification;
-
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import org.opendaylight.mdsal.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;
@@ -162,6 +161,18 @@ final class LazyDataObjectModification<T extends DataObject> implements DataObje
         return childNodesCache;
     }
 
+    @SuppressWarnings("unchecked")
+    @Override
+    public <C extends ChildOf<? super T>> Collection<DataObjectModification<C>> getModifiedChildren(Class<C> childType) {
+        List<DataObjectModification<C>> children = new ArrayList<>();
+        for (DataObjectModification<? extends DataObject> potential : getModifiedChildren()) {
+            if (childType.isAssignableFrom(potential.getDataType())) {
+                children.add((DataObjectModification<C>) potential);
+            }
+        }
+        return children;
+    }
+
     @Override
     public DataObjectModification<? extends DataObject> getModifiedChild(final PathArgument arg) {
         final List<YangInstanceIdentifier.PathArgument> domArgumentList = new ArrayList<>();