X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2Feffective%2FUnknownEffectiveStatementBase.java;h=6223a6959089845ab7c9d9c5ce14b1bc3b84e34d;hb=b704d772ac1fb2bb55a5f817d2173274a7f83fab;hp=738f70d555b8073333d7fbb874fd1a07d522d1a6;hpb=ea32c2c6fac2ebe9d0e30c9c4e5279c5ef0d2314;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementBase.java index 738f70d555..6223a69590 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementBase.java @@ -8,9 +8,11 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; import java.util.List; +import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; @@ -18,8 +20,9 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement; import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace; +import org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory; +import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy; public abstract class UnknownEffectiveStatementBase extends AbstractEffectiveDocumentedNode> implements UnknownSchemaNode { @@ -32,7 +35,7 @@ public abstract class UnknownEffectiveStatementBase extends AbstractEffective private final QName nodeType; private final String nodeParameter; - public UnknownEffectiveStatementBase(final StmtContext, ?> ctx) { + protected UnknownEffectiveStatementBase(final StmtContext, ?> ctx) { super(ctx); final StmtContext> extensionInit = ctx @@ -40,19 +43,22 @@ public abstract class UnknownEffectiveStatementBase extends AbstractEffective if (extensionInit == null) { extension = null; - nodeType = ctx.getPublicDefinition().getArgumentName(); + nodeType = ctx.getPublicDefinition().getStatementName(); } else { - extension = (ExtensionEffectiveStatementImpl) extensionInit.buildEffective(); - nodeType = extension.getQName(); + final EffectiveStatement effective = extensionInit.buildEffective(); + Preconditions.checkState(effective instanceof ExtensionDefinition, + "Statement %s is not an ExtensionDefinition", effective); + extension = (ExtensionDefinition) extensionInit.buildEffective(); + nodeType = null; } // initCopyType - List copyTypesFromOriginal = ctx.getCopyHistory(); - if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES_AUGMENTATION)) { + final CopyHistory copyTypesFromOriginal = ctx.getCopyHistory(); + if (copyTypesFromOriginal.contains(CopyType.ADDED_BY_USES_AUGMENTATION)) { this.addedByUses = this.addedByAugmentation = true; } else { - this.addedByAugmentation = copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_AUGMENTATION); - this.addedByUses = copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES); + this.addedByAugmentation = copyTypesFromOriginal.contains(CopyType.ADDED_BY_AUGMENTATION); + this.addedByUses = copyTypesFromOriginal.contains(CopyType.ADDED_BY_USES); } nodeParameter = (ctx.rawStatementArgument() == null) ? "" : ctx.rawStatementArgument(); @@ -74,7 +80,7 @@ public abstract class UnknownEffectiveStatementBase extends AbstractEffective @Override public QName getNodeType() { - return nodeType; + return extension == null ? nodeType : extension.getQName(); } @Override @@ -92,6 +98,7 @@ public abstract class UnknownEffectiveStatementBase extends AbstractEffective return extension; } + @Nonnull @Override public List getUnknownSchemaNodes() { return unknownNodes; @@ -99,13 +106,9 @@ public abstract class UnknownEffectiveStatementBase extends AbstractEffective @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(nodeType.getNamespace()); - sb.append(":"); - sb.append(nodeType.getLocalName()); - sb.append(" "); - sb.append(nodeParameter); - return sb.toString(); - } + final QName type = getNodeType(); + return String.valueOf(type.getNamespace()) + + ":" + type.getLocalName() + " " + nodeParameter; + } }