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%2FDeclaredEffectiveStatementBase.java;h=212a65e8137163f6383125cadf80cbb037e8375f;hb=635af1cfca70d0be0192f997c155d80cbbc5ba5d;hp=88ed942844aac749b65e860f176510569b6cc44a;hpb=0d77417cb1aab5cacac7503052eb0ca8faacc01e;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeclaredEffectiveStatementBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeclaredEffectiveStatementBase.java index 88ed942844..212a65e813 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeclaredEffectiveStatementBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeclaredEffectiveStatementBase.java @@ -12,10 +12,13 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; -public abstract class DeclaredEffectiveStatementBase> - extends EffectiveStatementBase { +public abstract class DeclaredEffectiveStatementBase> extends + EffectiveStatementBase { + private final StatementSource statementSource; + private final A argument; private final D declaredInstance; public DeclaredEffectiveStatementBase(final StmtContext ctx) { @@ -34,8 +37,21 @@ public abstract class DeclaredEffectiveStatementBase ctx, boolean buildUnknownSubstatements) { + protected DeclaredEffectiveStatementBase(StmtContext ctx, final boolean buildUnknownSubstatements) { super(ctx, buildUnknownSubstatements); + + this.argument = ctx.getStatementArgument(); + this.statementSource = ctx.getStatementSource(); + + /* + * Share original instance of declared statement between all effective + * statements which have been copied or derived from this original + * declared statement. + */ + StatementContextBase originalCtx = (StatementContextBase) ctx.getOriginalCtx(); + if (originalCtx != null) { + ctx = originalCtx; + } declaredInstance = Verify.verifyNotNull(ctx.buildDeclared(), "Statement %s failed to build declared statement", ctx); } @@ -46,17 +62,17 @@ public abstract class DeclaredEffectiveStatementBase