import org.opendaylight.yangtools.yang.model.api.*;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractSchemaNodeBuilder;
import org.opendaylight.yangtools.yang.parser.util.Comparators;
-import org.opendaylight.yangtools.yang.parser.util.YangParseException;
public final class IdentitySchemaNodeBuilder extends AbstractSchemaNodeBuilder {
private boolean isBuilt;
instance = new IdentitySchemaNodeImpl(qname, path, derivedIdentities);
}
+ IdentitySchemaNodeBuilder(final String moduleName, IdentitySchemaNode base) {
+ super(moduleName, 0, base.getQName());
+ schemaPath = base.getPath();
+ derivedIdentities.addAll(base.getDerivedIdentities());
+ unknownNodes.addAll(base.getUnknownSchemaNodes());
+ instance = new IdentitySchemaNodeImpl(qname, schemaPath, derivedIdentities);
+ }
+
@Override
public IdentitySchemaNode build() {
if (!isBuilt) {
- if (!(parentBuilder instanceof ModuleBuilder)) {
- throw new YangParseException(moduleName, line, "Identity can be defined only under module (was" + parentBuilder + ")");
- }
- if (baseIdentity == null) {
- if(baseIdentityBuilder != null) {
- baseIdentityBuilder.addDerivedIdentity(instance);
- baseIdentity = baseIdentityBuilder.build();
- }
- } else {
- if(baseIdentity instanceof IdentitySchemaNodeImpl) {
- ((IdentitySchemaNodeImpl)baseIdentity).toBuilder().addDerivedIdentity(instance);
- }
+ if(baseIdentityBuilder != null) {
+ baseIdentityBuilder.addDerivedIdentity(instance);
+ baseIdentity = baseIdentityBuilder.build();
}
instance.setBaseIdentity(baseIdentity);
this.baseIdentityBuilder = baseType;
}
- public void setBaseIdentity(final IdentitySchemaNode baseType) {
- this.baseIdentity = baseType;
- }
-
public void addDerivedIdentity(IdentitySchemaNode derivedIdentity) {
if (derivedIdentity != null) {
derivedIdentities.add(derivedIdentity);
return "identity " + qname.getLocalName();
}
- public final class IdentitySchemaNodeImpl implements IdentitySchemaNode {
+ private static final class IdentitySchemaNodeImpl implements IdentitySchemaNode {
private final QName qname;
private final SchemaPath path;
private IdentitySchemaNode baseIdentity;
}
}
- public IdentitySchemaNodeBuilder toBuilder() {
- return IdentitySchemaNodeBuilder.this;
- }
-
@Override
public int hashCode() {
final int prime = 31;