BUG-1092: rename data.api.InstanceIdentifier to YangInstanceIdentifier
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / builder / impl / ImmutableMapEntryNodeBuilder.java
index 427b939d990411df32267e338293a5841511e600..cd9e6effb3fe3c1e0225148c1d3c6efec90cd6e7 100644 (file)
@@ -12,19 +12,18 @@ import java.util.List;
 import java.util.Map;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
 
-import com.google.common.base.Preconditions;
-
 public class ImmutableMapEntryNodeBuilder
-        extends AbstractImmutableDataContainerNodeAttrBuilder<InstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> {
+        extends AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> {
 
-    protected final Map<QName, InstanceIdentifier.PathArgument> childrenQNamesToPaths;
+    protected final Map<QName, YangInstanceIdentifier.PathArgument> childrenQNamesToPaths;
 
     protected ImmutableMapEntryNodeBuilder() {
         this.childrenQNamesToPaths = new LinkedHashMap<>();
@@ -36,11 +35,11 @@ public class ImmutableMapEntryNodeBuilder
         fillQnames(node.getValue(), childrenQNamesToPaths);
     }
 
-    public static DataContainerNodeAttrBuilder<InstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> create() {
+    public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> create() {
         return new ImmutableMapEntryNodeBuilder();
     }
 
-    public static DataContainerNodeAttrBuilder<InstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> create(final MapEntryNode node) {
+    public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> create(final MapEntryNode node) {
         if (!(node instanceof ImmutableMapEntryNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
         }
@@ -49,11 +48,11 @@ public class ImmutableMapEntryNodeBuilder
     }
 
     private static void fillQnames(final Iterable<DataContainerChild<? extends PathArgument, ?>> iterable, final Map<QName, PathArgument> out) {
-        for (final DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> childId : iterable) {
-            final InstanceIdentifier.PathArgument identifier = childId.getIdentifier();
+        for (final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> childId : iterable) {
+            final YangInstanceIdentifier.PathArgument identifier = childId.getIdentifier();
 
             // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
-            if(identifier instanceof InstanceIdentifier.AugmentationIdentifier) {
+            if(isAugment(identifier)) {
                 continue;
             }
 
@@ -61,20 +60,24 @@ public class ImmutableMapEntryNodeBuilder
         }
     }
 
-    // FIXME, find better solution than 2 maps (map from QName to Child ?)
 
     @Override
-    public DataContainerNodeAttrBuilder<InstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> withValue(final List<DataContainerChild<? extends InstanceIdentifier.PathArgument, ?>> value) {
+    public DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> withValue(final List<DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> value) {
         fillQnames(value, childrenQNamesToPaths);
         return super.withValue(value);
     }
 
+    private static boolean isAugment(YangInstanceIdentifier.PathArgument identifier) {
+        return identifier instanceof YangInstanceIdentifier.AugmentationIdentifier;
+    }
+
     @Override
-    public DataContainerNodeAttrBuilder<InstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> withChild(final DataContainerChild<?, ?> child) {
+    public DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> withChild(final DataContainerChild<?, ?> child) {
         // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
-        if(child.getIdentifier() instanceof InstanceIdentifier.AugmentationIdentifier == false) {
+        if(isAugment(child.getIdentifier()) == false) {
             childrenQNamesToPaths.put(child.getNodeType(), child.getIdentifier());
         }
+
         return super.withChild(child);
     }
 
@@ -86,23 +89,15 @@ public class ImmutableMapEntryNodeBuilder
 
     private void checkKeys() {
         for (final QName keyQName : getNodeIdentifier().getKeyValues().keySet()) {
-
-            final InstanceIdentifier.PathArgument childNodePath = childrenQNamesToPaths.get(keyQName);
-            final DataContainerChild<?, ?> childNode = getChild(childNodePath);
-
-            Preconditions.checkNotNull(childNode, "Key child node: %s, not present", keyQName);
-
-            final Object actualValue = getNodeIdentifier().getKeyValues().get(keyQName);
-            final Object expectedValue = childNode.getValue();
-            Preconditions.checkArgument(expectedValue.equals(actualValue),
-                    "Key child node with unexpected value, is: %s, should be: %s", actualValue, expectedValue);
+            DataContainerChild<?, ?> childNode = getChild(childrenQNamesToPaths.get(keyQName));
+            DataValidationException.checkListKey(childNode, getNodeIdentifier().getKeyValues(), keyQName, getNodeIdentifier());
         }
     }
 
-    private static final class ImmutableMapEntryNode extends AbstractImmutableDataContainerAttrNode<InstanceIdentifier.NodeIdentifierWithPredicates> implements MapEntryNode {
+    private static final class ImmutableMapEntryNode extends AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifierWithPredicates> implements MapEntryNode {
 
-        ImmutableMapEntryNode(final InstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifier,
-                              final Map<InstanceIdentifier.PathArgument, DataContainerChild<? extends InstanceIdentifier.PathArgument, ?>> children, final Map<QName, String> attributes) {
+        ImmutableMapEntryNode(final YangInstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifier,
+                              final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children, final Map<QName, String> attributes) {
             super(children, nodeIdentifier, attributes);
         }
     }