import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
-import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
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.stmt.InputStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RpcEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@Beta
public final class RpcStatementSupport extends AbstractSchemaTreeStatementSupport<RpcStatement, RpcEffectiveStatement> {
- private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
- YangStmtMapping.RPC)
- .addOptional(YangStmtMapping.DESCRIPTION)
- .addAny(YangStmtMapping.GROUPING)
- .addAny(YangStmtMapping.IF_FEATURE)
- .addOptional(YangStmtMapping.INPUT)
- .addOptional(YangStmtMapping.OUTPUT)
- .addOptional(YangStmtMapping.REFERENCE)
- .addOptional(YangStmtMapping.STATUS)
- .addAny(YangStmtMapping.TYPEDEF)
- .build();
- private static final @NonNull RpcStatementSupport RFC6020_INSTANCE = new RpcStatementSupport(
- InputStatementSupport.rfc6020Instance(), OutputStatementSupport.rfc6020Instance());
- private static final @NonNull RpcStatementSupport RFC7950_INSTANCE = new RpcStatementSupport(
- InputStatementSupport.rfc7950Instance(), OutputStatementSupport.rfc7950Instance());
+ private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+ SubstatementValidator.builder(YangStmtMapping.RPC)
+ .addOptional(YangStmtMapping.DESCRIPTION)
+ .addAny(YangStmtMapping.GROUPING)
+ .addAny(YangStmtMapping.IF_FEATURE)
+ .addOptional(YangStmtMapping.INPUT)
+ .addOptional(YangStmtMapping.OUTPUT)
+ .addOptional(YangStmtMapping.REFERENCE)
+ .addOptional(YangStmtMapping.STATUS)
+ .addAny(YangStmtMapping.TYPEDEF)
+ .build();
private final InputStatementSupport implicitInput;
private final OutputStatementSupport implicitOutput;
- private RpcStatementSupport(final InputStatementSupport implicitInput,
+ public RpcStatementSupport(final YangParserConfiguration config, final InputStatementSupport implicitInput,
final OutputStatementSupport implicitOutput) {
- super(YangStmtMapping.RPC, StatementPolicy.reject());
+ super(YangStmtMapping.RPC, StatementPolicy.reject(), config);
this.implicitInput = requireNonNull(implicitInput);
this.implicitOutput = requireNonNull(implicitOutput);
}
- public static @NonNull RpcStatementSupport rfc6020Instance() {
- return RFC6020_INSTANCE;
- }
-
- public static @NonNull RpcStatementSupport rfc7950Instance() {
- return RFC7950_INSTANCE;
- }
-
@Override
public void onFullDefinitionDeclared(final Mutable<QName, RpcStatement, RpcEffectiveStatement> stmt) {
super.onFullDefinitionDeclared(stmt);
return DeclaredStatements.createRpc(ctx.getArgument(), substatements);
}
+ @Override
+ protected RpcStatement attachDeclarationReference(final RpcStatement stmt, final DeclarationReference reference) {
+ return DeclaredStatementDecorators.decorateRpc(stmt, reference);
+ }
+
@Override
protected RpcEffectiveStatement createEffective(final Current<QName, RpcStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {