Case statements are rather simple, migrate them to yang-model-ri.
JIRA: YANGTOOLS-1241
Change-Id: I71e1992e51f219f20f82cd02a4c08005eb2ac72c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBelongsToStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBitStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyCaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyChoiceStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyConfigStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyContactStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBelongsToStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBitStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularCaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularChoiceStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularConfigStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularContactStatement;
: new RegularBitStatement(argument, substatements);
}
+ public static CaseStatement createCase(final QName argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return substatements.isEmpty() ? new EmptyCaseStatement(argument)
+ : new RegularCaseStatement(argument, substatements);
+ }
+
public static ChoiceStatement createChoice(final QName argument,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
return substatements.isEmpty() ? new EmptyChoiceStatement(argument)
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ConfigEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.AugmentEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.ChoiceEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.ContainerEffectiveStatementImpl;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredCaseEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredInputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeclaredOutputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.DeviateEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularYinElementEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RpcEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.TypedefEffectiveStatementImpl;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredCaseEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredInputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.UndeclaredOutputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
: new RegularBitEffectiveStatement(declared, substatements);
}
+ public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original,
+ final Immutable path, final int flags, final @Nullable CaseSchemaNode newOriginal) {
+ if (original instanceof DeclaredCaseEffectiveStatement) {
+ return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, path, flags,
+ newOriginal);
+ } else if (original instanceof UndeclaredCaseEffectiveStatement) {
+ return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, path, flags,
+ newOriginal);
+ } else {
+ throw new IllegalArgumentException("Unsupported origin " + original);
+ }
+ }
+
+ public static CaseEffectiveStatement createCase(final Immutable path,
+ final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+ final @Nullable CaseSchemaNode original) {
+ return new UndeclaredCaseEffectiveStatement(substatements, path, flags, original);
+ }
+
+ public static CaseEffectiveStatement createCase(final CaseStatement declared, final Immutable path,
+ final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+ final @Nullable CaseSchemaNode original) {
+ return new DeclaredCaseEffectiveStatement(declared, substatements, path, flags, original);
+ }
+
public static ChoiceEffectiveStatement copyChoice(final ChoiceEffectiveStatement original,
- final Immutable path, final int flags, final @Nullable ChoiceSchemaNode orig) {
+ final Immutable path, final int flags, final @Nullable ChoiceSchemaNode newOriginal) {
checkArgument(original instanceof ChoiceEffectiveStatementImpl, "Unsupported original %s", original);
- return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, path, flags, orig);
+ return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, path, flags, newOriginal);
}
public static ChoiceEffectiveStatement createChoice(final ChoiceStatement declared, final Immutable path,
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredCaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredInputStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUndeclaredOutputStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredCaseStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredInputStatement;
import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUndeclaredOutputStatement;
// Hidden on purpose
}
+ public static CaseStatement createCase(final QName argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return substatements.isEmpty() ? new EmptyUndeclaredCaseStatement(argument)
+ : new RegularUndeclaredCaseStatement(argument, substatements);
+ }
+
public static InputStatement createInput(final QName argument,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
return substatements.isEmpty() ? new EmptyUndeclaredInputStatement(argument)
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithQNameArgument;
-class EmptyCaseStatement extends WithQNameArgument implements CaseStatement {
- EmptyCaseStatement(final QName argument) {
+public class EmptyCaseStatement extends WithQNameArgument implements CaseStatement {
+ public EmptyCaseStatement(final QName argument) {
super(argument);
}
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
-final class EmptyUndeclaredCaseStatement extends EmptyCaseStatement {
- EmptyUndeclaredCaseStatement(final QName argument) {
+public final class EmptyUndeclaredCaseStatement extends EmptyCaseStatement {
+ public EmptyUndeclaredCaseStatement(final QName argument) {
super(argument);
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
import com.google.common.collect.ImmutableList;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
-class RegularCaseStatement extends WithSubstatements implements CaseStatement {
- RegularCaseStatement(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+public class RegularCaseStatement extends WithSubstatements implements CaseStatement {
+ public RegularCaseStatement(final QName argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
super(argument, substatements);
}
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl;
import com.google.common.collect.ImmutableList;
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;
-final class RegularUndeclaredCaseStatement extends RegularCaseStatement {
- RegularUndeclaredCaseStatement(final QName argument,
+public final class RegularUndeclaredCaseStatement extends RegularCaseStatement {
+ public RegularUndeclaredCaseStatement(final QName argument,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
super(argument, substatements);
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
}
public ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final Immutable path,
- final int flags, final ChoiceSchemaNode original) {
+ final int flags, final ChoiceSchemaNode newOriginal) {
super(origEffective);
this.path = requireNonNull(path);
this.flags = flags;
this.defaultCase = origEffective.defaultCase;
- this.original = original;
+ this.original = newOriginal;
}
@Override
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
import static java.util.Objects.requireNonNull;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
-final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
- implements CaseEffectiveStatementMixin {
+public final class DeclaredCaseEffectiveStatement
+ extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
private final CaseSchemaNode original;
private final @NonNull Immutable path;
private final int flags;
- DeclaredCaseEffectiveStatement(final CaseStatement declared,
+ public DeclaredCaseEffectiveStatement(final CaseStatement declared,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
final int flags, final @Nullable CaseSchemaNode original) {
super(declared, substatements);
this.original = original;
}
- DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
+ public DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
final int flags, final @Nullable CaseSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
import static java.util.Objects.requireNonNull;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
-final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
- implements CaseEffectiveStatementMixin {
+public final class UndeclaredCaseEffectiveStatement
+ extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
private final @Nullable CaseSchemaNode original;
private final @NonNull Immutable path;
private final int flags;
- UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+ public UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
final Immutable path, final int flags, final @Nullable CaseSchemaNode original) {
super(substatements);
this.path = requireNonNull(path);
this.original = original;
}
- UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
+ public UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
final int flags, final @Nullable CaseSchemaNode original) {
super(origEffective);
this.path = requireNonNull(path);
requires static org.eclipse.jdt.annotation;
// FIXME: hide these
- exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key;
exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
exports org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentImplicitHandlingNamespace;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentStatementRFC6020Support;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment.AugmentStatementRFC7950Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_.CaseStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC6020Support;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC7950Support;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.ExtensionStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BaseStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BelongsToStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.BitStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.CaseStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ChoiceStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ConfigStatementSupport;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.ContactStatementSupport;
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_;
+package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
import static java.util.Objects.requireNonNull;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.ImplicitStatements;
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.rfc7950.stmt.BaseImplicitStatementSupport;
protected CaseStatement createDeclared(final StmtContext<QName, CaseStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
final StatementSource source = ctx.source();
- if (substatements.isEmpty()) {
- switch (source) {
- case CONTEXT:
- return new EmptyUndeclaredCaseStatement(ctx.getArgument());
- case DECLARATION:
- return new EmptyCaseStatement(ctx.getArgument());
- default:
- throw new IllegalStateException("Unhandled statement source " + source);
- }
- } else {
- switch (source) {
- case CONTEXT:
- return new RegularUndeclaredCaseStatement(ctx.getArgument(), substatements);
- case DECLARATION:
- return new RegularCaseStatement(ctx.getArgument(), substatements);
- default:
- throw new IllegalStateException("Unhandled statement source " + source);
- }
+ switch (source) {
+ case CONTEXT:
+ return ImplicitStatements.createCase(ctx.getArgument(), substatements);
+ case DECLARATION:
+ return DeclaredStatements.createCase(ctx.getArgument(), substatements);
+ default:
+ throw new IllegalStateException("Unhandled statement source " + source);
}
}
@Override
protected CaseEffectiveStatement copyDeclaredEffective(final Current<QName, CaseStatement> stmt,
final CaseEffectiveStatement original) {
- return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, stmt.effectivePath(),
+ return EffectiveStatements.copyCase(original, stmt.effectivePath(),
computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
}
@Override
protected CaseEffectiveStatement copyUndeclaredEffective(final Current<QName, CaseStatement> stmt,
final CaseEffectiveStatement original) {
- return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, stmt.effectivePath(),
+ return EffectiveStatements.copyCase(original, stmt.effectivePath(),
computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
}
protected CaseEffectiveStatement createDeclaredEffective(final Current<QName, CaseStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
try {
- return new DeclaredCaseEffectiveStatement(stmt.declared(), substatements, stmt.effectivePath(),
- computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class));
+ return EffectiveStatements.createCase(stmt.declared(), stmt.effectivePath(),
+ computeFlags(stmt, substatements), substatements, stmt.original(CaseSchemaNode.class));
} catch (SubstatementIndexingException e) {
throw new SourceException(e.getMessage(), stmt, e);
}
protected CaseEffectiveStatement createUndeclaredEffective(final Current<QName, CaseStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
try {
- return new UndeclaredCaseEffectiveStatement(substatements, stmt.effectivePath(),
- computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class));
+ return EffectiveStatements.createCase(stmt.effectivePath(), computeFlags(stmt, substatements),
+ substatements, stmt.original(CaseSchemaNode.class));
} catch (SubstatementIndexingException e) {
throw new SourceException(e.getMessage(), stmt, e);
}
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.rfc7950.reactor.YangValidationBundles;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_.CaseStatementSupport;
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.ImplicitParentAwareStatementSupport;