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%2FStatementContextBase.java;h=31c9333e560442318779726453759f9ad02906ca;hb=960c11dc4a50f27718a163451c0da65995d5c850;hp=d478818e2abeeef3c9836bb9e31d60ed74512038;hpb=67a0dab285a9bd42b2deec9f2cf6f4df0366c6d5;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index d478818e2a..31c9333e56 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.EnumMap; import java.util.EventListener; import java.util.Iterator; +import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -356,13 +357,19 @@ public abstract class StatementContextBase, E * @param argument statement argument * @return A new substatement */ - public final , CE extends EffectiveStatement> StatementContextBase - createSubstatement(final int offset, final StatementDefinitionContext def, - final StatementSourceReference ref, final String argument) { + public final , CE extends EffectiveStatement> StatementContextBase createSubstatement( + final int offset, final StatementDefinitionContext def, final StatementSourceReference ref, + final String argument) { final ModelProcessingPhase inProgressPhase = getRoot().getSourceContext().getInProgressPhase(); Preconditions.checkState(inProgressPhase != ModelProcessingPhase.EFFECTIVE_MODEL, "Declared statement cannot be added in effective phase at: %s", getStatementSourceReference()); + final Optional> implicitStatement = definition.beforeSubStatementCreated(this, offset, def, ref, argument); + if(implicitStatement.isPresent()) { + final StatementContextBase presentImplicitStmt = implicitStatement.get(); + return presentImplicitStmt.createSubstatement(offset, def, ref, argument); + } + final StatementContextBase ret = new SubstatementContext<>(this, def, ref, argument); substatements = substatements.put(offset, ret); def.onStatementAdded(ret);