*/
package org.opendaylight.yangtools.rfc8528.parser;
+import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.StatementDefinition;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseQNameStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
public final class MountPointStatementSupport
- extends AbstractStatementSupport<QName, MountPointStatement, MountPointEffectiveStatement> {
+ extends BaseQNameStatementSupport<MountPointStatement, MountPointEffectiveStatement> {
- private static final class Declared extends AbstractDeclaredStatement<QName> implements MountPointStatement {
- Declared(final StmtContext<QName, ?, ?> context) {
- super(context);
- }
-
- @Override
- public QName getArgument() {
- return argument();
+ private static final class Declared extends WithSubstatements implements MountPointStatement {
+ Declared(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(argument, substatements);
}
}
private final @NonNull SchemaPath path;
- Effective(final StmtContext<QName, MountPointStatement, ?> ctx) {
- super(ctx);
+ Effective(final StmtContext<QName, MountPointStatement, ?> ctx,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(ctx, substatements);
path = ctx.coerceParentContext().getSchemaPath().get().createChild(argument());
}
}
@Override
+ @Deprecated
public SchemaPath getPath() {
return path;
}
+
+ @Override
+ public MountPointEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
}
private static final MountPointStatementSupport INSTANCE = new MountPointStatementSupport(
return INSTANCE;
}
- @Override
- public MountPointStatement createDeclared(final StmtContext<QName, MountPointStatement, ?> ctx) {
- return new Declared(ctx);
- }
-
- @Override
- public MountPointEffectiveStatement createEffective(
- final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx) {
- return new Effective(ctx);
- }
-
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
return StmtContextUtils.parseIdentifier(ctx, value);
@Override
public QName adaptArgumentValue(final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx,
final QNameModule targetModule) {
- return ctx.coerceStatementArgument().withModule(targetModule).intern();
+ return ctx.coerceStatementArgument().bindTo(targetModule).intern();
}
@Override
protected SubstatementValidator getSubstatementValidator() {
return validator;
}
+
+ @Override
+ protected MountPointStatement createDeclared(@NonNull final StmtContext<QName, MountPointStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new Declared(ctx.coerceStatementArgument(), substatements);
+ }
+
+ @Override
+ protected MountPointStatement createEmptyDeclared(final StmtContext<QName, MountPointStatement, ?> ctx) {
+ return createDeclared(ctx, ImmutableList.of());
+ }
+
+ @Override
+ protected MountPointEffectiveStatement createEffective(
+ final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx,
+ final MountPointStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new Effective(ctx, substatements);
+ }
+
+ @Override
+ protected MountPointEffectiveStatement createEmptyEffective(
+ final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx,
+ final MountPointStatement declared) {
+ return createEffective(ctx, declared, ImmutableList.of());
+ }
}