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%2FUnknownEffectiveStatementImpl.java;h=2ee3f8283dc7c087ddd69b8f0fc3ffca30199039;hb=6d051fb473374c133474d2e90aa68663ae948763;hp=2027a1b9cc714a1150ce1010ba5939d395398457;hpb=65375a4a5fba446fa4da04605d3a066626cf3645;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementImpl.java index 2027a1b9cc..2ee3f8283d 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UnknownEffectiveStatementImpl.java @@ -8,117 +8,42 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -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; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils; -public class UnknownEffectiveStatementImpl extends EffectiveStatementBase> implements - UnknownSchemaNode { +public final class UnknownEffectiveStatementImpl extends UnknownEffectiveStatementBase { - private boolean augmenting; - private boolean addedByUses; - private UnknownSchemaNode original; - - private final QName qName; + private final QName maybeQNameArgument; private final SchemaPath path; - private ExtensionDefinition extension; - private String description; - private String reference; - private final Status status = Status.CURRENT; - private final List unknownNodes = new ArrayList<>(); - private QName nodeType; - private final String nodeParameter; - public UnknownEffectiveStatementImpl(final StmtContext, ?> ctx) { + public UnknownEffectiveStatementImpl(final StmtContext, ?> ctx) { super(ctx); - final StmtContext> extensionInit = ctx - .getAllFromNamespace(ExtensionNamespace.class).get(ctx.getPublicDefinition().getStatementName()); - - if (extensionInit == null) { - extension = null; - nodeType = ctx.getPublicDefinition().getArgumentName(); + // FIXME: Remove following section after fixing 4380 + final UnknownSchemaNode original = ctx.getOriginalCtx() == null ? null : (UnknownSchemaNode) ctx + .getOriginalCtx().buildEffective(); + if (original != null) { + this.maybeQNameArgument = original.getQName(); } else { - extension = (ExtensionEffectiveStatementImpl) extensionInit.buildEffective(); - nodeType = extension.getQName(); - } - - qName = ctx.getStatementArgument(); - path = Utils.getSchemaPath(ctx); - - nodeParameter = (ctx.rawStatementArgument() == null) ? "" : ctx.rawStatementArgument(); - - // TODO init other fields (see Bug1412Test) - - for (final EffectiveStatement effectiveStatement : effectiveSubstatements()) { - if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) { - description = ((DescriptionEffectiveStatementImpl) effectiveStatement).argument(); - } - if (effectiveStatement instanceof ReferenceEffectiveStatementImpl) { - reference = ((ReferenceEffectiveStatementImpl) effectiveStatement).argument(); - } - if (effectiveStatement instanceof UnknownEffectiveStatementImpl) { - unknownNodes.add((UnknownEffectiveStatementImpl) effectiveStatement); + QName maybeQNameArgumentInit = null; + try { + maybeQNameArgumentInit = Utils.qNameFromArgument(ctx, argument()); + } catch (IllegalArgumentException e) { + maybeQNameArgumentInit = getNodeType(); } + this.maybeQNameArgument = maybeQNameArgumentInit; } - - initCopyType(ctx); - } - - private void initCopyType(final StmtContext, ?> ctx) { - - List copyTypesFromOriginal = ctx.getCopyHistory(); - - if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_AUGMENTATION)) { - augmenting = true; - } - if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) { - addedByUses = true; - } - if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES_AUGMENTATION)) { - addedByUses = augmenting = true; - } - - if (ctx.getOriginalCtx() != null) { - original = (UnknownSchemaNode) ctx.getOriginalCtx().buildEffective(); - } - } - - @Override - public QName getNodeType() { - return nodeType; - } - - @Override - public String getNodeParameter() { - return nodeParameter; - } - - @Override - public boolean isAddedByUses() { - return addedByUses; - } - - @Override - public ExtensionDefinition getExtensionDefinition() { - return extension; + path = ctx.getParentContext().getSchemaPath().get().createChild(maybeQNameArgument); } @Override public QName getQName() { - return qName; + return maybeQNameArgument; } @Override @@ -126,34 +51,14 @@ public class UnknownEffectiveStatementImpl extends EffectiveStatementBase getUnknownSchemaNodes() { - return unknownNodes; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getReference() { - return reference; - } - - @Override - public Status getStatus() { - return status; - } - @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + Objects.hashCode(qName); + result = prime * result + Objects.hashCode(maybeQNameArgument); result = prime * result + Objects.hashCode(path); - result = prime * result + Objects.hashCode(nodeType); - result = prime * result + Objects.hashCode(nodeParameter); + result = prime * result + Objects.hashCode(getNodeType()); + result = prime * result + Objects.hashCode(getNodeParameter()); return result; } @@ -169,29 +74,18 @@ public class UnknownEffectiveStatementImpl extends EffectiveStatementBase