Added more descriptive parsing exceptions.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / AnyXmlBuilder.java
index d5f3c52497bf593880c6c46ee9f4672f1605f8bb..6b6063cc953a1063758e7a4f1ed7bd304cd20dd7 100644 (file)
@@ -18,50 +18,46 @@ 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.AbstractSchemaNodeBuilder;
-import org.opendaylight.controller.yang.parser.builder.api.ConfigNode;
 import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
 import org.opendaylight.controller.yang.parser.builder.api.GroupingMember;
+import org.opendaylight.controller.yang.parser.util.Comparators;
 
-public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements DataSchemaNodeBuilder, GroupingMember,
-        ConfigNode {
+public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements DataSchemaNodeBuilder, GroupingMember {
     private boolean built;
     private final AnyXmlSchemaNodeImpl instance;
     private final ConstraintsBuilder constraints;
 
-    private List<UnknownSchemaNode> unknownNodes;
-
     private Boolean configuration;
     private boolean augmenting;
     private boolean addedByUses;
 
-    public AnyXmlBuilder(final QName qname, final SchemaPath schemaPath, final int line) {
-        super(qname, line);
-        this.path = schemaPath;
+    public AnyXmlBuilder(final String moduleName, final int line, final QName qname, final SchemaPath schemaPath) {
+        super(moduleName, line, qname);
+        this.schemaPath = schemaPath;
         instance = new AnyXmlSchemaNodeImpl(qname);
-        constraints = new ConstraintsBuilder(line);
+        constraints = new ConstraintsBuilder(moduleName, line);
     }
 
     public AnyXmlBuilder(final AnyXmlBuilder builder) {
-        super(builder.qname, builder.line);
+        super(builder.getModuleName(), builder.getLine(), builder.getQName());
+        parent = builder.getParent();
         instance = new AnyXmlSchemaNodeImpl(qname);
-        constraints = builder.constraints;
-        path = builder.path;
+        constraints = builder.getConstraints();
+        schemaPath = builder.getPath();
         unknownNodes = builder.unknownNodes;
-        for (UnknownSchemaNodeBuilder un : builder.addedUnknownNodes) {
-            addedUnknownNodes.add(un);
-        }
-        description = builder.description;
-        reference = builder.reference;
-        status = builder.status;
-        configuration = builder.configuration;
-        augmenting = builder.augmenting;
-        addedByUses = builder.addedByUses;
+        addedUnknownNodes.addAll(builder.getUnknownNodes());
+        description = builder.getDescription();
+        reference = builder.getReference();
+        status = builder.getStatus();
+        configuration = builder.isConfiguration();
+        augmenting = builder.isAugmenting();
+        addedByUses = builder.isAddedByUses();
     }
 
     @Override
     public AnyXmlSchemaNode build() {
         if (!built) {
-            instance.setPath(path);
+            instance.setPath(schemaPath);
             instance.setConstraints(constraints.build());
             instance.setDescription(description);
             instance.setReference(reference);
@@ -77,6 +73,7 @@ public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements Da
                     unknownNodes.add(b.build());
                 }
             }
+            Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP);
             instance.setUnknownSchemaNodes(unknownNodes);
 
             built = true;
@@ -93,10 +90,6 @@ public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements Da
         return addedUnknownNodes;
     }
 
-    public void setUnknownNodes(List<UnknownSchemaNode> unknownNodes) {
-        this.unknownNodes = unknownNodes;
-    }
-
     @Override
     public boolean isAugmenting() {
         return augmenting;
@@ -127,6 +120,48 @@ public final class AnyXmlBuilder extends AbstractSchemaNodeBuilder implements Da
         this.configuration = configuration;
     }
 
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        AnyXmlBuilder other = (AnyXmlBuilder) obj;
+        if (schemaPath == null) {
+            if (other.schemaPath != null) {
+                return false;
+            }
+        } else if (!schemaPath.equals(other.schemaPath)) {
+            return false;
+        }
+        if (parent == null) {
+            if (other.parent != null) {
+                return false;
+            }
+        } else if (!parent.equals(other.parent)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "anyxml " + qname.getLocalName();
+    }
+
     private final class AnyXmlSchemaNodeImpl implements AnyXmlSchemaNode {
         private final QName qname;
         private SchemaPath path;