Rework NormalizedNode type hierarchy
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / builder / impl / ImmutableMapEntryNodeBuilder.java
index 33fd8a8ef122d53b9f5b689a382f4ee8f7ac4121..2135c78c4dd396e76ecd730e32205b01a76e733f 100644 (file)
@@ -43,7 +43,7 @@ public class ImmutableMapEntryNodeBuilder
     protected ImmutableMapEntryNodeBuilder(final ImmutableMapEntryNode node) {
         super(node);
         this.childrenQNamesToPaths = new LinkedHashMap<>();
-        fillQnames(node.getValue(), childrenQNamesToPaths);
+        fillQnames(node.body(), childrenQNamesToPaths);
     }
 
     public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create() {
@@ -64,9 +64,8 @@ public class ImmutableMapEntryNodeBuilder
         return new ImmutableMapEntryNodeBuilder((ImmutableMapEntryNode)node);
     }
 
-    private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable,
-            final Map<QName, PathArgument> out) {
-        for (final DataContainerChild<? extends PathArgument, ?> childId : iterable) {
+    private static void fillQnames(final Iterable<DataContainerChild> iterable, final Map<QName, PathArgument> out) {
+        for (final DataContainerChild childId : iterable) {
             final PathArgument identifier = childId.getIdentifier();
 
             // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
@@ -80,7 +79,7 @@ public class ImmutableMapEntryNodeBuilder
 
     @Override
     public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withValue(
-            final Collection<DataContainerChild<? extends PathArgument, ?>> withValue) {
+            final Collection<DataContainerChild> withValue) {
         fillQnames(withValue, childrenQNamesToPaths);
         return super.withValue(withValue);
     }
@@ -91,7 +90,7 @@ public class ImmutableMapEntryNodeBuilder
 
     @Override
     public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withChild(
-            final DataContainerChild<?, ?> child) {
+            final DataContainerChild child) {
         // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
         if (!isAugment(child.getIdentifier())) {
             childrenQNamesToPaths.put(child.getNodeType(), child.getIdentifier());
@@ -103,7 +102,7 @@ public class ImmutableMapEntryNodeBuilder
     @Override
     public MapEntryNode build() {
         for (final Entry<QName, Object> key : getNodeIdentifier().entrySet()) {
-            final DataContainerChild<?, ?> childNode = getChild(childrenQNamesToPaths.get(key.getKey()));
+            final DataContainerChild childNode = getChild(childrenQNamesToPaths.get(key.getKey()));
 
             // We have enough information to fill-in missing leaf nodes, so let's do that
             if (childNode == null) {
@@ -112,7 +111,7 @@ public class ImmutableMapEntryNodeBuilder
                 withChild(leaf);
             } else {
                 DataValidationException.checkListKey(getNodeIdentifier(), key.getKey(), key.getValue(),
-                    childNode.getValue());
+                    childNode.body());
             }
         }
 
@@ -120,11 +119,17 @@ public class ImmutableMapEntryNodeBuilder
     }
 
     private static final class ImmutableMapEntryNode
-            extends AbstractImmutableDataContainerNode<NodeIdentifierWithPredicates> implements MapEntryNode {
+            extends AbstractImmutableDataContainerNode<NodeIdentifierWithPredicates, MapEntryNode>
+            implements MapEntryNode {
 
         ImmutableMapEntryNode(final NodeIdentifierWithPredicates nodeIdentifier,
                 final Map<PathArgument, Object> children) {
             super(children, nodeIdentifier);
         }
+
+        @Override
+        protected Class<MapEntryNode> implementedType() {
+            return MapEntryNode.class;
+        }
     }
 }