Merge "Memory hog: ImmutableList is appropriate here"
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / UsesNodeBuilderImpl.java
index fbb01e5ee3384de8c76640e202ef7a5c0fdb2704..fe89819864270ea24b1ceef17d7c1d8c1e60ab7d 100644 (file)
@@ -29,6 +29,7 @@ import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
 import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
 import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
 import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.yangtools.yang.parser.util.Comparators;
 import org.opendaylight.yangtools.yang.parser.util.RefineHolder;
 import org.opendaylight.yangtools.yang.parser.util.YangParseException;
 
@@ -43,7 +44,6 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     private boolean addedByUses;
     private boolean augmenting;
     private boolean resolved;
-    private final Set<AugmentationSchema> augments = new HashSet<>();
     private final Set<AugmentationSchemaBuilder> addedAugments = new HashSet<>();
     private final List<SchemaNodeBuilder> refineBuilders = new ArrayList<>();
     private final List<RefineHolder> refines = new ArrayList<>();
@@ -61,6 +61,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
             instance.setAddedByUses(addedByUses);
 
             // AUGMENTATIONS
+            final Set<AugmentationSchema> augments = new HashSet<>();
             for (AugmentationSchemaBuilder builder : addedAugments) {
                 augments.add(builder.build());
             }
@@ -78,7 +79,8 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
             for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
                 unknownNodes.add(b.build());
             }
-            instance.setUnknownSchemaNodes(unknownNodes);
+            Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP);
+            instance.addUnknownSchemaNodes(unknownNodes);
 
             isBuilt = true;
         }
@@ -92,7 +94,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void setParent(Builder parent) {
+    public void setParent(final Builder parent) {
         if (!(parent instanceof DataNodeContainerBuilder)) {
             throw new YangParseException(moduleName, line,
                     "Parent of 'uses' has to be instance of DataNodeContainerBuilder, but was: '" + parent + "'.");
@@ -111,7 +113,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void setGroupingDefinition(GroupingDefinition groupingDefinition) {
+    public void setGroupingDefinition(final GroupingDefinition groupingDefinition) {
         this.groupingDefinition = groupingDefinition;
         if (groupingDefinition != null) {
             this.groupingPath = groupingDefinition.getPath();
@@ -124,7 +126,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void setGrouping(GroupingBuilder grouping) {
+    public void setGrouping(final GroupingBuilder grouping) {
         this.groupingBuilder = grouping;
         if (groupingBuilder != null) {
             this.groupingPath = groupingBuilder.getPath();
@@ -161,7 +163,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void setAugmenting(boolean augmenting) {
+    public void setAugmenting(final boolean augmenting) {
         this.augmenting = augmenting;
     }
 
@@ -171,7 +173,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void setResolved(boolean resolved) {
+    public void setResolved(final boolean resolved) {
         this.resolved = resolved;
     }
 
@@ -181,7 +183,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void addRefineNode(DataSchemaNodeBuilder refineNode) {
+    public void addRefineNode(final DataSchemaNodeBuilder refineNode) {
         refineBuilders.add(refineNode);
     }
 
@@ -191,7 +193,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public void addRefine(RefineHolder refine) {
+    public void addRefine(final RefineHolder refine) {
         refines.add(refine);
     }
 
@@ -205,7 +207,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (this == obj) {
             return true;
         }
@@ -238,12 +240,12 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
         return "uses '" + groupingPathString + "'";
     }
 
-    public final class UsesNodeImpl implements UsesNode {
+    private static final class UsesNodeImpl implements UsesNode {
         private final SchemaPath groupingPath;
         private Set<AugmentationSchema> augmentations = Collections.emptySet();
         private boolean addedByUses;
         private Map<SchemaPath, SchemaNode> refines = Collections.emptyMap();
-        private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
+        private final List<UnknownSchemaNode> unknownNodes = new ArrayList<>();
 
         private UsesNodeImpl(final SchemaPath groupingPath) {
             this.groupingPath = groupingPath;
@@ -284,26 +286,18 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
             return refines;
         }
 
-        private void setRefines(Map<SchemaPath, SchemaNode> refines) {
+        private void setRefines(final Map<SchemaPath, SchemaNode> refines) {
             if (refines != null) {
                 this.refines = refines;
             }
         }
 
-        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-            return unknownNodes;
-        }
-
-        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+        private void addUnknownSchemaNodes(final List<UnknownSchemaNode> unknownSchemaNodes) {
             if (unknownSchemaNodes != null) {
-                this.unknownNodes = unknownSchemaNodes;
+                this.unknownNodes.addAll(unknownSchemaNodes);
             }
         }
 
-        public UsesNodeBuilder toBuilder() {
-            return UsesNodeBuilderImpl.this;
-        }
-
         @Override
         public int hashCode() {
             final int prime = 31;
@@ -314,7 +308,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
         }
 
         @Override
-        public boolean equals(Object obj) {
+        public boolean equals(final Object obj) {
             if (this == obj) {
                 return true;
             }