Added getParent() method to DataSchemaNode and DataNodeContainer. Fixed Bugs.
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / IdentityrefTypeBuilder.java
index 9e578d6c03820ad0da79ee5a7cb2e45c67cd8aaa..617368f9c73e1aca480865c1a85cad16ffebd04c 100644 (file)
@@ -15,44 +15,49 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.YangNode;
 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.util.BaseTypes;
 import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
 import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
 import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
 import org.opendaylight.yangtools.yang.parser.util.YangParseException;
 
 /**
- * Builder for YANG union type. User can add type to this union as
- * TypeDefinition object (resolved type) or in form of TypeDefinitionBuilder.
- * When build is called, types in builder form will be built and add to resolved
- * types.
+ * Builder for YANG identityref type.
  */
 public final class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder {
     private static final String NAME = "identityref";
 
     private final String baseString;
     private final SchemaPath schemaPath;
-    private QName baseQName;
+    private IdentitySchemaNodeBuilder baseIdentity;
 
-    IdentityrefTypeBuilder(final String moduleName, final int line, final String baseString, final SchemaPath schemaPath) {
-        super(moduleName, line, null);
+    public IdentityrefTypeBuilder(final String moduleName, final int line, final String baseString,
+            final SchemaPath schemaPath) {
+        super(moduleName, line, BaseTypes.constructQName(NAME));
         this.baseString = baseString;
         this.schemaPath = schemaPath;
     }
 
     @Override
-    public IdentityrefType build() {
-        return new IdentityrefType(baseQName, schemaPath);
+    public void setQName(QName qname) {
+        this.qname = qname;
+    }
+
+    @Override
+    public IdentityrefType build(YangNode parent) {
+        return new IdentityrefType(baseIdentity.build(parent), schemaPath);
     }
 
     public String getBaseString() {
         return baseString;
     }
 
-    public void setBaseQName(QName baseQName) {
-        this.baseQName = baseQName;
+    public void setBaseIdentity(IdentitySchemaNodeBuilder baseIdentity) {
+        this.baseIdentity = baseIdentity;
     }
 
     @Override
@@ -122,7 +127,7 @@ public final class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder imple
 
     @Override
     public SchemaPath getPath() {
-        return null;
+        return schemaPath;
     }
 
     @Override
@@ -207,8 +212,10 @@ public final class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder imple
 
     @Override
     public String toString() {
-        final StringBuilder result = new StringBuilder(IdentityrefTypeBuilder.class.getSimpleName() + "[");
-        result.append(", base=" + baseQName);
+        final StringBuilder result = new StringBuilder(IdentityrefTypeBuilder.class.getSimpleName());
+        result.append("[");
+        result.append(", base=");
+        result.append(baseIdentity);
         result.append("]");
         return result.toString();
     }