From c9feda6f0c30a2b108aa7a3ce8b27c5bc246d9c6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 25 Nov 2019 15:11:16 +0100 Subject: [PATCH] Centralize must contraint definitions A number of statemnts can contain must expressions, which we are tracking separately in each class. This adds common superclasses to hold the common definition, reducing the amount of duplication. JIRA: YANGTOOLS-1040 Change-Id: Id5733b62838f484350094456452c7a1d0039f3f2 Signed-off-by: Robert Varga (cherry picked from commit 0d63e62a11945ade7371bb4667cf65409336f54c) --- .../AbstractEffectiveContainerSchemaNode.java | 13 +------- ...tiveMustConstraintAwareDataSchemaNode.java | 33 +++++++++++++++++++ ...onstraintAwareSimpleDataNodeContainer.java | 33 +++++++++++++++++++ .../AnydataEffectiveStatementImpl.java | 14 ++------ .../anyxml/AnyxmlEffectiveStatementImpl.java | 14 ++------ .../stmt/leaf/LeafEffectiveStatementImpl.java | 14 ++------ .../LeafListEffectiveStatementImpl.java | 13 ++------ .../stmt/list/ListEffectiveStatementImpl.java | 13 ++------ 8 files changed, 79 insertions(+), 68 deletions(-) create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java index 5965c5e313..8c90c56ddc 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java @@ -7,28 +7,17 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt; -import com.google.common.collect.ImmutableSet; -import java.util.Collection; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat; import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public abstract class AbstractEffectiveContainerSchemaNode> - extends AbstractEffectiveSimpleDataNodeContainer + extends AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer implements ContainerSchemaNode, ActionNodeContainerCompat, NotificationNodeContainerCompat { - private final ImmutableSet mustConstraints; - protected AbstractEffectiveContainerSchemaNode(final StmtContext ctx) { super(ctx); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); - } - - @Override - public final Collection getMustConstraints() { - return mustConstraints; } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java new file mode 100644 index 0000000000..794a7faa98 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareDataSchemaNode.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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; + +import com.google.common.annotations.Beta; +import com.google.common.collect.ImmutableSet; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.MustConstraintAware; +import org.opendaylight.yangtools.yang.model.api.MustDefinition; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; + +@Beta +public abstract class AbstractEffectiveMustConstraintAwareDataSchemaNode> + extends AbstractEffectiveDataSchemaNode implements MustConstraintAware { + private final @NonNull ImmutableSet mustConstraints; + + protected AbstractEffectiveMustConstraintAwareDataSchemaNode(final StmtContext ctx) { + super(ctx); + mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); + } + + @Override + public final ImmutableSet getMustConstraints() { + return mustConstraints; + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java new file mode 100644 index 0000000000..8b77221d43 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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; + +import com.google.common.annotations.Beta; +import com.google.common.collect.ImmutableSet; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.MustConstraintAware; +import org.opendaylight.yangtools.yang.model.api.MustDefinition; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; + +@Beta +public abstract class AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer> + extends AbstractEffectiveSimpleDataNodeContainer implements MustConstraintAware { + private final @NonNull ImmutableSet mustConstraints; + + protected AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer(final StmtContext ctx) { + super(ctx); + mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); + } + + @Override + public final ImmutableSet getMustConstraints() { + return mustConstraints; + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java index 06fa4a5104..2e80a7a5ac 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java @@ -9,30 +9,26 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anydata; import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; -import com.google.common.collect.ImmutableSet; -import java.util.Collection; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement; import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryEffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; /** * YANG 1.1 AnyData effective statement implementation. */ @Beta -final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode +final class AnydataEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode implements AnydataEffectiveStatement, AnyDataSchemaNode, DerivableSchemaNode { - private final ImmutableSet mustConstraints; private final AnyDataSchemaNode original; private final ContainerSchemaNode schema; private final boolean mandatory; @@ -43,7 +39,6 @@ final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod this.original = (AnyDataSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null); mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE) .booleanValue(); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); /* * :TODO we need to determine a way how to set schema of AnyData @@ -66,11 +61,6 @@ final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod return mandatory; } - @Override - public Collection getMustConstraints() { - return mustConstraints; - } - @Override public int hashCode() { return Objects.hash(getQName(),getPath()); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java index 9c19925cf4..2799961220 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java @@ -7,18 +7,15 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anyxml; -import com.google.common.collect.ImmutableSet; -import java.util.Collection; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement; import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryEffectiveStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; /** @@ -28,10 +25,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; */ // FIXME: 4.0.0: hide this class and make it final @Deprecated -public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode +public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode implements AnyxmlEffectiveStatement, AnyXmlSchemaNode, DerivableSchemaNode { - private final ImmutableSet mustConstraints; private final AnyXmlSchemaNode original; private final boolean mandatory; @@ -40,7 +36,6 @@ public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod this.original = (AnyXmlSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null); mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE) .booleanValue(); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); } @Override @@ -48,11 +43,6 @@ public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNod return mandatory; } - @Override - public Collection getMustConstraints() { - return mustConstraints; - } - @Override public Optional getOriginal() { return Optional.ofNullable(original); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java index 60c810cc54..bd51b0ac6d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java @@ -7,14 +7,11 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf; -import com.google.common.collect.ImmutableSet; -import java.util.Collection; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement; @@ -28,7 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypeBuilder; import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypes; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; @@ -40,9 +37,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; */ // FIXME: 4.0.0: hide this class @Deprecated -public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode +public final class LeafEffectiveStatementImpl extends AbstractEffectiveMustConstraintAwareDataSchemaNode implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode { - private final ImmutableSet mustConstraints; private final LeafSchemaNode original; private final TypeDefinition type; private final String defaultStr; @@ -87,7 +83,6 @@ public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchem type = builder.build(); mandatory = findFirstEffectiveSubstatementArgument(MandatoryEffectiveStatement.class).orElse(Boolean.FALSE) .booleanValue(); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); } @Override @@ -105,11 +100,6 @@ public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchem return type; } - @Override - public Collection getMustConstraints() { - return mustConstraints; - } - @Override public int hashCode() { final int prime = 31; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java index e501858dc8..b4fdaf0079 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java @@ -16,7 +16,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement; @@ -30,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypeBuilder; import org.opendaylight.yangtools.yang.model.util.type.ConcreteTypes; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDataSchemaNode; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareDataSchemaNode; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; @@ -42,7 +41,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; */ // FIXME: 4.0.0: hide this class @Deprecated -public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode +public final class LeafListEffectiveStatementImpl + extends AbstractEffectiveMustConstraintAwareDataSchemaNode implements LeafListEffectiveStatement, LeafListSchemaNode, DerivableSchemaNode { private static final String ORDER_BY_USER_KEYWORD = "user"; @@ -51,7 +51,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS private final LeafListSchemaNode original; private final boolean userOrdered; private final @NonNull ImmutableSet defaultValues; - private final ImmutableSet mustConstraints; private final ElementCountConstraint elementCountConstraint; LeafListEffectiveStatementImpl( @@ -98,7 +97,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS type = builder.build(); userOrdered = isUserOrdered; elementCountConstraint = EffectiveStmtUtils.createElementCountConstraint(this).orElse(null); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); } @Override @@ -126,11 +124,6 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS return Optional.ofNullable(elementCountConstraint); } - @Override - public Collection getMustConstraints() { - return mustConstraints; - } - @Override public int hashCode() { final int prime = 31; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java index 99cc824917..521c76d74f 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java @@ -24,7 +24,6 @@ import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.UniqueConstraint; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -35,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatemen import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat; import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveSimpleDataNodeContainer; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -47,7 +46,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; */ // FIXME: 4.0.0: hide this class @Deprecated -public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDataNodeContainer +public final class ListEffectiveStatementImpl + extends AbstractEffectiveMustConstraintAwareSimpleDataNodeContainer implements ListEffectiveStatement, ListSchemaNode, DerivableSchemaNode, ActionNodeContainerCompat, NotificationNodeContainerCompat { private static final String ORDER_BY_USER_KEYWORD = "user"; @@ -59,7 +59,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat private final @NonNull ImmutableSet notifications; private final @NonNull ImmutableList uniqueConstraints; private final ElementCountConstraint elementCountConstraint; - private final ImmutableSet mustConstraints; ListEffectiveStatementImpl( final StmtContext> ctx) { @@ -113,7 +112,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat this.actions = actionsBuilder.build(); this.notifications = notificationsBuilder.build(); elementCountConstraint = EffectiveStmtUtils.createElementCountConstraint(this).orElse(null); - mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class)); } @Override @@ -151,11 +149,6 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat return Optional.ofNullable(elementCountConstraint); } - @Override - public Collection getMustConstraints() { - return mustConstraints; - } - @Override public int hashCode() { final int prime = 31; -- 2.36.6