package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
-import java.util.Set;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
-
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
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.StmtContext;
public UnknownEffectiveStatementImpl(final StmtContext<String, UnknownStatement<String>, ?> ctx) {
super(ctx);
- extension = (ExtensionEffectiveStatementImpl) ctx.getAllFromNamespace(ExtensionNamespace.class).get(ctx
- .getPublicDefinition().getStatementName()).buildEffective();
+ final StmtContext<?, ExtensionStatement, EffectiveStatement<QName, ExtensionStatement>> extensionInit = ctx
+ .getAllFromNamespace(ExtensionNamespace.class).get(ctx.getPublicDefinition().getStatementName());
+ if (extensionInit == null) {
+ extension = null;
+ nodeType = ctx.getPublicDefinition().getArgumentName();
+
+ if (argument() == null || argument().isEmpty()) {
+ qName = nodeType;
+ } else {
+ qName = QName.create(Utils.qNameFromArgument(ctx, ctx.getStatementArgument()).getModule(), argument());
+ }
+ } else {
+ extension = (ExtensionEffectiveStatementImpl) extensionInit.buildEffective();
+ nodeType = extension.getQName();
+
+ if (argument() == null || argument().isEmpty()) {
+ qName = extension.getQName();
+ } else {
+ qName = QName.create(Utils.qNameFromArgument(ctx, ctx.getStatementArgument()).getModule(), argument());
+ }
+ }
- nodeType = extension.getQName();
- nodeParameter = argument();
- qName = argument() != null ? QName.create(Utils.qNameFromArgument(ctx, ctx.getStatementArgument()).getModule(), argument()) : null;
path = Utils.getSchemaPath(ctx);
+ nodeParameter = argument();
// TODO init other fields (see Bug1412Test)
initCopyType(ctx);
}
- private void initCopyType(
- final StmtContext<String, UnknownStatement<String>, ?> ctx) {
+ private void initCopyType(final StmtContext<String, UnknownStatement<String>, ?> ctx) {
- Set<TypeOfCopy> copyTypesFromOriginal = StmtContextUtils.getCopyTypesFromOriginal(ctx);
+ List<TypeOfCopy> copyTypesFromOriginal = ctx.getCopyHistory();
- if(copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_AUGMENTATION)) {
+ if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_AUGMENTATION)) {
augmenting = true;
}
- if(copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) {
+ if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) {
addedByUses = true;
}
- if(copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES_AUGMENTATION)) {
+ if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES_AUGMENTATION)) {
addedByUses = augmenting = true;
}
- if (ctx.getTypeOfCopy() != TypeOfCopy.ORIGINAL) {
+ if (ctx.getOriginalCtx() != null) {
original = (UnknownSchemaNode) ctx.getOriginalCtx().buildEffective();
}
}