X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2FAbstractDeclaredStatement.java;h=aa722d0dc5ee7db9eb465d858c6309ecf00c6f30;hb=974795919a77eb2c619a88a02d5151b98cdff73a;hp=a457fb81cd6f06c82bc148bcbe0f8834dd63c668;hpb=6c440613986f0bac936da8a29c4077aa051415b7;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredStatement.java index a457fb81cd..aa722d0dc5 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredStatement.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredStatement.java @@ -13,6 +13,7 @@ import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableList; import java.util.Collection; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -28,7 +29,7 @@ public abstract class AbstractDeclaredStatement extends AbstractModelStatemen } @Override - public final StatementSource getStatementSource() { + public StatementSource getStatementSource() { return StatementSource.DECLARATION; } @@ -65,7 +66,55 @@ public abstract class AbstractDeclaredStatement extends AbstractModelStatemen } } + public abstract static class WithQNameArgument extends AbstractDeclaredStatement { + public abstract static class WithSubstatements extends WithQNameArgument { + private final @NonNull Object substatements; + + protected WithSubstatements(final QName argument, + final ImmutableList> substatements) { + super(argument); + this.substatements = maskList(substatements); + } + + @Override + public final Collection> declaredSubstatements() { + return unmaskList(substatements); + } + } + + private final QName argument; + + protected WithQNameArgument(final QName argument) { + this.argument = requireNonNull(argument); + } + + @Override + public final @NonNull QName argument() { + return argument; + } + + @Override + public final String rawArgument() { + return argument.getLocalName(); + } + } + public abstract static class WithRawStringArgument extends WithRawArgument { + public abstract static class WithSubstatements extends WithRawStringArgument { + private final @NonNull Object substatements; + + protected WithSubstatements(final StmtContext context, + final ImmutableList> substatements) { + super(context); + this.substatements = maskList(substatements); + } + + @Override + public final Collection> declaredSubstatements() { + return unmaskList(substatements); + } + } + protected WithRawStringArgument(final StmtContext context) { super(context); } @@ -77,6 +126,21 @@ public abstract class AbstractDeclaredStatement extends AbstractModelStatemen } public abstract static class WithArgument extends WithRawArgument { + public abstract static class WithSubstatements extends WithArgument { + private final @NonNull Object substatements; + + protected WithSubstatements(final StmtContext context, + final ImmutableList> substatements) { + super(context); + this.substatements = maskList(substatements); + } + + @Override + public final Collection> declaredSubstatements() { + return unmaskList(substatements); + } + } + private final A argument; protected WithArgument(final StmtContext context) { @@ -91,6 +155,21 @@ public abstract class AbstractDeclaredStatement extends AbstractModelStatemen } public abstract static class ArgumentToString extends AbstractDeclaredStatement { + public abstract static class WithSubstatements extends ArgumentToString { + private final @NonNull Object substatements; + + protected WithSubstatements(final A argument, + final ImmutableList> substatements) { + super(argument); + this.substatements = maskList(substatements); + } + + @Override + public final Collection> declaredSubstatements() { + return unmaskList(substatements); + } + } + private final @NonNull A argument; protected ArgumentToString(final A argument) {