Minor code refactoring and improvements.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / ExtensionBuilder.java
index a04fc3c1a68b06fa0e1667265b50417fa4831488..764d2bf8dba0b445bdb95978d562653b68a0584e 100644 (file)
@@ -16,34 +16,35 @@ import org.opendaylight.controller.yang.model.api.ExtensionDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.Comparators;
 
-public final class ExtensionBuilder implements SchemaNodeBuilder {
+public final class ExtensionBuilder extends AbstractSchemaNodeBuilder {
     private boolean isBuilt;
     private final ExtensionDefinitionImpl instance;
-    private final int line;
-    private final QName qname;
-    private SchemaPath schemaPath;
-    private final List<UnknownSchemaNodeBuilder> addedExtensions = new ArrayList<UnknownSchemaNodeBuilder>();
-    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
-
-    ExtensionBuilder(final QName qname, final int line) {
-        this.qname = qname;
-        this.line = line;
+
+    ExtensionBuilder(final int line, final QName qname) {
+        super(line, qname);
         instance = new ExtensionDefinitionImpl(qname);
     }
 
     @Override
     public ExtensionDefinition build() {
-        if(!isBuilt) {
+        if (!isBuilt) {
             instance.setPath(schemaPath);
+            instance.setDescription(description);
+            instance.setReference(reference);
+            instance.setStatus(status);
 
             // UNKNOWN NODES
-            final List<UnknownSchemaNode> extensions = new ArrayList<UnknownSchemaNode>();
-            for (UnknownSchemaNodeBuilder e : addedExtensions) {
-                extensions.add(e.build());
+            if (unknownNodes == null) {
+                unknownNodes = new ArrayList<UnknownSchemaNode>();
+                for (UnknownSchemaNodeBuilder un : addedUnknownNodes) {
+                    unknownNodes.add(un.build());
+                }
+                Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP);
             }
-            instance.setUnknownSchemaNodes(extensions);
+            instance.setUnknownSchemaNodes(unknownNodes);
 
             isBuilt = true;
         }
@@ -51,15 +52,6 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
         return instance;
     }
 
-    @Override
-    public int getLine() {
-        return line;
-    }
-
-    public void addExtension(UnknownSchemaNodeBuilder extension) {
-        addedExtensions.add(extension);
-    }
-
     public void setYinElement(boolean yin) {
         instance.setYinElement(yin);
     }
@@ -68,41 +60,6 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
         instance.setArgument(argument);
     }
 
-    @Override
-    public QName getQName() {
-        return qname;
-    }
-
-    @Override
-    public SchemaPath getPath() {
-        return schemaPath;
-    }
-
-    @Override
-    public void setPath(SchemaPath schemaPath) {
-        this.schemaPath = schemaPath;
-    }
-
-    @Override
-    public void setDescription(String description) {
-        instance.setDescription(description);
-    }
-
-    @Override
-    public void setReference(String reference) {
-        instance.setReference(reference);
-    }
-
-    @Override
-    public void setStatus(Status status) {
-        instance.setStatus(status);
-    }
-
-    @Override
-    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) {
-        addedUnknownNodes.add(unknownNode);
-    }
-
     private final class ExtensionDefinitionImpl implements ExtensionDefinition {
         private final QName qname;
         private String argument;
@@ -110,8 +67,7 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
         private String description;
         private String reference;
         private Status status = Status.CURRENT;
-        private List<UnknownSchemaNode> unknownNodes = Collections
-                .emptyList();
+        private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
         private boolean yin;
 
         private ExtensionDefinitionImpl(QName qname) {
@@ -166,9 +122,8 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
             return unknownNodes;
         }
 
-        private void setUnknownSchemaNodes(
-                List<UnknownSchemaNode> unknownNodes) {
-            if(unknownNodes != null) {
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
+            if (unknownNodes != null) {
                 this.unknownNodes = unknownNodes;
             }
         }
@@ -196,8 +151,7 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
             final int prime = 31;
             int result = 1;
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
-            result = prime * result
-                    + ((schemaPath == null) ? 0 : schemaPath.hashCode());
+            result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());
             return result;
         }
 
@@ -232,10 +186,9 @@ public final class ExtensionBuilder implements SchemaNodeBuilder {
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder(
-                    ExtensionDefinitionImpl.class.getSimpleName());
+            StringBuilder sb = new StringBuilder(ExtensionDefinitionImpl.class.getSimpleName());
             sb.append("[");
-            sb.append("argument="+ argument);
+            sb.append("argument=" + argument);
             sb.append(", qname=" + qname);
             sb.append(", schemaPath=" + schemaPath);
             sb.append(", extensionSchemaNodes=" + unknownNodes);