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%2FStatementDefinitionContext.java;h=bab8ef1d23dd0fd74e637fe27e543e142839a470;hb=4e23de902b25ea5cdd8e0e21525f51a30adc61d1;hp=bbd883938ed2ea4e177cff754872ad9f40184f0c;hpb=83d995ce392fdea21a84c159add074fabecc4402;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java index bbd883938e..bab8ef1d23 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java @@ -15,6 +15,7 @@ import java.util.Map; import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; @@ -24,11 +25,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference; public class StatementDefinitionContext, E extends EffectiveStatement> { private final StatementSupport support; private final Map> argumentSpecificSubDefinitions; + private Map, StatementDefinitionContext> unknownStmtDefsOfYangStmts; public StatementDefinitionContext(final StatementSupport support) { this.support = Preconditions.checkNotNull(support); @@ -40,7 +41,11 @@ public class StatementDefinitionContext, E ext } public A parseArgumentValue(final StmtContext context, final String value) { - return support.parseArgumentValue(context,value); + return support.parseArgumentValue(context, value); + } + + public A adaptArgumentValue(final StmtContext context, final QNameModule targetModule) { + return support.adaptArgumentValue(context, targetModule); } public void checkNamespaceAllowed(final Class> namespace) { @@ -51,9 +56,8 @@ public class StatementDefinitionContext, E ext return support.getPublicView(); } - public Optional> beforeSubStatementCreated(final Mutable stmt, final int offset, final StatementDefinitionContext def, final StatementSourceReference ref, - final String argument) { - return support.beforeSubStatementCreated(stmt, offset, def, ref, argument); + public Optional> getImplicitParentFor(final StatementDefinition stmtDef) { + return support.getImplicitParentFor(stmtDef); } public boolean onStatementAdded(final Mutable stmt) { @@ -61,23 +65,22 @@ public class StatementDefinitionContext, E ext return false; } - public void onDeclarationFinished(final Mutable statement, final ModelProcessingPhase phase) { switch (phase) { - case SOURCE_PRE_LINKAGE: - support.onPreLinkageDeclared(statement); - break; - case SOURCE_LINKAGE: - support.onLinkageDeclared(statement); - break; - case STATEMENT_DEFINITION: - support.onStatementDefinitionDeclared(statement); - break; - case FULL_DECLARATION: - support.onFullDefinitionDeclared(statement); - break; - default: - break; + case SOURCE_PRE_LINKAGE: + support.onPreLinkageDeclared(statement); + break; + case SOURCE_LINKAGE: + support.onLinkageDeclared(statement); + break; + case STATEMENT_DEFINITION: + support.onStatementDefinitionDeclared(statement); + break; + case FULL_DECLARATION: + support.onFullDefinitionDeclared(statement); + break; + default: + break; } } @@ -89,10 +92,18 @@ public class StatementDefinitionContext, E ext return support.getArgumentName() != null; } + public boolean isArgumentYinElement() { + return support.isArgumentYinElement(); + } + public QName getStatementName() { return support.getStatementName(); } + public QName getArgumentName() { + return support.getArgumentName(); + } + @Override public final String toString() { return addToStringAttributes(MoreObjects.toStringHelper(this).omitNullValues()).toString(); @@ -103,7 +114,7 @@ public class StatementDefinitionContext, E ext } @Nonnull - public StatementDefinitionContext getSubDefinitionSpecificForArgument(final String argument) { + StatementDefinitionContext getSubDefinitionSpecificForArgument(final String argument) { if (!hasArgumentSpecificSubDefinitions()) { return this; } @@ -119,11 +130,39 @@ public class StatementDefinitionContext, E ext return potential; } - public boolean hasArgumentSpecificSubDefinitions() { + boolean hasArgumentSpecificSubDefinitions() { return support.hasArgumentSpecificSupports(); } String internArgument(final String rawArgument) { return support.internArgument(rawArgument); } + + StatementDefinitionContext getAsUnknownStatementDefinition( + final StatementDefinitionContext yangStmtDef) { + if (unknownStmtDefsOfYangStmts != null) { + final StatementDefinitionContext existing = unknownStmtDefsOfYangStmts.get(yangStmtDef); + if (existing != null) { + return existing; + } + } else { + unknownStmtDefsOfYangStmts = new HashMap<>(); + } + + @SuppressWarnings("unchecked") + final StatementDefinitionContext ret = support.getUnknownStatementDefinitionOf( + yangStmtDef.getPublicView()).map(StatementDefinitionContext::new).orElse(null); + if (ret != null) { + unknownStmtDefsOfYangStmts.put(yangStmtDef, ret); + } + return ret; + } + + boolean isIgnoringIfFeatures() { + return support.isIgnoringIfFeatures(); + } + + boolean isIgnoringConfig() { + return support.isIgnoringConfig(); + } }