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, ExtensionStatement, EffectiveStatement> 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;
+ }
}