Use ImmutableList for unknown nodes 96/29096/2
authorRobert Varga <rovarga@cisco.com>
Sun, 1 Nov 2015 13:59:41 +0000 (14:59 +0100)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 2 Nov 2015 08:19:03 +0000 (08:19 +0000)
Do not allow modification of unknown nodes, also saves some 30KiB from
1200 empty ArrayLists.

Change-Id: Ie0fa44ebdca237a31928718445e2b2deb41a2299
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementImpl.java

index 8ce35406c707d251cf755768213ceaea83ddd87f..6a30cd3acfe2e61313788f5e39f3ae9a09f242d9 100644 (file)
@@ -8,7 +8,8 @@
 
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import java.util.ArrayList;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableList.Builder;
 import java.util.List;
 import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -31,7 +32,7 @@ public final class UnknownEffectiveStatementImpl extends AbstractEffectiveDocume
     private final QName maybeQNameArgument;
     private final SchemaPath path;
     private final ExtensionDefinition extension;
-    private final List<UnknownSchemaNode> unknownNodes = new ArrayList<>();
+    private final List<UnknownSchemaNode> unknownNodes;
     private final QName nodeType;
     private final String nodeParameter;
 
@@ -76,11 +77,13 @@ public final class UnknownEffectiveStatementImpl extends AbstractEffectiveDocume
         nodeParameter = (ctx.rawStatementArgument() == null) ? "" : ctx.rawStatementArgument();
 
         // TODO init other fields (see Bug1412Test)
+        final Builder<UnknownSchemaNode> builder = ImmutableList.builder();
         for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
             if (effectiveStatement instanceof UnknownEffectiveStatementImpl) {
-                unknownNodes.add((UnknownEffectiveStatementImpl) effectiveStatement);
+                builder.add((UnknownEffectiveStatementImpl) effectiveStatement);
             }
         }
+        unknownNodes = builder.build();
     }
 
     @Override