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%2Freactor%2FSubstatementContext.java;h=aa64a559364d48fb31858e6573cd9e81787421ae;hb=fa1ed213acc06358d9b759fa871e2b360605734e;hp=ce49764dab2eb53384d3ba9c5fbbfe481a0d26b1;hpb=4223fda8e0219fe823eca7e2321ef4dd65dc8566;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java index ce49764dab..aa64a55936 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java @@ -14,8 +14,10 @@ import com.google.common.collect.ImmutableSet; import java.util.ArrayList; import java.util.Collection; import java.util.Set; +import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; @@ -30,6 +32,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; +import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.NamespaceStorageNode; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.Registry; import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace; @@ -63,8 +66,9 @@ final class SubstatementContext, E extends Eff this.parent = newParent; if (newQNameModule != null) { - if (original.argument instanceof QName) { - final QName originalQName = (QName) original.argument; + final A originalArg = original.argument; + if (originalArg instanceof QName) { + final QName originalQName = (QName) originalArg; this.argument = (A) getFromNamespace(QNameCacheNamespace.class, QName.create(newQNameModule, originalQName.getLocalName())); } else if (StmtContextUtils.producesDeclared(original, KeyStatement.class)) { @@ -93,6 +97,7 @@ final class SubstatementContext, E extends Eff return parent.getBehaviourRegistry(); } + @Nonnull @Override public RootStatementContext getRoot() { return parent.getRoot(); @@ -112,6 +117,9 @@ final class SubstatementContext, E extends Eff @Override public StatementContextBase createCopy(final QNameModule newQNameModule, final StatementContextBase newParent, final CopyType typeOfCopy) { + Preconditions.checkState(getCompletedPhase() == ModelProcessingPhase.EFFECTIVE_MODEL, + "Attempted to copy statement {} which has completed phase {}", this, getCompletedPhase()); + final SubstatementContext copy = new SubstatementContext<>(this, newQNameModule, newParent, typeOfCopy); copy.appendCopyHistory(typeOfCopy, this.getCopyHistory()); @@ -238,6 +246,7 @@ final class SubstatementContext, E extends Eff return maybeParentPath.orNull(); } + @Nonnull @Override public Optional getSchemaPath() { SchemaPath local = schemaPath; @@ -298,4 +307,14 @@ final class SubstatementContext, E extends Eff public boolean isEnabledSemanticVersioning() { return parent.isEnabledSemanticVersioning(); } + + @Override + public YangVersion getRootVersion() { + return getRoot().getRootVersion(); + } + + @Override + public void setRootVersion(final YangVersion version) { + getRoot().setRootVersion(version); + } }