Remove DerivableSchemaNode 44/98844/1
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 5 Dec 2021 15:23:05 +0000 (16:23 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 5 Dec 2021 15:24:06 +0000 (16:24 +0100)
DerivableSchemaNode.getOriginal() has a rather large storage cost, which
is not required anywhere in our code base. Remove it.

JIRA: YANGTOOLS-1377
Change-Id: I7161710b554928cf88dfbf0d484d3ae9a9be48a3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
40 files changed:
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnyxmlSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/CaseSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DerivableSchemaNode.java [deleted file]
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractNonEmptyLeafListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ChoiceEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ContainerEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyLeafEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyLeafListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnydataEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularAnyxmlEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLeafListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/SlimLeafListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredCaseEffectiveStatement.java
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafListStatementSupport.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java
parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java
parser/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java

index 35306d3d41a607e909e910b1325cd020dc474ea9..b2c5d5eedf932f9b4e2bfda20e19f14a22de3716 100644 (file)
@@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement;
  * of this document.
  */
 @Beta
-public interface AnydataSchemaNode extends DerivableSchemaNode<AnydataSchemaNode>, MandatoryAware, MustConstraintAware,
+public interface AnydataSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware,
         EffectiveStatementEquivalent<AnydataEffectiveStatement> {
     /**
      * Schema of data.
index e38935764ba7760306235f24825195c3a256e3c3..73e0ee3a9640140a6f77f2e3627abe232c08a83b 100644 (file)
@@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
  * This interface was modeled according to definition in
  * <a href="https://tools.ietf.org/html/rfc6020#section-7.10">[RFC-6020] The anyxml Statement</a>
  */
-public interface AnyxmlSchemaNode extends DerivableSchemaNode<AnyxmlSchemaNode>, MandatoryAware, MustConstraintAware,
+public interface AnyxmlSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware,
         EffectiveStatementEquivalent<AnyxmlEffectiveStatement> {
 
 }
index aa7c794e868c60b5c4f324c3891c2c366934f3a8..52ae91483feca4f53e43aa05ce3af216d10f380c 100644 (file)
@@ -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 DerivableSchemaNode<CaseSchemaNode>, DataNodeContainer, AugmentationTarget,
+public interface CaseSchemaNode extends DataSchemaNode, DataNodeContainer, AugmentationTarget,
         EffectiveStatementEquivalent<CaseEffectiveStatement> {
 
 }
index 6e67e6274402bec47338a119be9aa8708243c506..37b4f7274e3783e045b07be5dde441b849469070 100644 (file)
@@ -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 DerivableSchemaNode<ChoiceSchemaNode>, AugmentationTarget, MandatoryAware,
+public interface ChoiceSchemaNode extends DataSchemaNode, AugmentationTarget, MandatoryAware,
         EffectiveStatementEquivalent<ChoiceEffectiveStatement> {
     /**
      * Returns cases of choice, keyed by their {@link SchemaNode#getQName()}. Returned map does not contain null keys
index 5e2949bb499d1ea5b4179bfc012e68ee0430f9b6..b32c7528581899d664f63e5d67e9266527fe4cc7 100644 (file)
@@ -14,8 +14,7 @@ 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, DerivableSchemaNode<ContainerSchemaNode>,
-        EffectiveStatementEquivalent<ContainerEffectiveStatement> {
+public interface ContainerSchemaNode extends ContainerLike, EffectiveStatementEquivalent<ContainerEffectiveStatement> {
     /**
      * 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
deleted file mode 100644 (file)
index f24b34a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. 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.model.api;
-
-import java.util.Optional;
-
-/**
- * Schema Node which may be derived from other schema node using augmentation or uses statement.
- *
- * @deprecated This interface's sole purpose is to aid MD-SAL binding generator, which is now in a position to provide
- *             to implement its logic without this interface.
- */
-@Deprecated(since = "7.0.9", forRemoval = true)
-public interface DerivableSchemaNode<T extends DerivableSchemaNode<T>> 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, absent otherwise
-     */
-    Optional<T> getOriginal();
-}
index 5b7c6143ef25dd1f0fb2392bd6485a76898766d4..68a8f01ad0c7ddba67b0f607ec6d20a855cab0e4 100644 (file)
@@ -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,
-        DerivableSchemaNode<LeafListSchemaNode>, EffectiveStatementEquivalent<LeafListEffectiveStatement> {
+        EffectiveStatementEquivalent<LeafListEffectiveStatement> {
     /**
      * 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
index e65dbcb0a6a10e591d3a1e1952142117194ac32d..6a3eb9f852628a6b3f87ee4d5949c35fd8527d07 100644 (file)
@@ -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,
-        DerivableSchemaNode<LeafSchemaNode>, EffectiveStatementEquivalent<LeafEffectiveStatement> {
+        EffectiveStatementEquivalent<LeafEffectiveStatement> {
 
 }
index fda98f5f85a77147928c23a29cda529eec1aa39b..48dd9b79943b5d0bc131861737fd119d1b45f2b7 100644 (file)
@@ -21,8 +21,8 @@ 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, DerivableSchemaNode<ListSchemaNode>,
-        NotificationNodeContainer, ActionNodeContainer, ElementCountConstraintAware, MustConstraintAware,
+public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode, ActionNodeContainer,
+        NotificationNodeContainer, ElementCountConstraintAware, MustConstraintAware,
         EffectiveStatementEquivalent<ListEffectiveStatement> {
     /**
      * Returns the list of leaf identifiers.
index e477eac50a293d81118117e4f4c8d613b2e4f094..7307a071eb362e896b0e320c2980f3a63499f529 100644 (file)
@@ -17,17 +17,10 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-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.ActionEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
@@ -303,43 +296,37 @@ public final class EffectiveStatements {
     }
 
     public static AnydataEffectiveStatement copyAnydata(final AnydataEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnydataSchemaNode newOriginal) {
+            final int flags) {
         if (original instanceof RegularAnydataEffectiveStatement) {
-            return new RegularAnydataEffectiveStatement((RegularAnydataEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new RegularAnydataEffectiveStatement((RegularAnydataEffectiveStatement) original, argument, flags);
         } else if (original instanceof EmptyAnydataEffectiveStatement) {
-            return new EmptyAnydataEffectiveStatement((EmptyAnydataEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new EmptyAnydataEffectiveStatement((EmptyAnydataEffectiveStatement) original, argument, flags);
         } else {
             throw new IllegalArgumentException("Unsupported original " + original);
         }
     }
 
     public static AnydataEffectiveStatement createAnydata(final AnydataStatement declared, final QName argument,
-            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable AnydataSchemaNode original) {
-        return substatements.isEmpty() ? new EmptyAnydataEffectiveStatement(declared, argument, flags, original)
-            : new RegularAnydataEffectiveStatement(declared, argument, flags, original, substatements);
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return substatements.isEmpty() ? new EmptyAnydataEffectiveStatement(declared, argument, flags)
+            : new RegularAnydataEffectiveStatement(declared, argument, flags, substatements);
     }
 
     public static AnyxmlEffectiveStatement copyAnyxml(final AnyxmlEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnyxmlSchemaNode newOriginal) {
+            final int flags) {
         if (original instanceof RegularAnyxmlEffectiveStatement) {
-            return new RegularAnyxmlEffectiveStatement((RegularAnyxmlEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new RegularAnyxmlEffectiveStatement((RegularAnyxmlEffectiveStatement) original, argument, flags);
         } else if (original instanceof EmptyAnyxmlEffectiveStatement) {
-            return new EmptyAnyxmlEffectiveStatement((EmptyAnyxmlEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new EmptyAnyxmlEffectiveStatement((EmptyAnyxmlEffectiveStatement) original, argument, flags);
         } else {
             throw new IllegalArgumentException("Unsupported original " + original);
         }
     }
 
     public static AnyxmlEffectiveStatement createAnyxml(final AnyxmlStatement declared, final QName argument,
-            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable AnyxmlSchemaNode original) {
-        return substatements.isEmpty() ? new EmptyAnyxmlEffectiveStatement(declared, argument, flags, original)
-            : new RegularAnyxmlEffectiveStatement(declared, argument, flags, original, substatements);
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return substatements.isEmpty() ? new EmptyAnyxmlEffectiveStatement(declared, argument, flags)
+            : new RegularAnyxmlEffectiveStatement(declared, argument, flags, substatements);
     }
 
     public static ArgumentEffectiveStatement createArgument(final ArgumentStatement declared,
@@ -374,40 +361,36 @@ public final class EffectiveStatements {
     }
 
     public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable CaseSchemaNode newOriginal) {
+            final int flags) {
         if (original instanceof DeclaredCaseEffectiveStatement) {
-            return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, argument, flags);
         } else if (original instanceof UndeclaredCaseEffectiveStatement) {
-            return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, argument, flags);
         } else {
             throw new IllegalArgumentException("Unsupported origin " + original);
         }
     }
 
     public static CaseEffectiveStatement createCase(final QName argument, final int flags,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable CaseSchemaNode original) {
-        return new UndeclaredCaseEffectiveStatement(substatements, argument, flags, original);
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new UndeclaredCaseEffectiveStatement(substatements, argument, flags);
     }
 
     public static CaseEffectiveStatement createCase(final CaseStatement declared, final QName argument,
-            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable CaseSchemaNode original) {
-        return new DeclaredCaseEffectiveStatement(declared, substatements, argument, flags, original);
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new DeclaredCaseEffectiveStatement(declared, substatements, argument, flags);
     }
 
     public static ChoiceEffectiveStatement copyChoice(final ChoiceEffectiveStatement original,
-            final QName argument, final int flags, final @Nullable ChoiceSchemaNode newOriginal) {
+            final QName argument, final int flags) {
         checkArgument(original instanceof ChoiceEffectiveStatementImpl, "Unsupported original %s", original);
-        return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, argument, flags, newOriginal);
+        return new ChoiceEffectiveStatementImpl((ChoiceEffectiveStatementImpl) original, argument, flags);
     }
 
     public static ChoiceEffectiveStatement createChoice(final ChoiceStatement declared, final QName argument,
             final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable CaseSchemaNode defaultCase, final @Nullable ChoiceSchemaNode original) {
-        return new ChoiceEffectiveStatementImpl(declared, substatements, argument, flags, defaultCase, original);
+            final @Nullable CaseSchemaNode defaultCase) {
+        return new ChoiceEffectiveStatementImpl(declared, substatements, argument, flags, defaultCase);
     }
 
     public static ConfigEffectiveStatement createConfig(final boolean argument) {
@@ -435,15 +418,14 @@ public final class EffectiveStatements {
     }
 
     public static ContainerEffectiveStatement copyContainer(final ContainerEffectiveStatement original,
-            final QName argument, final int flags, final @Nullable ContainerSchemaNode orig) {
+            final QName argument, final int flags) {
         checkArgument(original instanceof ContainerEffectiveStatementImpl, "Unsupported original %s", original);
-        return new ContainerEffectiveStatementImpl((ContainerEffectiveStatementImpl) original, argument, flags, orig);
+        return new ContainerEffectiveStatementImpl((ContainerEffectiveStatementImpl) original, argument, flags);
     }
 
     public static ContainerEffectiveStatement createContainer(final ContainerStatement declared, final QName argument,
-            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable ContainerSchemaNode original) {
-        return new ContainerEffectiveStatementImpl(declared, substatements, argument, flags, original);
+            final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new ContainerEffectiveStatementImpl(declared, substatements, argument, flags);
     }
 
     public static DefaultEffectiveStatement createDefault(final DefaultStatement declared,
@@ -575,31 +557,27 @@ public final class EffectiveStatements {
     }
 
     public static LeafEffectiveStatement copyLeaf(final LeafEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable LeafSchemaNode newOriginal) {
+            final int flags) {
         checkArgument(original instanceof AbstractLeafEffectiveStatement, "Unsupported original %s", original);
-        return new RegularLeafEffectiveStatement((AbstractLeafEffectiveStatement) original, argument, flags,
-            newOriginal);
+        return new RegularLeafEffectiveStatement((AbstractLeafEffectiveStatement) original, argument, flags);
     }
 
     public static LeafEffectiveStatement createLeaf(final LeafStatement declared, final QName argument, final int flags,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final @Nullable LeafSchemaNode original)  throws SubstatementIndexingException {
-        return original == null ? new EmptyLeafEffectiveStatement(declared, argument, flags, substatements)
-            : new RegularLeafEffectiveStatement(declared, argument, flags, substatements, original);
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements)
+                throws SubstatementIndexingException {
+        // FIXME: YANGTOOLS-1316: instantiate RegularLeafEffectiveStatement() in argument mismatch
+        return new EmptyLeafEffectiveStatement(declared, argument, flags, substatements);
     }
 
     public static LeafListEffectiveStatement copyLeafList(final LeafListEffectiveStatement original,
-            final QName argument, final int flags, final @Nullable LeafListSchemaNode newOriginal) {
+            final QName argument, final int flags) {
         if (original instanceof RegularLeafListEffectiveStatement) {
-            return new RegularLeafListEffectiveStatement((RegularLeafListEffectiveStatement) original, newOriginal,
-                argument, flags);
+            return new RegularLeafListEffectiveStatement((RegularLeafListEffectiveStatement) original, argument, flags);
         } else if (original instanceof SlimLeafListEffectiveStatement) {
-            return new SlimLeafListEffectiveStatement((SlimLeafListEffectiveStatement) original, newOriginal, argument,
-                flags);
+            return new SlimLeafListEffectiveStatement((SlimLeafListEffectiveStatement) original, argument, flags);
         } else if (original instanceof EmptyLeafListEffectiveStatement) {
             // Promote to slim
-            return new SlimLeafListEffectiveStatement((EmptyLeafListEffectiveStatement) original, newOriginal, argument,
-                flags);
+            return new SlimLeafListEffectiveStatement((EmptyLeafListEffectiveStatement) original, argument, flags);
         } else {
             throw new IllegalArgumentException("Unsupported original " + original);
         }
@@ -607,17 +585,16 @@ public final class EffectiveStatements {
 
     public static LeafListEffectiveStatement createLeafList(final LeafListStatement declared, final QName argument,
             final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final ImmutableSet<String> defaultValues, final @Nullable ElementCountConstraint elementCountConstraint,
-            final @Nullable LeafListSchemaNode original)
+            final ImmutableSet<String> defaultValues, final @Nullable ElementCountConstraint elementCountConstraint)
                 throws SubstatementIndexingException {
         if (defaultValues.isEmpty()) {
-            return original == null && elementCountConstraint == null
+            return elementCountConstraint == null
                 ? new EmptyLeafListEffectiveStatement(declared, argument, flags, substatements)
-                    : new SlimLeafListEffectiveStatement(declared, argument, flags, substatements, original,
+                    : new SlimLeafListEffectiveStatement(declared, argument, flags, substatements,
                         elementCountConstraint);
         }
 
-        return new RegularLeafListEffectiveStatement(declared, argument, flags, substatements, original, defaultValues,
+        return new RegularLeafListEffectiveStatement(declared, argument, flags, substatements, defaultValues,
             elementCountConstraint);
     }
 
@@ -628,13 +605,11 @@ public final class EffectiveStatements {
     }
 
     public static ListEffectiveStatement copyList(final ListEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable ListSchemaNode newOriginal) {
+            final int flags) {
         if (original instanceof RegularListEffectiveStatement) {
-            return new RegularListEffectiveStatement((RegularListEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new RegularListEffectiveStatement((RegularListEffectiveStatement) original, argument, flags);
         } else if (original instanceof EmptyListEffectiveStatement) {
-            return new RegularListEffectiveStatement((EmptyListEffectiveStatement) original, argument, flags,
-                newOriginal);
+            return new RegularListEffectiveStatement((EmptyListEffectiveStatement) original, argument, flags);
         } else {
             throw new IllegalArgumentException("Unsupported original " + original);
         }
@@ -642,12 +617,11 @@ public final class EffectiveStatements {
 
     public static ListEffectiveStatement createList(final ListStatement declared, final QName argument,
             final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final ImmutableList<QName> keyDefinition, final @Nullable ElementCountConstraint elementCountConstraint,
-            final @Nullable ListSchemaNode original) {
-        return original == null && elementCountConstraint == null
+            final ImmutableList<QName> keyDefinition, final @Nullable ElementCountConstraint elementCountConstraint) {
+        return elementCountConstraint == null
             ? new EmptyListEffectiveStatement(declared, argument, flags, substatements, keyDefinition)
                 : new RegularListEffectiveStatement(declared, argument, flags, substatements, keyDefinition,
-                    elementCountConstraint, original);
+                    elementCountConstraint);
     }
 
     public static MandatoryEffectiveStatement createMandatory(final MandatoryStatement declared) {
index 61a176aa2554d9c3835cc14ada0bd0d5de3e311e..08d2598319b3a2b4ea05b5f9725df0632f80e580 100644 (file)
@@ -35,8 +35,12 @@ public abstract class AbstractLeafEffectiveStatement
         implements LeafEffectiveStatement, LeafSchemaNode, DataSchemaNodeMixin<LeafStatement>,
             MandatoryMixin<QName, LeafStatement>, MustConstraintMixin<QName, LeafStatement> {
     private final @NonNull Object substatements;
+    // FIXME: YANGTOOLS-1316: this seems to imply that argument.equals(declared.argument()) and we could save a field,
+    //                        except we need it in the constructors to materialize type. But if we turn it into a lazy
+    //                        field, we should be okay.
     private final @NonNull QName argument;
     private final @NonNull TypeDefinition<?> type;
+
     private final int flags;
 
     AbstractLeafEffectiveStatement(final LeafStatement declared, final QName argument, final int flags,
@@ -45,18 +49,16 @@ public abstract class AbstractLeafEffectiveStatement
         this.argument = requireNonNull(argument);
         this.substatements = maskList(substatements);
         this.flags = flags;
-        // TODO: lazy instantiation?
-        this.type = buildType();
+        type = buildType();
     }
 
     AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final QName argument,
             final int flags) {
         super(original);
         this.argument = requireNonNull(argument);
-        this.substatements = original.substatements;
+        substatements = original.substatements;
         this.flags = flags;
-        // FIXME: share with original?
-        this.type = buildType();
+        type = buildType();
     }
 
     @Override
index ad748ba05005198828470ec4d3f2b9aecf58094e..16201215ede78dbb920ba23b9300ae83363ca065 100644 (file)
@@ -12,40 +12,29 @@ import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
 abstract class AbstractNonEmptyLeafListEffectiveStatement extends AbstractLeafListEffectiveStatement {
-    private final @Nullable LeafListSchemaNode original;
     private final @Nullable ElementCountConstraint elementCountConstraint;
 
     AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
+            final ElementCountConstraint elementCountConstraint) {
         super(declared, argument, flags, substatements);
-        this.original = original;
         this.elementCountConstraint = elementCountConstraint;
     }
 
     AbstractNonEmptyLeafListEffectiveStatement(final AbstractNonEmptyLeafListEffectiveStatement originalEffecive,
-            final LeafListSchemaNode original, final QName argument, final int flags) {
+            final QName argument, final int flags) {
         super(originalEffecive, argument, flags);
         elementCountConstraint = originalEffecive.elementCountConstraint;
-        this.original = original;
     }
 
     AbstractNonEmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final QName argument, final int flags) {
+            final QName argument, final int flags) {
         super(originalEffective, argument, flags);
         elementCountConstraint = null;
-        this.original = original;
-    }
-
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public final Optional<LeafListSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
     }
 
     @Override
index 86c14e4f38d0b5b0ecc6019d7b2cd8fa2bea06bb..09df6abc8b24c56ec5d5cb8c64bf964b24cb6299 100644 (file)
@@ -31,27 +31,24 @@ public final class ChoiceEffectiveStatementImpl
         implements ChoiceEffectiveStatement, ChoiceSchemaNode, DataSchemaNodeMixin<ChoiceStatement>,
             AugmentationTargetMixin<QName, ChoiceStatement>, MandatoryMixin<QName, ChoiceStatement> {
     private final CaseSchemaNode defaultCase;
-    private final ChoiceSchemaNode original;
     private final @NonNull QName argument;
     private final int flags;
 
     public ChoiceEffectiveStatementImpl(final ChoiceStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final QName argument,
-            final int flags, final @Nullable CaseSchemaNode defaultCase, final @Nullable ChoiceSchemaNode original) {
+            final int flags, final @Nullable CaseSchemaNode defaultCase) {
         super(declared, substatements);
         this.argument = requireNonNull(argument);
         this.flags = flags;
         this.defaultCase = defaultCase;
-        this.original = original;
     }
 
     public ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final QName argument,
-            final int flags, final ChoiceSchemaNode newOriginal) {
+            final int flags) {
         super(origEffective);
         this.argument = requireNonNull(argument);
         this.flags = flags;
         defaultCase = origEffective.defaultCase;
-        original = newOriginal;
     }
 
     @Override
@@ -64,12 +61,6 @@ public final class ChoiceEffectiveStatementImpl
         return flags;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<ChoiceSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public Optional<? extends CaseSchemaNode> findCase(final QName qname) {
         final SchemaTreeEffectiveStatement<?> child = schemaTreeNamespace().get(requireNonNull(qname));
index 5e8d782f13e2c865bdc4377e84684067eb237c01..8021ba7d25a7d86f1f2ff7df042be088c7bf1bbe 100644 (file)
@@ -10,9 +10,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-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;
@@ -42,22 +40,19 @@ public final class ContainerEffectiveStatementImpl
 
     private final int flags;
     private final @NonNull QName argument;
-    private final @Nullable ContainerSchemaNode original;
 
     public ContainerEffectiveStatementImpl(final ContainerStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final QName argument,
-            final int flags, final @Nullable ContainerSchemaNode original) {
+            final int flags) {
         super(declared, substatements);
         this.argument = requireNonNull(argument);
-        this.original = original;
         this.flags = flags;
     }
 
     public ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final QName argument,
-            final int flags, final @Nullable ContainerSchemaNode original) {
+            final int flags) {
         super(origEffective);
         this.argument = requireNonNull(argument);
-        this.original = original;
         this.flags = flags;
     }
 
@@ -71,12 +66,6 @@ public final class ContainerEffectiveStatementImpl
         return argument;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<ContainerSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public boolean isPresenceContainer() {
         return presence();
index ab0fcc3bb2565bc9f8751d2602cf0db9ba32f088..8f51bd1ef837cf12e1abaa0196f96ffac8d36fc5 100644 (file)
@@ -10,11 +10,8 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-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.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
@@ -24,25 +21,22 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS
 public final class DeclaredCaseEffectiveStatement
         extends DefaultWithDataTree<QName, CaseStatement, CaseEffectiveStatement>
         implements CaseEffectiveStatementMixin {
-    private final CaseSchemaNode original;
     private final @NonNull QName argument;
     private final int flags;
 
     public DeclaredCaseEffectiveStatement(final CaseStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final QName argument,
-            final int flags, final @Nullable CaseSchemaNode original) {
+            final int flags) {
         super(declared, substatements);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     public DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final QName argument,
-            final int flags, final @Nullable CaseSchemaNode original) {
+            final int flags) {
         super(origEffective);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     @Override
@@ -55,12 +49,6 @@ public final class DeclaredCaseEffectiveStatement
         return flags;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<CaseSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public DataSchemaNode dataChildByName(final QName name) {
         return dataSchemaNode(name);
index 03b7b29767f874ef9d00850a2c552900542c3fc8..483f550b1efce7b681be196a4b2e75fb7592201a 100644 (file)
@@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.base.MoreObjects;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -22,26 +21,21 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OpaqueDataSchemaNodeMixin;
 
 public class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatement>
-        implements AnydataEffectiveStatement, AnydataSchemaNode,
-            OpaqueDataSchemaNodeMixin<AnydataStatement, AnydataSchemaNode> {
+        implements AnydataEffectiveStatement, AnydataSchemaNode, OpaqueDataSchemaNodeMixin<AnydataStatement> {
     private final @NonNull QName argument;
-    private final AnydataSchemaNode original;
     private final int flags;
 
-    public EmptyAnydataEffectiveStatement(final AnydataStatement declared, final QName argument, final int flags,
-            final @Nullable AnydataSchemaNode original) {
+    public EmptyAnydataEffectiveStatement(final AnydataStatement declared, final QName argument, final int flags) {
         super(declared);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     public EmptyAnydataEffectiveStatement(final EmptyAnydataEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnydataSchemaNode newOriginal) {
+            final int flags) {
         super(original);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = newOriginal;
     }
 
     @Override
@@ -54,12 +48,6 @@ public class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatem
         return flags;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public final Optional<AnydataSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public final Optional<ContainerSchemaNode> getDataSchema() {
         /*
index fc213ed807b4634b2e7bdf926290e8d84e746426..362c704339310ace8c36945ab9b4debb4c51a886 100644 (file)
@@ -10,9 +10,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.MoreObjects;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
@@ -21,26 +19,21 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveS
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OpaqueDataSchemaNodeMixin;
 
 public class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatement>
-        implements AnyxmlEffectiveStatement, AnyxmlSchemaNode,
-            OpaqueDataSchemaNodeMixin<AnyxmlStatement, AnyxmlSchemaNode> {
+        implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, OpaqueDataSchemaNodeMixin<AnyxmlStatement> {
     private final @NonNull QName argument;
-    private final AnyxmlSchemaNode original;
     private final int flags;
 
-    public EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final QName argument, final int flags,
-            final @Nullable AnyxmlSchemaNode original) {
+    public EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final QName argument, final int flags) {
         super(declared);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     public EmptyAnyxmlEffectiveStatement(final EmptyAnyxmlEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnyxmlSchemaNode newOriginal) {
+            final int flags) {
         super(original);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = newOriginal;
     }
 
     @Override
@@ -53,12 +46,6 @@ public class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatemen
         return flags;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public final Optional<AnyxmlSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public final AnyxmlEffectiveStatement asEffectiveStatement() {
         return this;
index 898d265a3b9fa2ce155b057362886889c4ade904..b22828e9b4667564b6c35e873f356bf17ae412c3 100644 (file)
@@ -8,22 +8,13 @@
 package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
 
 public final class EmptyLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
     public EmptyLeafEffectiveStatement(final LeafStatement declared, final QName argument, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        // FIXME: this seems to imply that argument.equals(declared.argument()) and we could save a field
         super(declared, argument, flags, substatements);
     }
-
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<LeafSchemaNode> getOriginal() {
-        return Optional.empty();
-    }
 }
index 835d45091be6a466a1ec43907b2ff598536c0233..03735a5d6f51d9bb504601b0cf1fe9793cab689c 100644 (file)
@@ -13,7 +13,6 @@ import java.util.Collection;
 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.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
@@ -28,12 +27,6 @@ public final class EmptyLeafListEffectiveStatement extends AbstractLeafListEffec
         super(original, argument, flags);
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<LeafListSchemaNode> getOriginal() {
-        return Optional.empty();
-    }
-
     @Override
     public Collection<Object> getDefaults() {
         return ImmutableSet.of();
index ea38ff9886c8dcc5d70b78896a986f410ab3d12e..91a29f6c2f625fc473628f074554232690f6cbee 100644 (file)
@@ -11,7 +11,6 @@ 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.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
 
@@ -27,12 +26,6 @@ public final class EmptyListEffectiveStatement extends AbstractListEffectiveStat
         super(original, argument, flags);
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<ListSchemaNode> getOriginal() {
-        return Optional.empty();
-    }
-
     @Override
     public Optional<ElementCountConstraint> getElementCountConstraint() {
         return Optional.empty();
index c9d6da62822ab914b1778ac707a8ccc5f7c566bb..99c5a74cfc861d730a6462e7ec3927ab6ac40966 100644 (file)
@@ -9,9 +9,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
 
@@ -22,16 +20,15 @@ public final class RegularAnydataEffectiveStatement extends EmptyAnydataEffectiv
     private final @NonNull Object substatements;
 
     public RegularAnydataEffectiveStatement(final AnydataStatement declared, final QName argument, final int flags,
-            final @Nullable AnydataSchemaNode original,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        super(declared, argument, flags, original);
+        super(declared, argument, flags);
         this.substatements = maskList(substatements);
     }
 
     public RegularAnydataEffectiveStatement(final RegularAnydataEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnydataSchemaNode newOriginal) {
-        super(original, argument, flags, newOriginal);
-        this.substatements = original.substatements;
+            final int flags) {
+        super(original, argument, flags);
+        substatements = original.substatements;
     }
 
     @Override
index bff540e2534774472a39cae80fa887971f86055f..68e3e295499442031b0c22ffbf401cb6a363e3b1 100644 (file)
@@ -9,9 +9,7 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
 
@@ -19,16 +17,15 @@ public final class RegularAnyxmlEffectiveStatement extends EmptyAnyxmlEffectiveS
     private final @NonNull Object substatements;
 
     public RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final QName argument, final int flags,
-            final @Nullable AnyxmlSchemaNode original,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        super(declared, argument, flags, original);
+        super(declared, argument, flags);
         this.substatements = maskList(substatements);
     }
 
     public RegularAnyxmlEffectiveStatement(final RegularAnyxmlEffectiveStatement original, final QName argument,
-            final int flags, final @Nullable AnyxmlSchemaNode newOriginal) {
-        super(original, argument, flags, newOriginal);
-        this.substatements = original.substatements;
+            final int flags) {
+        super(original, argument, flags);
+        substatements = original.substatements;
     }
 
     @Override
index d10561719b54ca3c974b8ac5c22a403cbfad422b..1deaeb2d0cf4ff2b397515c483ff6b6b6b748fc9 100644 (file)
@@ -8,31 +8,18 @@
 package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
-import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
 
 public final class RegularLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
-    private final @Nullable LeafSchemaNode original;
-
     public RegularLeafEffectiveStatement(final LeafStatement declared, final QName argument, final int flags,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafSchemaNode original) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, argument, flags, substatements);
-        this.original = original;
     }
 
     public RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final QName argument,
-            final int flags, final LeafSchemaNode original) {
+            final int flags) {
         super(originalEffective, argument, flags);
-        this.original = original;
-    }
-
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<LeafSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
     }
 }
index 71f367b8a820e987017d5916f5e7297b3f44a523..a1f1737ba6e2c1c237721f16f3fac2fb1adaa7c4 100644 (file)
@@ -14,7 +14,6 @@ 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.ElementCountConstraint;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
@@ -22,16 +21,16 @@ public final class RegularLeafListEffectiveStatement extends AbstractNonEmptyLea
     private final @NonNull ImmutableSet<String> defaults;
 
     public RegularLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafListSchemaNode original,
-            final ImmutableSet<String> defaults, final ElementCountConstraint elementCountConstraint) {
-        super(declared, argument, flags, substatements, original, elementCountConstraint);
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final ImmutableSet<String> defaults,
+            final ElementCountConstraint elementCountConstraint) {
+        super(declared, argument, flags, substatements, elementCountConstraint);
         this.defaults = requireNonNull(defaults);
     }
 
     public RegularLeafListEffectiveStatement(final RegularLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final QName argument, final int flags) {
-        super(originalEffective, original, argument, flags);
-        this.defaults = originalEffective.defaults;
+            final QName argument, final int flags) {
+        super(originalEffective, argument, flags);
+        defaults = originalEffective.defaults;
     }
 
     @Override
index 8691a1508757d6554ecc0b5a416024be66fff21d..f113e12b7bf44a76d316991fdcc2954495e12d98 100644 (file)
@@ -11,41 +11,29 @@ 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.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
 
 public final class RegularListEffectiveStatement extends AbstractListEffectiveStatement {
     private final ElementCountConstraint elementCountConstraint;
-    private final ListSchemaNode original;
 
     public RegularListEffectiveStatement(final ListStatement declared, final QName argument, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final ImmutableList<QName> keyDefinition, final ElementCountConstraint elementCountConstraint,
-            final ListSchemaNode original) {
+            final ImmutableList<QName> keyDefinition, final ElementCountConstraint elementCountConstraint) {
         super(declared, argument, flags, substatements, keyDefinition);
         this.elementCountConstraint = elementCountConstraint;
-        this.original = original;
     }
 
     public RegularListEffectiveStatement(final RegularListEffectiveStatement originalEffective, final QName argument,
-            final int flags, final ListSchemaNode original) {
+            final int flags) {
         super(originalEffective, argument, flags);
         elementCountConstraint = originalEffective.elementCountConstraint;
-        this.original = original;
     }
 
-    public RegularListEffectiveStatement(final EmptyListEffectiveStatement originalEffective,
-            final QName argument, final int flags, final ListSchemaNode original) {
+    public RegularListEffectiveStatement(final EmptyListEffectiveStatement originalEffective, final QName argument,
+            final int flags) {
         super(originalEffective, argument, flags);
         elementCountConstraint = null;
-        this.original = original;
-    }
-
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<ListSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
     }
 
     @Override
index 2cd749c39a3641c7000459ee47ccf359b7bd2712..8f6889fcd1db6287b5b8464218013c514771c788 100644 (file)
@@ -11,25 +11,24 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
 public final class SlimLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement {
     public SlimLeafListEffectiveStatement(final LeafListStatement declared, final QName argument, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
-        super(declared, argument, flags, substatements, original, elementCountConstraint);
+            final ElementCountConstraint elementCountConstraint) {
+        super(declared, argument, flags, substatements, elementCountConstraint);
     }
 
-    public SlimLeafListEffectiveStatement(final SlimLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final QName argument, final int flags) {
-        super(originalEffective, original, argument, flags);
+    public SlimLeafListEffectiveStatement(final SlimLeafListEffectiveStatement originalEffective, final QName argument,
+            final int flags) {
+        super(originalEffective, argument, flags);
     }
 
-    public SlimLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final QName argument, final int flags) {
-        super(originalEffective, original, argument, flags);
+    public SlimLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective, final QName argument,
+            final int flags) {
+        super(originalEffective, argument, flags);
     }
 
     @Override
index 5414cb919184583ba29d2f7a3f66fa566dd1d5a6..7a5cbd5c254e5a73c36c7d356ad080f6342b6603 100644 (file)
@@ -10,11 +10,8 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-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.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
@@ -24,24 +21,21 @@ import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiv
 public final class UndeclaredCaseEffectiveStatement
         extends DefaultWithDataTree<QName, CaseStatement, CaseEffectiveStatement>
         implements CaseEffectiveStatementMixin {
-    private final @Nullable CaseSchemaNode original;
     private final @NonNull QName argument;
     private final int flags;
 
     public UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final QName argument, final int flags, final @Nullable CaseSchemaNode original) {
+            final QName argument, final int flags) {
         super(substatements);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     public UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final QName argument,
-            final int flags, final @Nullable CaseSchemaNode original) {
+            final int flags) {
         super(origEffective);
         this.argument = requireNonNull(argument);
         this.flags = flags;
-        this.original = original;
     }
 
     @Override
@@ -54,12 +48,6 @@ public final class UndeclaredCaseEffectiveStatement
         return flags;
     }
 
-    @Override
-    @Deprecated(since = "7.0.9", forRemoval = true)
-    public Optional<CaseSchemaNode> getOriginal() {
-        return Optional.ofNullable(original);
-    }
-
     @Override
     public DataSchemaNode dataChildByName(final QName name) {
         return dataSchemaNode(name);
index 21015ca799c8a8c350ed5fe955f02c53a90130f0..780529bde9aa1756c6db3a378831cd7b67f664d4 100644 (file)
@@ -30,7 +30,6 @@ import org.opendaylight.yangtools.yang.model.api.ContainerLike;
 import org.opendaylight.yangtools.yang.model.api.CopyableNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
@@ -400,9 +399,9 @@ public final class EffectiveStatementMixins {
      *
      * @param <D> Class representing declared version of this statement.
      */
-    public interface OpaqueDataSchemaNodeMixin<D extends DeclaredStatement<QName>, S extends DerivableSchemaNode<S>>
-            extends DerivableSchemaNode<S>, DataSchemaNodeMixin<D>, DocumentedNodeMixin.WithStatus<QName, D>,
-                    MandatoryMixin<QName, D>, MustConstraintMixin<QName, D>, WhenConditionMixin<QName, D> {
+    public interface OpaqueDataSchemaNodeMixin<D extends DeclaredStatement<QName>>
+            extends DataSchemaNodeMixin<D>, DocumentedNodeMixin.WithStatus<QName, D>, MandatoryMixin<QName, D>,
+                    MustConstraintMixin<QName, D>, WhenConditionMixin<QName, D> {
         @Override
         default QName getQName() {
             return argument();
index ee777fcb190bc9534074b2d7e25589e3c1233280..6e8645b2d8d31e65401a7cf8aa34c4f79f61e9be 100644 (file)
@@ -11,6 +11,7 @@ import static com.google.common.base.Verify.verify;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.List;
 import java.util.Objects;
 import java.util.regex.Pattern;
@@ -137,6 +138,7 @@ abstract class AbstractAugmentStatementSupport
     }
 
     @Override
+    @SuppressFBWarnings(value = "BC_UNCONFIRMED_CAST", justification = "Cast of original(), should be always safe")
     protected final AugmentEffectiveStatement createEffective(
             final Current<SchemaNodeIdentifier, AugmentStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
@@ -146,7 +148,7 @@ abstract class AbstractAugmentStatementSupport
 
         try {
             return EffectiveStatements.createAugment(stmt.declared(), stmt.getArgument(), flags,
-                stmt.moduleName().getModule(), substatements, stmt.original(AugmentationSchemaNode.class));
+                stmt.moduleName().getModule(), substatements, (AugmentationSchemaNode) stmt.original());
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
index dd7887a62f1067f2590261990aa47bb26eb45c63..0763ec8c48b8ac8724e8e38098b38f94e68b75b6 100644 (file)
@@ -140,7 +140,7 @@ public final class ListStatementSupport
     public ListEffectiveStatement copyEffective(final Current<QName, ListStatement> stmt,
             final ListEffectiveStatement original) {
         return EffectiveStatements.copyList(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(ListSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
@@ -180,8 +180,7 @@ public final class ListStatementSupport
 
         try {
             return EffectiveStatements.createList(stmt.declared(), stmt.getArgument(), flags, substatements,
-                keyDefinition, EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null),
-                stmt.original(ListSchemaNode.class));
+                keyDefinition, EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null));
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
index ac1baacebcaa36c9da892dc2ad2d4bb40353bf05..3f0a95c5d6d0f06e5f8da6b6cf79623e20d6a2da 100644 (file)
@@ -67,15 +67,15 @@ public final class AnydataStatementSupport
     @Override
     protected AnydataEffectiveStatement createEffective(final Current<QName, AnydataStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return EffectiveStatements.createAnydata(stmt.declared(), stmt.getArgument(),
-            createFlags(stmt, substatements), substatements, stmt.original(AnydataSchemaNode.class));
+        return EffectiveStatements.createAnydata(stmt.declared(), stmt.getArgument(), createFlags(stmt, substatements),
+            substatements);
     }
 
     @Override
     public AnydataEffectiveStatement copyEffective(final Current<QName, AnydataStatement> stmt,
             final AnydataEffectiveStatement original) {
         return EffectiveStatements.copyAnydata(original, stmt.getArgument(),
-            createFlags(stmt, original.effectiveSubstatements()), stmt.original(AnydataSchemaNode.class));
+            createFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
index e659b2ff0d667b785997586c39e8d2adf8ff8dd0..1474a748760d704ce20ab6e2cb14d3730c43cf7f 100644 (file)
@@ -68,14 +68,14 @@ public final class AnyxmlStatementSupport
     protected AnyxmlEffectiveStatement createEffective(final Current<QName, AnyxmlStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         return EffectiveStatements.createAnyxml(stmt.declared(), stmt.getArgument(), createFlags(stmt, substatements),
-            substatements, stmt.original(AnyxmlSchemaNode.class));
+            substatements);
     }
 
     @Override
     public AnyxmlEffectiveStatement copyEffective(final Current<QName, AnyxmlStatement> stmt,
             final AnyxmlEffectiveStatement original) {
         return EffectiveStatements.copyAnyxml(original, stmt.getArgument(),
-            createFlags(stmt, original.effectiveSubstatements()), stmt.original(AnyxmlSchemaNode.class));
+            createFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
index 38726f1eff9f0a3e06cd30bf5a69d2183674d1e3..d9e06ec0b57a4af7911292bf0d8a764a9d8fed8b 100644 (file)
@@ -111,14 +111,14 @@ public final class CaseStatementSupport
     protected CaseEffectiveStatement copyDeclaredEffective(final Current<QName, CaseStatement> stmt,
             final CaseEffectiveStatement original) {
         return EffectiveStatements.copyCase(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
     protected CaseEffectiveStatement copyUndeclaredEffective(final Current<QName, CaseStatement> stmt,
             final CaseEffectiveStatement original) {
         return EffectiveStatements.copyCase(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
@@ -126,7 +126,7 @@ public final class CaseStatementSupport
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         try {
             return EffectiveStatements.createCase(stmt.declared(), stmt.getArgument(),
-                computeFlags(stmt, substatements), substatements, stmt.original(CaseSchemaNode.class));
+                computeFlags(stmt, substatements), substatements);
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
@@ -136,8 +136,7 @@ public final class CaseStatementSupport
     protected CaseEffectiveStatement createUndeclaredEffective(final Current<QName, CaseStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         try {
-            return EffectiveStatements.createCase(stmt.getArgument(), computeFlags(stmt, substatements),
-                substatements, stmt.original(CaseSchemaNode.class));
+            return EffectiveStatements.createCase(stmt.getArgument(), computeFlags(stmt, substatements), substatements);
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
index 4b0d0eaf25b10585d924223db830372bbdc4aff1..e652a8f414813eeaa3ad8138fdd55509382caca1 100644 (file)
@@ -127,7 +127,7 @@ public final class ChoiceStatementSupport
     public ChoiceEffectiveStatement copyEffective(final Current<QName, ChoiceStatement> stmt,
             final ChoiceEffectiveStatement original) {
         return EffectiveStatements.copyChoice(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(ChoiceSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
@@ -152,7 +152,7 @@ public final class ChoiceStatementSupport
 
         try {
             return EffectiveStatements.createChoice(stmt.declared(), stmt.getArgument(),
-                computeFlags(stmt, substatements), substatements, defaultCase, stmt.original(ChoiceSchemaNode.class));
+                computeFlags(stmt, substatements), substatements, defaultCase);
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
index b8f8d2978d2ad57c002574a7b4c35872b0e320ab..7ebac629854cc2bcc3ebf292c9635ebb3f945956 100644 (file)
@@ -120,7 +120,7 @@ public final class ContainerStatementSupport
 
         try {
             return EffectiveStatements.createContainer(stmt.declared(), stmt.getArgument(),
-                createFlags(stmt, substatements), substatements, stmt.original(ContainerSchemaNode.class));
+                createFlags(stmt, substatements), substatements);
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }
@@ -130,7 +130,7 @@ public final class ContainerStatementSupport
     public ContainerEffectiveStatement copyEffective(final Current<QName, ContainerStatement> stmt,
             final ContainerEffectiveStatement original) {
         return EffectiveStatements.copyContainer(original, stmt.getArgument(),
-            createFlags(stmt, original.effectiveSubstatements()), stmt.original(ContainerSchemaNode.class));
+            createFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
index cb2633140be0a139430e70c843df0a66743f8650..220f7ad75659f9e3550e4b26b9d310c5fd50527b 100644 (file)
@@ -105,7 +105,7 @@ public final class LeafListStatementSupport
     public LeafListEffectiveStatement copyEffective(final Current<QName, LeafListStatement> stmt,
             final LeafListEffectiveStatement original) {
         return EffectiveStatements.copyLeafList(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(LeafListSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
@@ -131,8 +131,7 @@ public final class LeafListStatementSupport
 
         return EffectiveStatements.createLeafList(stmt.declared(), stmt.getArgument(),
             computeFlags(stmt, substatements), substatements, defaultValues,
-            EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null),
-            stmt.original(LeafListSchemaNode.class));
+            EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null));
     }
 
     @Override
index ef8957a0037de74ce2e78972583d892f205762df..47c425e203608ee5482e6631cc1877364c3b3703 100644 (file)
@@ -82,7 +82,7 @@ public final class LeafStatementSupport
     public LeafEffectiveStatement copyEffective(final Current<QName, LeafStatement> stmt,
             final LeafEffectiveStatement original) {
         return EffectiveStatements.copyLeaf(original, stmt.getArgument(),
-            computeFlags(stmt, original.effectiveSubstatements()), stmt.original(LeafSchemaNode.class));
+            computeFlags(stmt, original.effectiveSubstatements()));
     }
 
     @Override
@@ -97,7 +97,7 @@ public final class LeafStatementSupport
             "Leaf '%s' has default value '%s' marked with an if-feature statement.", stmt.argument(), dflt);
 
         return EffectiveStatements.createLeaf(stmt.declared(), stmt.getArgument(), computeFlags(stmt, substatements),
-            substatements, stmt.original(LeafSchemaNode.class));
+            substatements);
     }
 
     @Override
index 548dd417c2ba2f0f91b218ad9b4b6b0db709cc8b..b78807d75faad1d6da944e21e17f514d62f298dc 100644 (file)
@@ -7,10 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.stmt;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -19,7 +18,6 @@ import com.google.common.collect.Iterables;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
-import org.eclipse.jdt.annotation.Nullable;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
@@ -32,7 +30,6 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
@@ -154,8 +151,7 @@ public class GroupingTest extends AbstractModelTest {
 
         final AnyxmlSchemaNode data_g = (AnyxmlSchemaNode) grouping.getDataChildByName(bazQName("data"));
         assertFalse(data_g.isAddedByUses());
-        assertFalse(data_u.equals(data_g));
-        assertEquals(data_g, extractOriginal(data_u));
+        assertNotEquals(data_u, data_g);
 
         final ChoiceSchemaNode how_u = (ChoiceSchemaNode) destination.getDataChildByName(fooQName("how"));
         assertIsAddedByUses(how_u, true);
@@ -164,8 +160,7 @@ public class GroupingTest extends AbstractModelTest {
         final ChoiceSchemaNode how_g = (ChoiceSchemaNode) grouping.getDataChildByName(bazQName("how"));
         assertIsAddedByUses(how_g, false);
         assertEquals(2, how_g.getCases().size());
-        assertFalse(how_u.equals(how_g));
-        assertEquals(how_g, extractOriginal(how_u));
+        assertNotEquals(how_u, how_g);
 
         final LeafSchemaNode address_u = (LeafSchemaNode) destination.getDataChildByName(fooQName("address"));
         assertEquals(Optional.of("1.2.3.4"), address_u.getType().getDefaultValue());
@@ -179,27 +174,24 @@ public class GroupingTest extends AbstractModelTest {
         assertFalse(address_g.isAddedByUses());
         assertEquals(Optional.empty(), address_g.getType().getDefaultValue());
         assertEquals(Optional.of("Target IP address"), address_g.getDescription());
-        assertFalse(address_g.getReference().isPresent());
+        assertEquals(Optional.empty(), address_g.getReference());
         assertEquals(Optional.empty(), address_g.effectiveConfig());
-        assertFalse(address_u.equals(address_g));
         assertTrue(address_g.isMandatory());
-        assertEquals(address_g, extractOriginal(address_u));
+        assertNotEquals(address_u, address_g);
 
         final ContainerSchemaNode port_u = (ContainerSchemaNode) destination.getDataChildByName(fooQName("port"));
         assertIsAddedByUses(port_u, true);
 
         final ContainerSchemaNode port_g = (ContainerSchemaNode) grouping.getDataChildByName(bazQName("port"));
         assertIsAddedByUses(port_g, false);
-        assertFalse(port_u.equals(port_g));
-        assertEquals(port_g, extractOriginal(port_u));
+        assertNotEquals(port_u, port_g);
 
         final ListSchemaNode addresses_u = (ListSchemaNode) destination.getDataChildByName(fooQName("addresses"));
         assertIsAddedByUses(addresses_u, true);
 
         final ListSchemaNode addresses_g = (ListSchemaNode) grouping.getDataChildByName(bazQName("addresses"));
         assertIsAddedByUses(addresses_g, false);
-        assertFalse(addresses_u.equals(addresses_g));
-        assertEquals(addresses_g, extractOriginal(addresses_u));
+        assertNotEquals(addresses_u, addresses_g);
 
         // grouping defined by 'uses'
         final Collection<? extends GroupingDefinition> groupings_u = destination.getGroupings();
@@ -236,8 +228,7 @@ public class GroupingTest extends AbstractModelTest {
 
         final AnyxmlSchemaNode data_g = (AnyxmlSchemaNode) grouping.getDataChildByName(bazQName("data"));
         assertFalse(data_g.isAddedByUses());
-        assertFalse(data_u.equals(data_g));
-        assertEquals(data_g, extractOriginal(data_u));
+        assertNotEquals(data_u, data_g);
 
         final ChoiceSchemaNode how_u = (ChoiceSchemaNode) FOO.getDataChildByName(fooQName("how"));
         assertIsAddedByUses(how_u, true);
@@ -253,8 +244,7 @@ public class GroupingTest extends AbstractModelTest {
 
         final ChoiceSchemaNode how_g = (ChoiceSchemaNode) grouping.getDataChildByName(bazQName("how"));
         assertIsAddedByUses(how_g, false);
-        assertFalse(how_u.equals(how_g));
-        assertEquals(how_g, extractOriginal(how_u));
+        assertNotEquals(how_u, how_g);
 
         final LeafSchemaNode address_u = (LeafSchemaNode) FOO.getDataChildByName(fooQName("address"));
         assertEquals(Optional.empty(), address_u.getType().getDefaultValue());
@@ -269,24 +259,21 @@ public class GroupingTest extends AbstractModelTest {
         assertEquals(Optional.of("Target IP address"), address_g.getDescription());
         assertFalse(address_g.getReference().isPresent());
         assertEquals(Optional.empty(), address_g.effectiveConfig());
-        assertFalse(address_u.equals(address_g));
-        assertEquals(address_g, extractOriginal(address_u));
+        assertNotEquals(address_u, address_g);
 
         final ContainerSchemaNode port_u = (ContainerSchemaNode) FOO.getDataChildByName(fooQName("port"));
         assertIsAddedByUses(port_u, true);
 
         final ContainerSchemaNode port_g = (ContainerSchemaNode) grouping.getDataChildByName(bazQName("port"));
         assertIsAddedByUses(port_g, false);
-        assertFalse(port_u.equals(port_g));
-        assertEquals(port_g, extractOriginal(port_u));
+        assertNotEquals(port_u, port_g);
 
         final ListSchemaNode addresses_u = (ListSchemaNode) FOO.getDataChildByName(fooQName("addresses"));
         assertIsAddedByUses(addresses_u, true);
 
         final ListSchemaNode addresses_g = (ListSchemaNode) grouping.getDataChildByName(bazQName("addresses"));
         assertIsAddedByUses(addresses_g, false);
-        assertFalse(addresses_u.equals(addresses_g));
-        assertEquals(addresses_g, extractOriginal(addresses_u));
+        assertNotEquals(addresses_u, addresses_g);
 
         // grouping defined by 'uses'
         final Collection<? extends GroupingDefinition> groupings_u = FOO.getGroupings();
@@ -371,7 +358,6 @@ public class GroupingTest extends AbstractModelTest {
         final LeafSchemaNode leafGroupingU = (LeafSchemaNode) gu.getDataChildByName(
             QName.create(namespace, "leaf-grouping-U"));
         assertFalse(leafGroupingU.isAddedByUses());
-        assertNull(extractOriginal(leafGroupingU));
 
         for (final DataSchemaNode childNode : childNodes) {
             if (!childNode.getQName().equals(leafGroupingU.getQName())) {
@@ -460,33 +446,6 @@ public class GroupingTest extends AbstractModelTest {
             QName.create(namespace, "leaf-grouping-ZZ"));
         assertFalse(leafZZinGZZ.isAddedByUses());
         assertEquals(QName.create(expectedModule, "leaf-grouping-ZZ"), leafZZinGZZ.getQName());
-
-        // TEST getOriginal from grouping-U
-        assertEquals(gv.getDataChildByName(QName.create(namespace, "leaf-grouping-V")),
-            extractOriginal(gu.getDataChildByName(QName.create(namespace, "leaf-grouping-V"))));
-        containerGroupingV = (ContainerSchemaNode) gu.getDataChildByName(
-            QName.create(namespace, "container-grouping-V"));
-        assertEquals(gv.getDataChildByName(QName.create(namespace, "container-grouping-V")),
-            extractOriginal(containerGroupingV));
-        assertEquals(gx.getDataChildByName(QName.create(namespace, "leaf-grouping-X")),
-            extractOriginal(containerGroupingV.getDataChildByName(QName.create(namespace, "leaf-grouping-X"))));
-        assertEquals(gy.getDataChildByName(QName.create(namespace, "leaf-grouping-Y")),
-            extractOriginal(containerGroupingV.getDataChildByName(QName.create(namespace, "leaf-grouping-Y"))));
-
-        assertEquals(gz.getDataChildByName(QName.create(namespace, "leaf-grouping-Z")),
-            extractOriginal(gu.getDataChildByName(QName.create(namespace, "leaf-grouping-Z"))));
-        assertEquals(gzz.getDataChildByName(QName.create(namespace, "leaf-grouping-ZZ")),
-            extractOriginal(gu.getDataChildByName(QName.create(namespace, "leaf-grouping-ZZ"))));
-
-        // TEST getOriginal from grouping-V
-        assertEquals(gz.getDataChildByName(QName.create(namespace, "leaf-grouping-Z")),
-            extractOriginal(gv.getDataChildByName(QName.create(namespace, "leaf-grouping-Z"))));
-        assertEquals(gzz.getDataChildByName(QName.create(namespace, "leaf-grouping-ZZ")),
-            extractOriginal(gv.getDataChildByName(QName.create(namespace, "leaf-grouping-ZZ"))));
-
-        // TEST getOriginal from grouping-X
-        assertEquals(gy.getDataChildByName(QName.create(namespace, "leaf-grouping-Y")),
-            extractOriginal(gx.getDataChildByName(QName.create(namespace, "leaf-grouping-Y"))));
     }
 
     @Test
@@ -540,9 +499,4 @@ public class GroupingTest extends AbstractModelTest {
             }
         }
     }
-
-    private static @Nullable DerivableSchemaNode<?> extractOriginal(final SchemaNode node) {
-        assertThat(node, instanceOf(DerivableSchemaNode.class));
-        return ((DerivableSchemaNode<?>) node).getOriginal().orElse(null);
-    }
 }
index 1d8c10d7ed5a2fb238bf9db6aff8dd66d2121401..40c14ee432af75b1faec9428192009c5c74c3e54 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
 import java.util.Collection;
-import java.util.Objects;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.CopyableNode;
@@ -39,9 +38,7 @@ public abstract class AbstractSchemaTreeStatementSupport<D extends DeclaredState
             public boolean canReuseCurrent(final Current<QName, D> copy, final Current<QName, D> current,
                     final Collection<? extends EffectiveStatement<?, ?>> substatements) {
                 return copy.effectiveConfig() == current.effectiveConfig()
-                    && super.canReuseCurrent(copy, current, substatements)
-                    // This weird quirk is needed for ... something somewhere
-                    && Objects.equals(copy.original(), current.original());
+                    && super.canReuseCurrent(copy, current, substatements);
             }
         }
 
index 96f1c8b153397245ee45b209e6d62f8db9c1440c..2140b7dceb78c33e22bfa00e71ab4eb2fcc85c82 100644 (file)
@@ -113,11 +113,6 @@ public interface EffectiveStmtCtx extends CommonStmtCtx, StmtContextCompat, Immu
         @Deprecated(since = "7.0.9", forRemoval = true)
         @Nullable EffectiveStatement<?, ?> original();
 
-        @Deprecated(since = "7.0.9", forRemoval = true)
-        default <T> @Nullable T original(final @NonNull Class<T> type) {
-            return type.cast(original());
-        }
-
         // FIXME: 8.0.0: this method should be moved to stmt.type in some shape or form
         @NonNull QName argumentAsTypeQName();