Refactored SchemaPath for yang java types. Fixed SchemaPath for augmented nodes types.
[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 3e8fd8d0a4a7b24c018e39fffb282d4c84919202..a04fc3c1a68b06fa0e1667265b50417fa4831488 100644 (file)
@@ -18,7 +18,8 @@ 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;
 
-public class ExtensionBuilder implements SchemaNodeBuilder {
+public final class ExtensionBuilder implements SchemaNodeBuilder {
+    private boolean isBuilt;
     private final ExtensionDefinitionImpl instance;
     private final int line;
     private final QName qname;
@@ -34,14 +35,18 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
 
     @Override
     public ExtensionDefinition build() {
-        instance.setPath(schemaPath);
+        if(!isBuilt) {
+            instance.setPath(schemaPath);
 
-        // UNKNOWN NODES
-        final List<UnknownSchemaNode> extensions = new ArrayList<UnknownSchemaNode>();
-        for (UnknownSchemaNodeBuilder e : addedExtensions) {
-            extensions.add(e.build());
+            // UNKNOWN NODES
+            final List<UnknownSchemaNode> extensions = new ArrayList<UnknownSchemaNode>();
+            for (UnknownSchemaNodeBuilder e : addedExtensions) {
+                extensions.add(e.build());
+            }
+            instance.setUnknownSchemaNodes(extensions);
+
+            isBuilt = true;
         }
-        instance.setUnknownSchemaNodes(extensions);
 
         return instance;
     }
@@ -98,7 +103,7 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
         addedUnknownNodes.add(unknownNode);
     }
 
-    private static class ExtensionDefinitionImpl implements ExtensionDefinition {
+    private final class ExtensionDefinitionImpl implements ExtensionDefinition {
         private final QName qname;
         private String argument;
         private SchemaPath schemaPath;
@@ -193,11 +198,6 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
             result = prime * result
                     + ((schemaPath == null) ? 0 : schemaPath.hashCode());
-            result = prime
-                    * result
-                    + ((unknownNodes == null) ? 0
-                            : unknownNodes.hashCode());
-            result = prime * result + (yin ? 1231 : 1237);
             return result;
         }
 
@@ -227,16 +227,6 @@ public class ExtensionBuilder implements SchemaNodeBuilder {
             } else if (!schemaPath.equals(other.schemaPath)) {
                 return false;
             }
-            if (unknownNodes == null) {
-                if (other.unknownNodes != null) {
-                    return false;
-                }
-            } else if (!unknownNodes.equals(other.unknownNodes)) {
-                return false;
-            }
-            if (yin != other.yin) {
-                return false;
-            }
             return true;
         }