Merge "Custom Node Type jaxb string to id"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / LeafSchemaNodeBuilder.java
index be58c7ecf5f699111faec557a9fcda8dd0636520..ba9609b4db7f03eea305ae6b64bda80bc66b5fba 100644 (file)
@@ -22,8 +22,9 @@ import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuil
 import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
 import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
-public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
-        DataSchemaNodeBuilder, SchemaNodeBuilder {
+public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder
+        implements DataSchemaNodeBuilder, SchemaNodeBuilder {
+    private boolean isBuilt;
     private final LeafSchemaNodeImpl instance;
     private final int line;
     // SchemaNode args
@@ -50,30 +51,33 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
 
     @Override
     public LeafSchemaNode build() {
-        instance.setPath(path);
-        instance.setConstraints(constraints.build());
-        instance.setDescription(description);
-        instance.setReference(reference);
-        instance.setStatus(status);
-
-        // TYPE
-        if (type == null) {
-            instance.setType(typedef.build());
-        } else {
-            instance.setType(type);
-        }
+        if (!isBuilt) {
+            instance.setPath(path);
+            instance.setConstraints(constraints.build());
+            instance.setDescription(description);
+            instance.setReference(reference);
+            instance.setStatus(status);
+            instance.setAugmenting(augmenting);
+            instance.setConfiguration(configuration);
+            instance.setDefault(defaultStr);
+            instance.setUnits(unitsStr);
+
+            // TYPE
+            if (type == null) {
+                instance.setType(typedef.build());
+            } else {
+                instance.setType(type);
+            }
 
-        // UNKNOWN NODES
-        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
-        for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
-            unknownNodes.add(b.build());
-        }
-        instance.setUnknownSchemaNodes(unknownNodes);
+            // UNKNOWN NODES
+            final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+            for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+                unknownNodes.add(b.build());
+            }
+            instance.setUnknownSchemaNodes(unknownNodes);
 
-        instance.setAugmenting(augmenting);
-        instance.setConfiguration(configuration);
-        instance.setDefault(defaultStr);
-        instance.setUnits(unitsStr);
+            isBuilt = true;
+        }
         return instance;
     }
 
@@ -173,7 +177,12 @@ public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
         this.unitsStr = unitsStr;
     }
 
-    private class LeafSchemaNodeImpl implements LeafSchemaNode {
+    @Override
+    public String toString() {
+        return "leaf " + qname.getLocalName();
+    }
+
+    private final class LeafSchemaNodeImpl implements LeafSchemaNode {
         private final QName qname;
         private SchemaPath path;
         private String description;