summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
7cc9900)
YangExpr is a baseline interface, but it has a limited audience. Seal it
to make the hierarchy known to the compiler.
Change-Id: I1129ac2f1cf634c75d7df94a3cdb9d3b39d29274
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
* @author Robert Varga
*/
@Beta
* @author Robert Varga
*/
@Beta
-public abstract class YangBinaryExpr implements YangExpr {
+public abstract sealed class YangBinaryExpr implements YangExpr permits YangBinaryOperator.Expr {
private static final long serialVersionUID = 1L;
private final YangExpr leftExpr;
private static final long serialVersionUID = 1L;
private final YangExpr leftExpr;
MOD("mod");
@SuppressFBWarnings(value = "SE_INNER_CLASS", justification = "Outer class is a retained enumeration")
MOD("mod");
@SuppressFBWarnings(value = "SE_INNER_CLASS", justification = "Outer class is a retained enumeration")
- private final class Expr extends YangBinaryExpr {
+ final class Expr extends YangBinaryExpr {
private static final long serialVersionUID = 1L;
Expr(final YangExpr leftExpr, final YangExpr rightExpr) {
private static final long serialVersionUID = 1L;
Expr(final YangExpr leftExpr, final YangExpr rightExpr) {
* @author Robert Varga
*/
@Beta
* @author Robert Varga
*/
@Beta
-public interface YangConstantExpr<T> extends YangExpr, Identifiable<QName> {
+public sealed interface YangConstantExpr<T> extends YangExpr, Identifiable<QName> permits YangBooleanConstantExpr {
/**
* Return this constant's value.
*
/**
* Return this constant's value.
*
* @author Robert Varga
*/
@Beta
* @author Robert Varga
*/
@Beta
-public interface YangExpr extends Immutable, Serializable {
+public sealed interface YangExpr extends Immutable, Serializable
+ permits YangBinaryExpr,
+ YangConstantExpr,
+ YangFilterExpr,
+ YangFunctionCallExpr,
+ YangLiteralExpr,
+ YangLocationPath,
+ YangNaryExpr,
+ YangNegateExpr,
+ YangNumberExpr,
+ YangPathExpr,
+ YangQNameExpr,
+ YangVariableReferenceExpr {
import org.eclipse.jdt.annotation.Nullable;
@Beta
import org.eclipse.jdt.annotation.Nullable;
@Beta
-public class YangFilterExpr implements YangExpr, YangPredicateAware {
+public sealed class YangFilterExpr implements YangExpr, YangPredicateAware {
private static final class WithPredicates extends YangFilterExpr {
private static final long serialVersionUID = 1L;
private static final class WithPredicates extends YangFilterExpr {
private static final long serialVersionUID = 1L;
* @author Robert Varga
*/
@Beta
* @author Robert Varga
*/
@Beta
-public class YangFunctionCallExpr implements YangExpr {
+public sealed class YangFunctionCallExpr implements YangExpr {
private static final class WithArgs extends YangFunctionCallExpr {
private static final long serialVersionUID = 1L;
private static final class WithArgs extends YangFunctionCallExpr {
private static final long serialVersionUID = 1L;
private final QName name;
private final QName name;
- YangFunctionCallExpr(final QName name) {
+ private YangFunctionCallExpr(final QName name) {
this.name = requireNonNull(name);
}
this.name = requireNonNull(name);
}
import org.opendaylight.yangtools.yang.common.UnresolvedQName;
@Beta
import org.opendaylight.yangtools.yang.common.UnresolvedQName;
@Beta
-public abstract class YangLocationPath implements YangExpr {
- public abstract static class Step implements Serializable, YangPredicateAware {
+public abstract sealed class YangLocationPath implements YangExpr {
+ public abstract static sealed class Step implements Serializable, YangPredicateAware {
private static final long serialVersionUID = 1L;
private final YangXPathAxis axis;
private static final long serialVersionUID = 1L;
private final YangXPathAxis axis;
- public static class AxisStep extends Step {
+ public static sealed class AxisStep extends Step {
private static final long serialVersionUID = 1L;
AxisStep(final YangXPathAxis axis) {
private static final long serialVersionUID = 1L;
AxisStep(final YangXPathAxis axis) {
}
// match a particular namespace
}
// match a particular namespace
- public static class NamespaceStep extends Step {
+ public static final class NamespaceStep extends Step {
private static final long serialVersionUID = 1L;
private final QNameModule namespace;
private static final long serialVersionUID = 1L;
private final QNameModule namespace;
this.namespace = requireNonNull(namespace);
}
this.namespace = requireNonNull(namespace);
}
- public final QNameModule getNamespace() {
+ public QNameModule getNamespace() {
return namespace;
}
@Override
return namespace;
}
@Override
- public final int hashCode() {
+ public int hashCode() {
return Objects.hash(getAxis(), namespace, getPredicates());
}
@Override
return Objects.hash(getAxis(), namespace, getPredicates());
}
@Override
- public final boolean equals(@Nullable final Object obj) {
+ public boolean equals(@Nullable final Object obj) {
if (this == obj) {
return true;
}
if (this == obj) {
return true;
}
*
* @author Robert Varga
*/
*
* @author Robert Varga
*/
- public abstract static class QNameStep extends Step implements QNameReferent {
+ public abstract static sealed class QNameStep extends Step implements QNameReferent {
private static final long serialVersionUID = 1L;
QNameStep(final YangXPathAxis axis) {
private static final long serialVersionUID = 1L;
QNameStep(final YangXPathAxis axis) {
- private abstract static class AbstractQNameStep<T extends AbstractQName> extends QNameStep {
+ private abstract static sealed class AbstractQNameStep<T extends AbstractQName> extends QNameStep {
private static final long serialVersionUID = 1L;
private final T qname;
private static final long serialVersionUID = 1L;
private final T qname;
abstract Class<? extends AbstractQNameStep<?>> equalityClass();
}
abstract Class<? extends AbstractQNameStep<?>> equalityClass();
}
- public static class ResolvedQNameStep extends AbstractQNameStep<QName> implements ResolvedQNameReferent {
+ public static sealed class ResolvedQNameStep extends AbstractQNameStep<QName> implements ResolvedQNameReferent {
private static final long serialVersionUID = 1L;
ResolvedQNameStep(final YangXPathAxis axis, final QName qname) {
private static final long serialVersionUID = 1L;
ResolvedQNameStep(final YangXPathAxis axis, final QName qname) {
- public static class UnresolvedQNameStep extends AbstractQNameStep<UnresolvedQName>
+ public static sealed class UnresolvedQNameStep extends AbstractQNameStep<UnresolvedQName>
implements UnresolvedQNameReferent {
private static final long serialVersionUID = 1L;
implements UnresolvedQNameReferent {
private static final long serialVersionUID = 1L;
- public static class NodeTypeStep extends Step {
+ public static sealed class NodeTypeStep extends Step {
private static final long serialVersionUID = 1L;
private final YangXPathNodeType nodeType;
private static final long serialVersionUID = 1L;
private final YangXPathNodeType nodeType;
- public static class ProcessingInstructionStep extends NodeTypeStep {
+ public static sealed class ProcessingInstructionStep extends NodeTypeStep {
private static final long serialVersionUID = 1L;
private final String name;
private static final long serialVersionUID = 1L;
private final String name;
private final ImmutableList<Step> steps;
private final ImmutableList<Step> steps;
- YangLocationPath(final ImmutableList<Step> steps) {
+ private YangLocationPath(final ImmutableList<Step> steps) {
this.steps = requireNonNull(steps);
}
this.steps = requireNonNull(steps);
}
* A number-bearing expression.
*/
@Beta
* A number-bearing expression.
*/
@Beta
-public abstract class YangNumberExpr implements YangExpr {
+public abstract sealed class YangNumberExpr implements YangExpr permits BigDecimalNumberExpr, DoubleNumberExpr {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
- YangNumberExpr() {
- // Hidden to prevent external subclassing
- }
-
public abstract Number getNumber();
public abstract YangXPathMathSupport getSupport();
public abstract Number getNumber();
public abstract YangXPathMathSupport getSupport();
import org.opendaylight.yangtools.yang.xpath.api.YangLocationPath.Relative;
@Beta
import org.opendaylight.yangtools.yang.xpath.api.YangLocationPath.Relative;
@Beta
-public class YangPathExpr implements YangExpr {
+public sealed class YangPathExpr implements YangExpr {
private static final class WithLocation extends YangPathExpr {
private static final long serialVersionUID = 1L;
private static final class WithLocation extends YangPathExpr {
private static final long serialVersionUID = 1L;
private final YangExpr filterExpr;
private final YangExpr filterExpr;
- YangPathExpr(final YangExpr filterExpr) {
+ private YangPathExpr(final YangExpr filterExpr) {
this.filterExpr = requireNonNull(filterExpr);
}
this.filterExpr = requireNonNull(filterExpr);
}
* @author Robert Varga
*/
@Beta
* @author Robert Varga
*/
@Beta
-public abstract class YangQNameExpr implements YangExpr, QNameReferent {
+public abstract sealed class YangQNameExpr implements YangExpr, QNameReferent {
public static final class Resolved extends YangQNameExpr implements ResolvedQNameReferent {
private static final long serialVersionUID = 1L;
public static final class Resolved extends YangQNameExpr implements ResolvedQNameReferent {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
- YangQNameExpr() {
- // Prevent instantiation
- }
-
public static Unresolved of(final UnresolvedQName qname) {
return new Unresolved(qname);
}
public static Unresolved of(final UnresolvedQName qname) {
return new Unresolved(qname);
}