Removed unused private variable containerAwareRegistration - please
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / model / parser / builder / impl / IdentitySchemaNodeBuilder.java
index 0abc9598dc9ab6df3ce528d5ab6332b9eb38a231..810ceeced500ca28d1bf4da4d8e83de8de5ab703 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.yang.model.parser.builder.impl;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -17,82 +18,102 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
 
-public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
-
-    private final QName qname;
+public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
     private final IdentitySchemaNodeImpl instance;
+    private final int line;
+    private final QName qname;
+    private SchemaPath schemaPath;
     private IdentitySchemaNodeBuilder baseIdentity;
     private String baseIdentityName;
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
-    IdentitySchemaNodeBuilder(QName qname) {
+    IdentitySchemaNodeBuilder(final QName qname, final int line) {
         this.qname = qname;
+        this.line = line;
         instance = new IdentitySchemaNodeImpl(qname);
     }
 
     @Override
     public IdentitySchemaNode build() {
-        if(baseIdentity != null) {
-            IdentitySchemaNode base = baseIdentity.build();
-            instance.setBaseIdentity(base);
+        instance.setPath(schemaPath);
+        if (baseIdentity != null) {
+            instance.setBaseIdentity(baseIdentity.build());
+        }
+
+        // UNKNOWN NODES
+        final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
         }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
+    @Override
+    public int getLine() {
+        return line;
+    }
+
     @Override
     public QName getQName() {
         return qname;
     }
 
     @Override
-    public void setPath(SchemaPath path) {
-        instance.setPath(path);
+    public SchemaPath getPath() {
+        return schemaPath;
+    }
+
+    @Override
+    public void setPath(SchemaPath schemaPath) {
+        this.schemaPath = schemaPath;
     }
 
     @Override
-    public void setDescription(String description) {
+    public void setDescription(final String description) {
         instance.setDescription(description);
     }
 
     @Override
-    public void setReference(String reference) {
+    public void setReference(final String reference) {
         instance.setReference(reference);
     }
 
     @Override
-    public void setStatus(Status status) {
+    public void setStatus(final Status status) {
         if (status != null) {
             instance.setStatus(status);
         }
     }
 
     @Override
-    public void addUnknownSchemaNode(
-            UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
-        throw new IllegalStateException(
-                "Can not add schema node to identity statement");
+    public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
+        addedUnknownNodes.add(unknownNode);
     }
 
     public String getBaseIdentityName() {
         return baseIdentityName;
     }
 
-    public void setBaseIdentityName(String baseIdentityName) {
+    public void setBaseIdentityName(final String baseIdentityName) {
         this.baseIdentityName = baseIdentityName;
     }
 
-    public void setBaseIdentity(IdentitySchemaNodeBuilder baseType) {
+    public void setBaseIdentity(final IdentitySchemaNodeBuilder baseType) {
         this.baseIdentity = baseType;
     }
 
-    private class IdentitySchemaNodeImpl implements IdentitySchemaNode {
+    private final class IdentitySchemaNodeImpl implements IdentitySchemaNode {
         private final QName qname;
         private IdentitySchemaNode baseIdentity;
         private String description;
         private String reference;
         private Status status = Status.CURRENT;
         private SchemaPath path;
+        private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
 
-        private IdentitySchemaNodeImpl(QName qname) {
+        private IdentitySchemaNodeImpl(final QName qname) {
             this.qname = qname;
         }
 
@@ -106,7 +127,7 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             return baseIdentity;
         }
 
-        private void setBaseIdentity(IdentitySchemaNode baseIdentity) {
+        private void setBaseIdentity(final IdentitySchemaNode baseIdentity) {
             this.baseIdentity = baseIdentity;
         }
 
@@ -115,7 +136,7 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             return description;
         }
 
-        private void setDescription(String description) {
+        private void setDescription(final String description) {
             this.description = description;
         }
 
@@ -124,7 +145,7 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             return reference;
         }
 
-        private void setReference(String reference) {
+        private void setReference(final String reference) {
             this.reference = reference;
         }
 
@@ -133,7 +154,7 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             return status;
         }
 
-        private void setStatus(Status status) {
+        private void setStatus(final Status status) {
             if (status != null) {
                 this.status = status;
             }
@@ -144,13 +165,20 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             return path;
         }
 
-        private void setPath(SchemaPath path) {
+        private void setPath(final SchemaPath path) {
             this.path = path;
         }
 
         @Override
         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-            return Collections.emptyList();
+            return unknownNodes;
+        }
+
+        private void setUnknownSchemaNodes(
+                List<UnknownSchemaNode> unknownSchemaNodes) {
+            if (unknownSchemaNodes != null) {
+                this.unknownNodes = unknownSchemaNodes;
+            }
         }
 
         @Override
@@ -190,9 +218,6 @@ public class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
             sb.append("[");
             sb.append("base=" + baseIdentity);
             sb.append(", qname=" + qname);
-            sb.append(", description=" + description);
-            sb.append(", reference=" + reference);
-            sb.append(", status=" + status);
             sb.append("]");
             return sb.toString();
         }