*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import org.opendaylight.yangtools.yang.common.YangVersion;
import org.opendaylight.yangtools.yang.model.api.DeviateKind;
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.model.api.stmt.DeviateEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
-import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
import org.slf4j.LoggerFactory;
abstract class AbstractDeviateStatementSupport
- extends AbstractStatementSupport<DeviateKind, DeviateStatement, DeviateEffectiveStatement> {
+ extends BaseStatementSupport<DeviateKind, DeviateStatement, DeviateEffectiveStatement> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractDeviateStatementSupport.class);
private static final SubstatementValidator DEVIATE_NOT_SUPPORTED_SUBSTATEMENT_VALIDATOR =
ctx.getStatementSourceReference(), "String '%s' is not valid deviate argument", value);
}
- @Override
- public final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
- return new DeviateStatementImpl(ctx);
- }
-
- @Override
- public final DeviateEffectiveStatement createEffective(
- final StmtContext<DeviateKind, DeviateStatement, DeviateEffectiveStatement> ctx) {
- return new DeviateEffectiveStatementImpl(ctx);
- }
-
@Override
public final void onFullDefinitionDeclared(
final Mutable<DeviateKind, DeviateStatement, DeviateEffectiveStatement> deviateStmtCtx) {
final Prerequisite<Mutable<?, ?, EffectiveStatement<?, ?>>> targetCtxPrerequisite =
deviateAction.mutatesEffectiveCtxPath(deviateStmtCtx.getRoot(),
- ChildSchemaNodeNamespace.class, deviationTarget.getNodeIdentifiers());
+ SchemaTreeNamespace.class, deviationTarget.getNodeIdentifiers());
deviateAction.apply(new InferenceAction() {
@Override
return null;
}
+ @Override
+ protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new DeviateStatementImpl(ctx, substatements);
+ }
+
+ @Override
+ protected final DeviateStatement createEmptyDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
+ // This is exceedingly unlikely, just reuse the implementation
+ return createDeclared(ctx, ImmutableList.of());
+ }
+
+ @Override
+ protected final DeviateEffectiveStatement createEffective(
+ final StmtContext<DeviateKind, DeviateStatement, DeviateEffectiveStatement> ctx,
+ final DeviateStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new DeviateEffectiveStatementImpl(declared, substatements);
+ }
+
+ @Override
+ protected final DeviateEffectiveStatement createEmptyEffective(
+ final StmtContext<DeviateKind, DeviateStatement, DeviateEffectiveStatement> ctx,
+ final DeviateStatement declared) {
+ // This is exceedingly unlikely, just reuse the implementation
+ return createEffective(ctx, declared, ImmutableList.of());
+ }
+
protected SubstatementValidator getSubstatementValidatorForDeviate(final DeviateKind deviateKind) {
switch (deviateKind) {
case NOT_SUPPORTED: