From df824be1765fad8e2003c39cbca69b92b205ec90 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 3 Jul 2020 00:27:43 +0200 Subject: [PATCH] Deprecate EffectiveStatementBase for removal With all immediate users migrated or deprecated, mark the grim future for this class, slating it for removal/integration. JIRA: YANGTOOLS-1065 Change-Id: I4d06bdceedc3fcf5e45125f2f7fcfffe3de7d35e Signed-off-by: Robert Varga --- .../rfc7950/stmt/AbstractEffectiveDocumentedNode.java | 1 + .../rfc7950/stmt/DeclaredEffectiveStatementBase.java | 10 ++++++++-- .../parser/rfc7950/stmt/EffectiveStatementBase.java | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedNode.java index 91394a2032..f85da9d118 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedNode.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedNode.java @@ -17,6 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceEffectiveStatemen import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @Beta +@Deprecated(forRemoval = true) // FIXME: 6.0.0: fold this into AbstractEffectiveDocumentedNodeWithStatus public abstract class AbstractEffectiveDocumentedNode> extends DeclaredEffectiveStatementBase implements DocumentedNode { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/DeclaredEffectiveStatementBase.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/DeclaredEffectiveStatementBase.java index fad96f27a7..132bb32f2c 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/DeclaredEffectiveStatementBase.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/DeclaredEffectiveStatementBase.java @@ -13,6 +13,13 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +/** + * A declared {@link EffectiveStatementBase}. + * + * @deprecated Use {@link AbstractDeclaredEffectiveStatement} and its subclasses instead. + */ +@Deprecated(forRemoval = true) +// FIXME: 6.0.0: fold this into AbstractEffectiveDocumentedNodeWithStatus public abstract class DeclaredEffectiveStatementBase> extends EffectiveStatementBase { @@ -23,8 +30,7 @@ public abstract class DeclaredEffectiveStatementBase ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementBase.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementBase.java index 77ceab24e0..35a630d661 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementBase.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementBase.java @@ -23,6 +23,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; * * @param Argument type ({@link Void} if statement does not have argument.) * @param Class representing declared version of this statement. + * + * @deprecated This class has a number of design problems. Please use either {@link AbstractDeclaredEffectiveStatement} + * or {@link AbstractUndeclaredEffectiveStatement} instead. */ // TODO: This class is problematic in that it interacts with its subclasses via methods which are guaranteed to allows // atrocities like RecursiveObjectLeaker tricks. That should be avoided and pushed to caller in a way where @@ -31,6 +34,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; // // From memory efficiency perspective, it is very common to have effective statements without any substatements, // in which case 'substatements' field is redundant. +@Deprecated(forRemoval = true) +// FIXME: 6.0.0: fold this into AbstractEffectiveDocumentedNodeWithStatus public abstract class EffectiveStatementBase> extends AbstractEffectiveStatement { private final @NonNull ImmutableList> substatements; @@ -51,6 +56,7 @@ public abstract class EffectiveStatementBase> * @param substatementsInit proposed substatements * @return Filtered substatements */ + // FIXME: 6.0.0: this facility is only overridden by ExtensionEffectiveStatementImpl protected Collection> initSubstatements( final Collection> substatementsInit) { return Collections2.transform(Collections2.filter(substatementsInit, -- 2.36.6