From a9fe5338a4f8931d292a88b9ab089e7bb02e065a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sun, 12 Sep 2021 17:45:05 +0200 Subject: [PATCH] Fix DerivableSchemaNode.getOriginal() We should be returning a type capture here, fix that up, which prompts us having to retrofit the interface properly into concrete SchemaNodes -- making it obvious where we have some overlap. Change-Id: Ia8648c203f8e1560008711954febb815aecb1b6a Signed-off-by: Robert Varga --- .../yangtools/yang/model/api/AnydataSchemaNode.java | 2 +- .../yangtools/yang/model/api/AnyxmlSchemaNode.java | 2 +- .../yangtools/yang/model/api/CaseSchemaNode.java | 2 +- .../yangtools/yang/model/api/ChoiceSchemaNode.java | 2 +- .../yangtools/yang/model/api/ContainerSchemaNode.java | 3 ++- .../yangtools/yang/model/api/DerivableSchemaNode.java | 8 +++----- .../yangtools/yang/model/api/LeafListSchemaNode.java | 2 +- .../yangtools/yang/model/api/LeafSchemaNode.java | 2 +- .../yangtools/yang/model/api/ListSchemaNode.java | 2 +- .../ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java | 6 ++---- .../stmt/impl/eff/AbstractLeafListEffectiveStatement.java | 6 ++---- .../ri/stmt/impl/eff/AbstractListEffectiveStatement.java | 3 +-- .../ri/stmt/impl/eff/CaseEffectiveStatementMixin.java | 3 +-- .../ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java | 6 ++---- .../ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java | 6 ++---- .../ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java | 3 ++- .../ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java | 3 ++- .../ri/stmt/impl/eff/EmptyListEffectiveStatement.java | 4 ++-- .../yang/model/spi/meta/EffectiveStatementMixins.java | 4 ++-- .../opendaylight/yangtools/yang/stmt/GroupingTest.java | 4 ++-- 20 files changed, 32 insertions(+), 41 deletions(-) diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java index b2c5d5eedf..35306d3d41 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java @@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement; * of this document. */ @Beta -public interface AnydataSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware, +public interface AnydataSchemaNode extends DerivableSchemaNode, MandatoryAware, MustConstraintAware, EffectiveStatementEquivalent { /** * Schema of data. diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnyxmlSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnyxmlSchemaNode.java index 73e0ee3a96..e38935764b 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnyxmlSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnyxmlSchemaNode.java @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement; * This interface was modeled according to definition in * [RFC-6020] The anyxml Statement */ -public interface AnyxmlSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware, +public interface AnyxmlSchemaNode extends DerivableSchemaNode, MandatoryAware, MustConstraintAware, EffectiveStatementEquivalent { } diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/CaseSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/CaseSchemaNode.java index 52ae91483f..aa7c794e86 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/CaseSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/CaseSchemaNode.java @@ -12,7 +12,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement; /** * The CaseSchemaNode interface is used to define branches of the ChoiceSchemaNode. */ -public interface CaseSchemaNode extends DataSchemaNode, DataNodeContainer, AugmentationTarget, +public interface CaseSchemaNode extends DerivableSchemaNode, DataNodeContainer, AugmentationTarget, EffectiveStatementEquivalent { } diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java index 37b4f7274e..6e67e62744 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java @@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement; * A ChoiceSchemaNode defines a set of alternatives. It consists of a number of branches defined as * ChoiceCaseSchemaNode objects. */ -public interface ChoiceSchemaNode extends DataSchemaNode, AugmentationTarget, MandatoryAware, +public interface ChoiceSchemaNode extends DerivableSchemaNode, AugmentationTarget, MandatoryAware, EffectiveStatementEquivalent { /** * Returns cases of choice, keyed by their {@link SchemaNode#getQName()}. Returned map does not contain null keys diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java index b32c752858..5e2949bb49 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java @@ -14,7 +14,8 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatemen * containers, those that exist only for organizing the hierarchy of data nodes, and those whose presence in the * configuration has an explicit meaning. */ -public interface ContainerSchemaNode extends ContainerLike, EffectiveStatementEquivalent { +public interface ContainerSchemaNode extends ContainerLike, DerivableSchemaNode, + EffectiveStatementEquivalent { /** * Returns true if this container is marked as presence. * diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DerivableSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DerivableSchemaNode.java index 7dd80983ad..3e0c3af3cb 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DerivableSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DerivableSchemaNode.java @@ -13,14 +13,12 @@ import java.util.Optional; * Schema Node which may be derived from other schema node using augmentation or uses statement. */ // FIXME: 8.0.0: refactor this interface to take into account CopyableNode and AddedByUsesAware -public interface DerivableSchemaNode extends DataSchemaNode { +public interface DerivableSchemaNode> extends DataSchemaNode { /** * If this node is added by uses, returns original node definition from * grouping where it was defined. * - * @return original node definition from grouping if this node is added by - * uses, Optional.absent otherwise + * @return original node definition from grouping if this node is added by uses, absent otherwise */ - // FIXME: 8.0.0: this should be a type capture as it always matches this node's type - Optional getOriginal(); + Optional getOriginal(); } diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java index 68a8f01ad0..5b7c6143ef 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java @@ -15,7 +15,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafListEffectiveStatement * Interface describing YANG 'leaf-list' statement. */ public interface LeafListSchemaNode extends TypedDataSchemaNode, MustConstraintAware, ElementCountConstraintAware, - EffectiveStatementEquivalent { + DerivableSchemaNode, EffectiveStatementEquivalent { /** * YANG 'ordered-by' statement. It defines whether the order of entries * within this leaf-list are determined by the user or the system. If not diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafSchemaNode.java index 6a3eb9f852..e65dbcb0a6 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafSchemaNode.java @@ -18,6 +18,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafEffectiveStatement; * substatements is captured in the type returned via {@link #getType()}. */ public interface LeafSchemaNode extends TypedDataSchemaNode, MandatoryAware, MustConstraintAware, - EffectiveStatementEquivalent { + DerivableSchemaNode, EffectiveStatementEquivalent { } diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java index 848d4bada1..fda98f5f85 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java @@ -21,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement; * The 'list' statement is used to define an interior data node in the schema tree. A list entry is uniquely identified * by the values of the list's keys, if defined. */ -public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode, +public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DerivableSchemaNode, NotificationNodeContainer, ActionNodeContainer, ElementCountConstraintAware, MustConstraintAware, EffectiveStatementEquivalent { /** diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java index 407bfa361b..61a176aa25 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java @@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; 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.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -33,9 +32,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.M public abstract class AbstractLeafEffectiveStatement extends AbstractDeclaredEffectiveStatement.Default - implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, MandatoryMixin, - MustConstraintMixin { + implements LeafEffectiveStatement, LeafSchemaNode, DataSchemaNodeMixin, + MandatoryMixin, MustConstraintMixin { private final @NonNull Object substatements; private final @NonNull QName argument; private final @NonNull TypeDefinition type; diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafListEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafListEffectiveStatement.java index 8b98e64062..881d98b6ad 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafListEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafListEffectiveStatement.java @@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -32,9 +31,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.U abstract class AbstractLeafListEffectiveStatement extends AbstractDeclaredEffectiveStatement.Default - implements LeafListEffectiveStatement, LeafListSchemaNode, DerivableSchemaNode, - UserOrderedMixin, DataSchemaNodeMixin, - MustConstraintMixin { + implements LeafListEffectiveStatement, LeafListSchemaNode, UserOrderedMixin, + DataSchemaNodeMixin, MustConstraintMixin { private final @NonNull Object substatements; private final @NonNull QName argument; private final @NonNull TypeDefinition type; diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractListEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractListEffectiveStatement.java index 7f3dfc6e54..506413c529 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractListEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractListEffectiveStatement.java @@ -15,7 +15,6 @@ import java.util.List; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement; @@ -35,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.W abstract class AbstractListEffectiveStatement extends WithTypedefNamespace - implements ListEffectiveStatement, ListSchemaNode, DerivableSchemaNode, + implements ListEffectiveStatement, ListSchemaNode, ActionNodeContainerCompat, NotificationNodeContainerCompat, DataSchemaNodeMixin, UserOrderedMixin, diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java index 206e34e0fd..f71170fceb 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/CaseEffectiveStatementMixin.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement; import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AugmentationTargetMixin; @@ -18,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.D import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DocumentedNodeMixin; import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.MustConstraintMixin; -interface CaseEffectiveStatementMixin extends CaseEffectiveStatement, CaseSchemaNode, DerivableSchemaNode, +interface CaseEffectiveStatementMixin extends CaseEffectiveStatement, CaseSchemaNode, DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, DataNodeContainerMixin, MustConstraintMixin, AugmentationTargetMixin { diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java index f830d1fbcf..45dede877c 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java @@ -17,7 +17,6 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement; @@ -29,9 +28,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.M public final class ChoiceEffectiveStatementImpl extends DefaultWithDataTree - implements ChoiceEffectiveStatement, ChoiceSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, AugmentationTargetMixin, - MandatoryMixin { + implements ChoiceEffectiveStatement, ChoiceSchemaNode, DataSchemaNodeMixin, + AugmentationTargetMixin, MandatoryMixin { private final CaseSchemaNode defaultCase; private final ChoiceSchemaNode original; private final @NonNull QName argument; diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java index 0f9749ab95..619edfc619 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java @@ -16,7 +16,6 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement; @@ -33,9 +32,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.P public final class ContainerEffectiveStatementImpl extends WithTypedefNamespace - implements ContainerEffectiveStatement, ContainerSchemaNode, DerivableSchemaNode, - DataSchemaNodeMixin, DataNodeContainerMixin, - ActionNodeContainerMixin, + implements ContainerEffectiveStatement, ContainerSchemaNode, DataSchemaNodeMixin, + DataNodeContainerMixin, ActionNodeContainerMixin, ActionNodeContainerCompat, NotificationNodeContainerMixin, NotificationNodeContainerCompat, diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java index 66e7591df0..9a0adaadc5 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java @@ -22,7 +22,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OpaqueDataSchemaNodeMixin; public class EmptyAnydataEffectiveStatement extends Default - implements AnydataEffectiveStatement, AnydataSchemaNode, OpaqueDataSchemaNodeMixin { + implements AnydataEffectiveStatement, AnydataSchemaNode, + OpaqueDataSchemaNodeMixin { private final @NonNull QName argument; private final AnydataSchemaNode original; private final int flags; diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java index bc1445df98..a5fca59416 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java @@ -21,7 +21,8 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OpaqueDataSchemaNodeMixin; public class EmptyAnyxmlEffectiveStatement extends Default - implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, OpaqueDataSchemaNodeMixin { + implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, + OpaqueDataSchemaNodeMixin { private final @NonNull QName argument; private final AnyxmlSchemaNode original; private final int flags; diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyListEffectiveStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyListEffectiveStatement.java index d3595ccb1e..830c75efe7 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyListEffectiveStatement.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyListEffectiveStatement.java @@ -11,7 +11,7 @@ import com.google.common.collect.ImmutableList; import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; -import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement; @@ -28,7 +28,7 @@ public final class EmptyListEffectiveStatement extends AbstractListEffectiveStat } @Override - public Optional getOriginal() { + public Optional getOriginal() { return Optional.empty(); } diff --git a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java index d9e1aed84f..dc93fd2b73 100644 --- a/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java +++ b/model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java @@ -399,8 +399,8 @@ public final class EffectiveStatementMixins { * * @param Class representing declared version of this statement. */ - public interface OpaqueDataSchemaNodeMixin> - extends DerivableSchemaNode, DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, + public interface OpaqueDataSchemaNodeMixin, S extends DerivableSchemaNode> + extends DerivableSchemaNode, DataSchemaNodeMixin, DocumentedNodeMixin.WithStatus, MandatoryMixin, MustConstraintMixin, WhenConditionMixin { @Override default QName getQName() { diff --git a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java index 6fde4e592a..6f1e3e57c6 100644 --- a/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java +++ b/parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java @@ -602,8 +602,8 @@ public class GroupingTest { } } - private static @Nullable SchemaNode extractOriginal(final SchemaNode node) { + private static @Nullable DerivableSchemaNode extractOriginal(final SchemaNode node) { assertThat(node, instanceOf(DerivableSchemaNode.class)); - return ((DerivableSchemaNode) node).getOriginal().orElse(null); + return ((DerivableSchemaNode) node).getOriginal().orElse(null); } } -- 2.36.6