Merge "BUG-1275: teach NormalizedNode builders about size hints"
authorTony Tkacik <ttkacik@cisco.com>
Mon, 4 Aug 2014 18:17:03 +0000 (18:17 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 4 Aug 2014 18:17:03 +0000 (18:17 +0000)
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeAttrBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableChoiceNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableContainerNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUnkeyedListEntryNodeBuilder.java

index 3a1a176b8133696d5f72cfc19cbb4b9a42d86922..e6f081b3d6251d438d941e658c52c3a16b454c8f 100644 (file)
@@ -18,16 +18,18 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
 
-abstract class AbstractImmutableDataContainerNodeAttrBuilder<I extends YangInstanceIdentifier.PathArgument, R extends DataContainerNode<I>>
-        extends AbstractImmutableDataContainerNodeBuilder<I, R>
-        implements DataContainerNodeAttrBuilder<I, R> {
-
+abstract class AbstractImmutableDataContainerNodeAttrBuilder<I extends YangInstanceIdentifier.PathArgument, R extends DataContainerNode<I>> extends AbstractImmutableDataContainerNodeBuilder<I, R> implements DataContainerNodeAttrBuilder<I, R> {
     private Map<QName, String> attributes;
 
     protected AbstractImmutableDataContainerNodeAttrBuilder() {
         this.attributes = Collections.emptyMap();
     }
 
+    protected AbstractImmutableDataContainerNodeAttrBuilder(final int sizeHint) {
+        super(sizeHint);
+        this.attributes = Collections.emptyMap();
+    }
+
     protected AbstractImmutableDataContainerNodeAttrBuilder(final AbstractImmutableDataContainerAttrNode<I> node) {
         super(node);
         this.attributes = node.getAttributes();
index 21303e62dac4e9d718275b7851878f48af4997b6..bb271684e967494043c1d13a7ff4f88d64856168 100644 (file)
@@ -19,8 +19,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode;
 
-abstract class AbstractImmutableDataContainerNodeBuilder<I extends YangInstanceIdentifier.PathArgument, R extends DataContainerNode<I>>
-        implements DataContainerNodeBuilder<I, R> {
+abstract class AbstractImmutableDataContainerNodeBuilder<I extends YangInstanceIdentifier.PathArgument, R extends DataContainerNode<I>> implements DataContainerNodeBuilder<I, R> {
 
     private Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> value;
     private I nodeIdentifier;
@@ -38,6 +37,11 @@ abstract class AbstractImmutableDataContainerNodeBuilder<I extends YangInstanceI
         this.dirty = false;
     }
 
+    protected AbstractImmutableDataContainerNodeBuilder(final int sizeHint) {
+        this.value = new HashMap<>(sizeHint);
+        this.dirty = false;
+    }
+
     protected AbstractImmutableDataContainerNodeBuilder(final AbstractImmutableDataContainerNode<I> node) {
         this.nodeIdentifier = node.getIdentifier();
         this.value = node.getChildren();
index a21530f7847bddce2649d25b166252fe554e5a8f..ecc0d6534fde16dfd04c8cb0d26726d84fbbf914 100644 (file)
@@ -18,14 +18,17 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode;
 
-public class ImmutableAugmentationNodeBuilder
-        extends AbstractImmutableDataContainerNodeBuilder<YangInstanceIdentifier.AugmentationIdentifier, AugmentationNode> {
+public class ImmutableAugmentationNodeBuilder extends AbstractImmutableDataContainerNodeBuilder<YangInstanceIdentifier.AugmentationIdentifier, AugmentationNode> {
 
     protected ImmutableAugmentationNodeBuilder() {
         super();
     }
 
-    public ImmutableAugmentationNodeBuilder(ImmutableAugmentationNode node) {
+    protected ImmutableAugmentationNodeBuilder(final int sizeHint) {
+        super(sizeHint);
+    }
+
+    public ImmutableAugmentationNodeBuilder(final ImmutableAugmentationNode node) {
         super(node);
     }
 
@@ -33,7 +36,11 @@ public class ImmutableAugmentationNodeBuilder
         return new ImmutableAugmentationNodeBuilder();
     }
 
-    public static DataContainerNodeBuilder<YangInstanceIdentifier.AugmentationIdentifier, AugmentationNode> create(AugmentationNode node) {
+    public static DataContainerNodeBuilder<YangInstanceIdentifier.AugmentationIdentifier, AugmentationNode> create(final int sizeHint) {
+        return new ImmutableAugmentationNodeBuilder(sizeHint);
+    }
+
+    public static DataContainerNodeBuilder<YangInstanceIdentifier.AugmentationIdentifier, AugmentationNode> create(final AugmentationNode node) {
         if (!(node instanceof ImmutableAugmentationNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
         }
@@ -62,9 +69,7 @@ public class ImmutableAugmentationNodeBuilder
         return new ImmutableAugmentationNode(getNodeIdentifier(), buildValue());
     }
 
-    private static final class ImmutableAugmentationNode
-            extends AbstractImmutableDataContainerNode<YangInstanceIdentifier.AugmentationIdentifier>
-            implements AugmentationNode {
+    private static final class ImmutableAugmentationNode extends AbstractImmutableDataContainerNode<YangInstanceIdentifier.AugmentationIdentifier> implements AugmentationNode {
 
         ImmutableAugmentationNode(final YangInstanceIdentifier.AugmentationIdentifier nodeIdentifier, final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children) {
             super(children, nodeIdentifier);
index 8375fae86ca4aa18ce70dd0328d2b515d50371c5..f94abe84a6911f5a03dd7901c4ecdbcf0a836582 100644 (file)
@@ -21,6 +21,10 @@ public class ImmutableChoiceNodeBuilder extends AbstractImmutableDataContainerNo
         super();
     }
 
+    protected ImmutableChoiceNodeBuilder(final int sizeHint) {
+        super(sizeHint);
+    }
+
     protected ImmutableChoiceNodeBuilder(final ImmutableChoiceNode node) {
         super(node);
     }
@@ -29,6 +33,10 @@ public class ImmutableChoiceNodeBuilder extends AbstractImmutableDataContainerNo
         return new ImmutableChoiceNodeBuilder();
     }
 
+    public static DataContainerNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ChoiceNode> create(final int sizeHint) {
+        return new ImmutableChoiceNodeBuilder(sizeHint);
+    }
+
     public static DataContainerNodeBuilder<YangInstanceIdentifier.NodeIdentifier, ChoiceNode> create(final ChoiceNode node) {
         if (!(node instanceof ImmutableChoiceNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
@@ -42,12 +50,10 @@ public class ImmutableChoiceNodeBuilder extends AbstractImmutableDataContainerNo
         return new ImmutableChoiceNode(getNodeIdentifier(), buildValue());
     }
 
-    private static final class ImmutableChoiceNode
-            extends AbstractImmutableDataContainerNode<YangInstanceIdentifier.NodeIdentifier>
-            implements ChoiceNode {
+    private static final class ImmutableChoiceNode extends AbstractImmutableDataContainerNode<YangInstanceIdentifier.NodeIdentifier> implements ChoiceNode {
 
         ImmutableChoiceNode(final YangInstanceIdentifier.NodeIdentifier nodeIdentifier,
-                            final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children) {
+                final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children) {
             super(children, nodeIdentifier);
         }
     }
index 288f3671f382a11c61bc8f27eba03363739f5237..467571245e8ebcea254635dea4038e77fbd36218 100644 (file)
@@ -16,13 +16,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
 
-public class ImmutableContainerNodeBuilder extends
-        AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, ContainerNode> {
+public class ImmutableContainerNodeBuilder extends AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, ContainerNode> {
 
     protected ImmutableContainerNodeBuilder() {
         super();
     }
 
+    protected ImmutableContainerNodeBuilder(final int sizeHint) {
+        super(sizeHint);
+    }
+
     protected ImmutableContainerNodeBuilder(final ImmutableContainerNode node) {
         super(node);
     }
@@ -31,6 +34,10 @@ public class ImmutableContainerNodeBuilder extends
         return new ImmutableContainerNodeBuilder();
     }
 
+    public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, ContainerNode> create(final int sizeHint) {
+        return new ImmutableContainerNodeBuilder(sizeHint);
+    }
+
     public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, ContainerNode> create(final ContainerNode node) {
         if (!(node instanceof ImmutableContainerNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
@@ -44,7 +51,7 @@ public class ImmutableContainerNodeBuilder extends
     }
 
     protected static final class ImmutableContainerNode extends
-            AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifier> implements ContainerNode {
+    AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifier> implements ContainerNode {
 
         ImmutableContainerNode(
                 final YangInstanceIdentifier.NodeIdentifier nodeIdentifier,
index cd9e6effb3fe3c1e0225148c1d3c6efec90cd6e7..a23b070140f1cbc48c85bd50f16dacae51942178 100644 (file)
@@ -20,15 +20,20 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
 
-public class ImmutableMapEntryNodeBuilder
-        extends AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> {
+public class ImmutableMapEntryNodeBuilder extends AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> {
 
     protected final Map<QName, YangInstanceIdentifier.PathArgument> childrenQNamesToPaths;
 
     protected ImmutableMapEntryNodeBuilder() {
+        super();
         this.childrenQNamesToPaths = new LinkedHashMap<>();
     }
 
+    protected ImmutableMapEntryNodeBuilder(final int sizeHint) {
+        super(sizeHint);
+        this.childrenQNamesToPaths = new LinkedHashMap<>(sizeHint);
+    }
+
     protected ImmutableMapEntryNodeBuilder(final ImmutableMapEntryNode node) {
         super(node);
         this.childrenQNamesToPaths = new LinkedHashMap<>();
@@ -39,6 +44,10 @@ public class ImmutableMapEntryNodeBuilder
         return new ImmutableMapEntryNodeBuilder();
     }
 
+    public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> create(final int sizeHint) {
+        return new ImmutableMapEntryNodeBuilder(sizeHint);
+    }
+
     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()));
@@ -67,7 +76,7 @@ public class ImmutableMapEntryNodeBuilder
         return super.withValue(value);
     }
 
-    private static boolean isAugment(YangInstanceIdentifier.PathArgument identifier) {
+    private static boolean isAugment(final YangInstanceIdentifier.PathArgument identifier) {
         return identifier instanceof YangInstanceIdentifier.AugmentationIdentifier;
     }
 
@@ -97,7 +106,7 @@ public class ImmutableMapEntryNodeBuilder
     private static final class ImmutableMapEntryNode extends AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifierWithPredicates> implements MapEntryNode {
 
         ImmutableMapEntryNode(final YangInstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifier,
-                              final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children, final Map<QName, String> attributes) {
+                final Map<YangInstanceIdentifier.PathArgument, DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children, final Map<QName, String> attributes) {
             super(children, nodeIdentifier, attributes);
         }
     }
index 8952c2c58086cc09e345801a9a22d894ecd06c7d..30b5c78c1616bc0e7756943c707d0dfceb50fd47 100644 (file)
@@ -16,13 +16,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerAttrNode;
 
-public class ImmutableUnkeyedListEntryNodeBuilder extends
-        AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, UnkeyedListEntryNode> {
+public class ImmutableUnkeyedListEntryNodeBuilder extends AbstractImmutableDataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, UnkeyedListEntryNode> {
 
     protected ImmutableUnkeyedListEntryNodeBuilder() {
         super();
     }
 
+    protected ImmutableUnkeyedListEntryNodeBuilder(final int sizeHint) {
+        super(sizeHint);
+    }
+
     protected ImmutableUnkeyedListEntryNodeBuilder(final ImmutableUnkeyedListEntryNode node) {
         super(node);
     }
@@ -31,6 +34,10 @@ public class ImmutableUnkeyedListEntryNodeBuilder extends
         return new ImmutableUnkeyedListEntryNodeBuilder();
     }
 
+    public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, UnkeyedListEntryNode> create(final int sizeHint) {
+        return new ImmutableUnkeyedListEntryNodeBuilder(sizeHint);
+    }
+
     public static DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifier, UnkeyedListEntryNode> create(final UnkeyedListEntryNode node) {
         if (!(node instanceof ImmutableUnkeyedListEntryNode)) {
             throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
@@ -43,8 +50,7 @@ public class ImmutableUnkeyedListEntryNodeBuilder extends
         return new ImmutableUnkeyedListEntryNode(getNodeIdentifier(), buildValue(), getAttributes());
     }
 
-    protected static final class ImmutableUnkeyedListEntryNode extends
-            AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifier> implements UnkeyedListEntryNode {
+    protected static final class ImmutableUnkeyedListEntryNode extends AbstractImmutableDataContainerAttrNode<YangInstanceIdentifier.NodeIdentifier> implements UnkeyedListEntryNode {
 
         ImmutableUnkeyedListEntryNode(
                 final YangInstanceIdentifier.NodeIdentifier nodeIdentifier,