RefineEffectiveStatement is not a SchemaNode 93/95893/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Apr 2021 23:36:18 +0000 (01:36 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Apr 2021 23:41:05 +0000 (01:41 +0200)
Refines are taking immediate effect and do not exist directly in
SchemaNode view of the world. Do not implement SchemaNode, which makes
things a tad easier.

JIRA: YANGTOOLS-1279
Change-Id: If8b30e6bbf87ed0de79d07e620f694de552460ce
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineStatementSupport.java

index d2af01ecb568c0038402ddbf8289754fab80179e..44a67e53e4fbd34623051982c129beee472c04df 100644 (file)
@@ -10,55 +10,27 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
 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.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RefineEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
-import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DocumentedNodeMixin;
 
-// FIXME: 7.0.0: hide this class
-// FIXME: 7.0.0: do not implement SchemaNode
 public final class RefineEffectiveStatementImpl extends WithSubstatements<Descendant, RefineStatement>
-        implements RefineEffectiveStatement, SchemaNode, DocumentedNodeMixin<Descendant, RefineStatement> {
+        implements RefineEffectiveStatement, DocumentedNodeMixin<Descendant, RefineStatement> {
     private final @NonNull SchemaNode refineTargetNode;
-    private final @Nullable SchemaPath path;
 
     RefineEffectiveStatementImpl(final RefineStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final SchemaPath path,
-            final SchemaNode refineTargetNode) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final SchemaNode refineTargetNode) {
         super(declared, substatements);
         this.refineTargetNode = requireNonNull(refineTargetNode);
-        this.path = path;
     }
 
+    // FIXME: 8.0.0: discover this through namespace population
     public SchemaNode getRefineTargetNode() {
         return refineTargetNode;
     }
-
-    @Override
-    @Deprecated
-    public QName getQName() {
-        return Iterables.getLast(argument().getNodeIdentifiers());
-    }
-
-    @Override
-    @Deprecated
-    public SchemaPath getPath() {
-        return SchemaNodeDefaults.throwUnsupportedIfNull(this, path);
-    }
-
-    @Override
-    public Status getStatus() {
-        return findFirstEffectiveSubstatementArgument(StatusEffectiveStatement.class).orElse(Status.CURRENT);
-    }
 }
index 28d41dc792d21f5f66dceae3c0ab3aed37ed5e83..83010dd00efc17a122f5738614a94173a63209c3 100644 (file)
@@ -99,7 +99,7 @@ public final class RefineStatementSupport
     protected RefineEffectiveStatement createEffective(final Current<Descendant, RefineStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         // Empty refine is exceedingly unlikely: let's be lazy and reuse the implementation
-        return new RefineEffectiveStatementImpl(stmt.declared(), substatements, stmt.optionalPath(),
+        return new RefineEffectiveStatementImpl(stmt.declared(), substatements,
             (SchemaNode) verifyNotNull(stmt.namespaceItem(RefineTargetNamespace.class, Empty.getInstance()))
                 .buildEffective());
     }