From 23be2fb85e1f5583f2f84fc389cdfb3c9d3e5638 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 7 Sep 2021 00:43:14 +0200 Subject: [PATCH] Remove UnknownSchemaNode.getExtensionDefinition() This method has been deprecated for removal. Remove it now, which also means it is not really normal to have recursion in xtensionEffectiveStatementImpl, allowing further code removal. JIRA: YANGTOOLS-1137 Change-Id: I5e9341dcd94d03822684f2cc2752212d3642fac7 Signed-off-by: Robert Varga --- .../yang/model/api/UnknownSchemaNode.java | 11 ---- .../eff/ExtensionEffectiveStatementImpl.java | 63 ++----------------- .../stmt/UnknownEffectiveStatementBase.java | 36 ++--------- 3 files changed, 10 insertions(+), 100 deletions(-) diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java index 192fdc4938..e7731844d4 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java @@ -29,15 +29,4 @@ public interface UnknownSchemaNode extends SchemaNode, CopyableNode, * @return string with the name of unknown node. */ String getNodeParameter(); - - /** - * Get extension definition which identifies this node. - * - * @return extension definition if exists, null otherwise - * @deprecated This method is can cause cyclic dependencies in the object graph. Use - * {@link SchemaContext#getExtensions()} with {@link #getNodeType()} instead. - */ - // FIXME: YANGTOOLS-1317: remove this method - @Deprecated(forRemoval = true, since = "7.0.8") - ExtensionDefinition getExtensionDefinition(); } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java index 5c962b208c..52e4126017 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java @@ -10,8 +10,6 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import static com.google.common.base.Verify.verifyNotNull; import com.google.common.collect.ImmutableList; -import java.util.ArrayDeque; -import java.util.Deque; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.Status; @@ -26,40 +24,6 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.D public final class ExtensionEffectiveStatementImpl extends DefaultArgument implements ExtensionDefinition, ExtensionEffectiveStatement, DocumentedNodeMixin { - private static final class RecursionDetector extends ThreadLocal> { - boolean check(final ExtensionEffectiveStatementImpl current) { - final Deque stack = get(); - if (stack != null) { - for (ExtensionEffectiveStatementImpl s : stack) { - if (s == current) { - return true; - } - } - } - return false; - } - - void push(final ExtensionEffectiveStatementImpl current) { - Deque stack = get(); - if (stack == null) { - stack = new ArrayDeque<>(1); - set(stack); - } - - stack.push(current); - } - - void pop() { - Deque stack = get(); - stack.pop(); - if (stack.isEmpty()) { - remove(); - } - } - } - - private static final RecursionDetector TOSTRING_DETECTOR = new RecursionDetector(); - private final Object substatements; public ExtensionEffectiveStatementImpl(final ExtensionStatement declared, @@ -105,28 +69,11 @@ public final class ExtensionEffectiveStatementImpl extends DefaultArgument ]"; + + "argument=" + getArgument() + + ", qname=" + getQName() + + ", yin=" + isYinElement() + + ", extensionSchemaNodes=" + getUnknownSchemaNodes() + + "]"; } } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java index 3382af1225..65adb7a485 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java @@ -7,22 +7,15 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt; -import static com.google.common.base.Preconditions.checkState; - 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.CopyableNode; -import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement; import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveDocumentedNodeWithStatus; -import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public abstract class UnknownEffectiveStatementBase> extends AbstractEffectiveDocumentedNodeWithStatus implements UnknownSchemaNode { @@ -30,7 +23,6 @@ public abstract class UnknownEffectiveStatementBase> substatements) { super(stmt.argument(), stmt.declared(), substatements); - final StmtContext extensionInit = - stmt.getFromNamespace(ExtensionNamespace.class, stmt.publicDefinition().getStatementName()); - - if (extensionInit == null) { - extension = null; - nodeType = stmt.publicDefinition().getStatementName(); - } else { - final EffectiveStatement effective = extensionInit.buildEffective(); - checkState(effective instanceof ExtensionDefinition, - "Statement %s is not an ExtensionDefinition", effective); - extension = (ExtensionDefinition) effective; - nodeType = null; - } + nodeType = stmt.publicDefinition().getStatementName(); // initCopyType final CopyableNode copyTypesFromOriginal = stmt.history(); @@ -60,15 +40,9 @@ public abstract class UnknownEffectiveStatementBase