Merge branch 'master' of ../controller
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / builder / impl / ImmutableMapEntryNodeBuilder.java
index cebe26b0f577874e66cb2f57e0902986bd6eaed6..33fd8a8ef122d53b9f5b689a382f4ee8f7ac4121 100644 (file)
@@ -11,6 +11,7 @@ import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -19,18 +20,18 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
-import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> {
+public class ImmutableMapEntryNodeBuilder
+        extends AbstractImmutableDataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> {
     private static final Logger LOG = LoggerFactory.getLogger(ImmutableMapEntryNodeBuilder.class);
     protected final Map<QName, PathArgument> childrenQNamesToPaths;
 
     protected ImmutableMapEntryNodeBuilder() {
-        super();
         this.childrenQNamesToPaths = new LinkedHashMap<>();
     }
 
@@ -45,15 +46,17 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
         fillQnames(node.getValue(), childrenQNamesToPaths);
     }
 
-    public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create() {
+    public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create() {
         return new ImmutableMapEntryNodeBuilder();
     }
 
-    public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(final int sizeHint) {
+    public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(
+            final int sizeHint) {
         return new ImmutableMapEntryNodeBuilder(sizeHint);
     }
 
-    public static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(final MapEntryNode node) {
+    public static @NonNull DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> create(
+            final MapEntryNode node) {
         if (!(node instanceof ImmutableMapEntryNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
         }
@@ -61,12 +64,13 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
         return new ImmutableMapEntryNodeBuilder((ImmutableMapEntryNode)node);
     }
 
-    private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable, final Map<QName, PathArgument> out) {
+    private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable,
+            final Map<QName, PathArgument> out) {
         for (final DataContainerChild<? extends PathArgument, ?> childId : iterable) {
             final PathArgument identifier = childId.getIdentifier();
 
             // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
-            if(isAugment(identifier)) {
+            if (isAugment(identifier)) {
                 continue;
             }
 
@@ -74,11 +78,11 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
         }
     }
 
-
     @Override
-    public DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> withValue(final Collection<DataContainerChild<? extends PathArgument, ?>> value) {
-        fillQnames(value, childrenQNamesToPaths);
-        return super.withValue(value);
+    public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withValue(
+            final Collection<DataContainerChild<? extends PathArgument, ?>> withValue) {
+        fillQnames(withValue, childrenQNamesToPaths);
+        return super.withValue(withValue);
     }
 
     private static boolean isAugment(final PathArgument identifier) {
@@ -86,9 +90,10 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
     }
 
     @Override
-    public DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> withChild(final DataContainerChild<?, ?> child) {
+    public DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> withChild(
+            final DataContainerChild<?, ?> child) {
         // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
-        if(!isAugment(child.getIdentifier())) {
+        if (!isAugment(child.getIdentifier())) {
             childrenQNamesToPaths.put(child.getNodeType(), child.getIdentifier());
         }
 
@@ -97,7 +102,7 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
 
     @Override
     public MapEntryNode build() {
-        for (final Entry<QName, Object> key : getNodeIdentifier().getKeyValues().entrySet()) {
+        for (final Entry<QName, Object> key : getNodeIdentifier().entrySet()) {
             final DataContainerChild<?, ?> childNode = getChild(childrenQNamesToPaths.get(key.getKey()));
 
             // We have enough information to fill-in missing leaf nodes, so let's do that
@@ -106,18 +111,20 @@ public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainer
                 LOG.debug("Adding leaf {} implied by key {}", leaf, key);
                 withChild(leaf);
             } else {
-                DataValidationException.checkListKey(getNodeIdentifier(), key.getKey(), key.getValue(), childNode.getValue());
+                DataValidationException.checkListKey(getNodeIdentifier(), key.getKey(), key.getValue(),
+                    childNode.getValue());
             }
         }
 
-        return new ImmutableMapEntryNode(getNodeIdentifier(), buildValue(), getAttributes());
+        return new ImmutableMapEntryNode(getNodeIdentifier(), buildValue());
     }
 
-    private static final class ImmutableMapEntryNode extends AbstractImmutableDataContainerAttrNode<NodeIdentifierWithPredicates> implements MapEntryNode {
+    private static final class ImmutableMapEntryNode
+            extends AbstractImmutableDataContainerNode<NodeIdentifierWithPredicates> implements MapEntryNode {
 
         ImmutableMapEntryNode(final NodeIdentifierWithPredicates nodeIdentifier,
-                final Map<PathArgument, DataContainerChild<? extends PathArgument, ?>> children, final Map<QName, String> attributes) {
-            super(children, nodeIdentifier, attributes);
+                final Map<PathArgument, Object> children) {
+            super(children, nodeIdentifier);
         }
     }
 }