Remove UnknownSchemaNode.getExtensionDefinition() 09/97409/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 6 Sep 2021 22:43:14 +0000 (00:43 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 6 Sep 2021 22:44:49 +0000 (00:44 +0200)
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 <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UnknownSchemaNode.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java

index 192fdc4938be80abd1618136554409de5c74c2f3..e7731844d4f284708b33605268183e200e7ae5a5 100644 (file)
@@ -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();
 }
index 5c962b208c1409e2de12c9cd9a9423397ec6cfd0..52e412601732b2abd8ef7da70514a02478d5a639 100644 (file)
@@ -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<QName, ExtensionStatement>
         implements ExtensionDefinition, ExtensionEffectiveStatement, DocumentedNodeMixin<QName, ExtensionStatement> {
-    private static final class RecursionDetector extends ThreadLocal<Deque<ExtensionEffectiveStatementImpl>> {
-        boolean check(final ExtensionEffectiveStatementImpl current) {
-            final Deque<ExtensionEffectiveStatementImpl> stack = get();
-            if (stack != null) {
-                for (ExtensionEffectiveStatementImpl s : stack) {
-                    if (s == current) {
-                        return true;
-                    }
-                }
-            }
-            return false;
-        }
-
-        void push(final ExtensionEffectiveStatementImpl current) {
-            Deque<ExtensionEffectiveStatementImpl> stack = get();
-            if (stack == null) {
-                stack = new ArrayDeque<>(1);
-                set(stack);
-            }
-
-            stack.push(current);
-        }
-
-        void pop() {
-            Deque<ExtensionEffectiveStatementImpl> 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<QName
 
     @Override
     public String toString() {
-        if (TOSTRING_DETECTOR.check(this)) {
-            return recursedToString();
-        }
-
-        TOSTRING_DETECTOR.push(this);
-        try {
-            return ExtensionEffectiveStatementImpl.class.getSimpleName() + "["
-                    + "argument=" + getArgument()
-                    + ", qname=" + getQName()
-                    + ", yin=" + isYinElement()
-                    + ", extensionSchemaNodes=" + getUnknownSchemaNodes()
-                    + "]";
-        } finally {
-            TOSTRING_DETECTOR.pop();
-        }
-    }
-
-    private String recursedToString() {
         return ExtensionEffectiveStatementImpl.class.getSimpleName() + "["
-                + "argument=" + getArgument()
-                + ", qname=" + getQName()
-                + ", yin=" + isYinElement()
-                + " <RECURSIVE> ]";
+            + "argument=" + getArgument()
+            + ", qname=" + getQName()
+            + ", yin=" + isYinElement()
+            + ", extensionSchemaNodes=" + getUnknownSchemaNodes()
+            + "]";
     }
 }
index 3382af12250e8073ceba6abc3a0e6d7e6f96ce83..65adb7a4851843e9ee6920b6145cc2f3a3eeef51 100644 (file)
@@ -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<A, D extends UnknownStatement<A>>
         extends AbstractEffectiveDocumentedNodeWithStatus<A, D> implements UnknownSchemaNode {
@@ -30,7 +23,6 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
     private final boolean addedByUses;
     private final boolean augmenting;
 
-    private final ExtensionDefinition extension;
     private final QName nodeType;
     private final String nodeParameter;
 
@@ -38,19 +30,7 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
             final @NonNull ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(stmt.argument(), stmt.declared(), substatements);
 
-        final StmtContext<?, ExtensionStatement, ExtensionEffectiveStatement> extensionInit =
-                stmt.getFromNamespace(ExtensionNamespace.class, stmt.publicDefinition().getStatementName());
-
-        if (extensionInit == null) {
-            extension = null;
-            nodeType = stmt.publicDefinition().getStatementName();
-        } else {
-            final EffectiveStatement<QName, ExtensionStatement> 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<A, D extends UnknownStatemen
         nodeParameter = stmt.rawArgument() == null ? "" : stmt.rawArgument();
     }
 
-    @Deprecated
-    @Override
-    public boolean isAugmenting() {
-        return augmenting;
-    }
-
     @Override
     public QName getNodeType() {
-        return extension == null ? nodeType : extension.getQName();
+        return nodeType;
     }
 
     @Override
@@ -84,13 +58,13 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
 
     @Deprecated
     @Override
-    public ExtensionDefinition getExtensionDefinition() {
-        return extension;
+    public boolean isAugmenting() {
+        return augmenting;
     }
 
     @Override
     public String toString() {
         final QName type = getNodeType();
-        return String.valueOf(type.getNamespace()) + ":" + type.getLocalName() + " " + nodeParameter;
+        return type.getNamespace() + ":" + type.getLocalName() + " " + nodeParameter;
     }
 }