Rework NormalizedNode type hierarchy
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / tree / NormalizedNodeDataTreeCandidateNode.java
index 40fb660374f37c8605872b750f8d8ab42ddc8f46..c7674d0582747caa5fa976f7ed4a9da9a20d7a87 100644 (file)
@@ -15,22 +15,22 @@ import java.util.Collection;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
 
 /**
  * Utility implementation of {@link DataTreeCandidateNode} which acts as if
  * the {@link NormalizedNode} passed to it at creation time were freshly written.
  */
 final class NormalizedNodeDataTreeCandidateNode implements DataTreeCandidateNode {
-    private final NormalizedNode<?, ?> data;
+    private final NormalizedNode data;
 
     /**
      * Create a new instance backed by supplied data.
      *
      * @param data Backing {@link NormalizedNode} data.
      */
-    NormalizedNodeDataTreeCandidateNode(final @NonNull NormalizedNode<?, ?> data) {
+    NormalizedNodeDataTreeCandidateNode(final @NonNull NormalizedNode data) {
         this.data = requireNonNull(data);
     }
 
@@ -41,20 +41,19 @@ final class NormalizedNodeDataTreeCandidateNode implements DataTreeCandidateNode
 
     @Override
     public Collection<DataTreeCandidateNode> getChildNodes() {
-        if (data instanceof NormalizedNodeContainer) {
-            return Collections2.transform(((NormalizedNodeContainer<?, ?, ?>) data).getValue(),
+        if (data instanceof DistinctNodeContainer) {
+            return Collections2.transform(((DistinctNodeContainer<?, ?, ?>) data).body(),
                 input -> input == null ? null : new NormalizedNodeDataTreeCandidateNode(input));
         }
         return ImmutableList.of();
     }
 
     @Override
+    @SuppressWarnings({ "rawtypes", "unchecked" })
     public Optional<DataTreeCandidateNode> getModifiedChild(final PathArgument childIdentifier) {
-        if (data instanceof NormalizedNodeContainer) {
-            @SuppressWarnings({ "rawtypes", "unchecked" })
-            final Optional<? extends NormalizedNode<?, ?>> child =
-                ((NormalizedNodeContainer)data).getChild(childIdentifier);
-            return child.map(NormalizedNodeDataTreeCandidateNode::new);
+        if (data instanceof DistinctNodeContainer) {
+            return ((Optional<@NonNull NormalizedNode>) ((DistinctNodeContainer)data).findChildByArg(childIdentifier))
+                .map(NormalizedNodeDataTreeCandidateNode::new);
         }
         return Optional.empty();
     }
@@ -65,12 +64,12 @@ final class NormalizedNodeDataTreeCandidateNode implements DataTreeCandidateNode
     }
 
     @Override
-    public Optional<NormalizedNode<?, ?>> getDataAfter() {
+    public Optional<NormalizedNode> getDataAfter() {
         return Optional.of(data);
     }
 
     @Override
-    public Optional<NormalizedNode<?, ?>> getDataBefore() {
+    public Optional<NormalizedNode> getDataBefore() {
         return Optional.empty();
     }
 }