Remove DeclaredStatement.statementOrigin() 05/99005/9
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 15 Dec 2021 06:58:58 +0000 (07:58 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 15 Dec 2021 14:22:46 +0000 (15:22 +0100)
DeclaredStatements are always declared and thus statementOrigin() should
only be exposed from EffectiveStatements.

JIRA: YANGTOOLS-1384
Change-Id: I7b02b782dd25c5328d6c724d3ec08d54c9d9bfbb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/DeclaredStatement.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/EffectiveStatement.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/ModelStatement.java
model/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinXMLEventReader.java
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/ForwardingModelStatement.java

index 30bd0b114c5ceab4fbff21b0a736ad94429280bf..639e52cef6e335cf56db4df79d81e51535718e4e 100644 (file)
@@ -25,18 +25,6 @@ import org.opendaylight.yangtools.yang.common.Empty;
  * @param <A> Argument type ({@link Empty} if statement does not have argument.)
  */
 public interface DeclaredStatement<A> extends ModelStatement<A> {
-    /**
-     * {@inheritDoc}
-     *
-     * <p>
-     * Implementations are required to return {@link StatementOrigin#DECLARATION}, which is what the default
-     * implementation does. This method should never be explicitly implemented.
-     */
-    @Override
-    default StatementOrigin statementOrigin() {
-        return StatementOrigin.DECLARATION;
-    }
-
     /**
      * Returns statement argument as was present in original source.
      *
index 2ec06488e7675eefb1a721c0d16ab6305d1fd299..42b8daf03dca54278d3b93f519f7837f039db5fe 100644 (file)
@@ -24,15 +24,17 @@ import org.opendaylight.yangtools.yang.common.Empty;
  */
 public interface EffectiveStatement<A, D extends DeclaredStatement<A>> extends ModelStatement<A> {
     /**
-     * {@inheritDoc}
+     * Returns {@link StatementOrigin}, which denotes if statement was explicitly declared in original model or inferred
+     * during semantic processing of model.
      *
      * <p>
      * Implementations are required to return a {@link StatementOrigin}, consistent with {@link #getDeclared()}
      * nullness. This is what the default implementation does and hence this method should never be explicitly
      * implemented -- unless there is significant cost to the {@link #getDeclared()} implementation.
+     *
+     * @return statement origin.
      */
-    @Override
-    default StatementOrigin statementOrigin() {
+    default @NonNull StatementOrigin statementOrigin() {
         return getDeclared() != null ? StatementOrigin.DECLARATION : StatementOrigin.CONTEXT;
     }
 
index de0daaede2e7bd6f5809e71c99c9caf9a737a847..3a4e3b7c9d185fb7f5ad51eff5049b1c07c1b7ce 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.yangtools.yang.common.Empty;
  *
  * @param <A> Argument type ({@link Empty} if statement does not have argument.)
  */
+// FIXME: sealed interface when we have JDK17+
 public interface ModelStatement<A> {
     /**
      * Statement Definition of this statement.
@@ -40,12 +41,4 @@ public interface ModelStatement<A> {
      * @return statement argument.
      */
     @NonNull A argument();
-
-    /**
-     * Returns {@link StatementOrigin}, which denotes if statement was explicitly declared in original model or inferred
-     * during semantic processing of model.
-     *
-     * @return statement origin.
-     */
-    @NonNull StatementOrigin statementOrigin();
 }
index 6395959c8fd7bc2f3531eae54d0ef09726d29f5a..c3abcc1665a94f1ec4bb25664ad89f3f841c1640 100644 (file)
@@ -42,7 +42,7 @@ final class YinXMLEventReader implements XMLEventReader {
 
         OpenElement(final Iterator<? extends DeclaredStatement<?>> children) {
             this.children = requireNonNull(children);
-            this.name = null;
+            name = null;
         }
 
         OpenElement(final QName name, final Iterator<? extends DeclaredStatement<?>> children) {
@@ -174,28 +174,15 @@ final class YinXMLEventReader implements XMLEventReader {
     }
 
     private void nextStatement() {
-        OpenElement current = stack.peek();
+        final OpenElement current = stack.peek();
         if (current == null) {
             return;
         }
 
         do {
-            while (current.children.hasNext()) {
-                // We have to mind child statement origin and not emit empty implicit children
-                final DeclaredStatement<?> child = current.children.next();
-                switch (child.statementOrigin()) {
-                    case CONTEXT:
-                        final Iterator<? extends DeclaredStatement<?>> it = child.declaredSubstatements().iterator();
-                        if (it.hasNext()) {
-                            current = new OpenElement(it);
-                        }
-                        break;
-                    case DECLARATION:
-                        addStatement(child);
-                        return;
-                    default:
-                        throw new IllegalStateException("Unhandled statement origin " + child.statementOrigin());
-                }
+            if (current.children.hasNext()) {
+                addStatement(current.children.next());
+                return;
             }
 
             if (current.name != null) {
index 245ede5627965b368214aef6d2789c843436f831..fdf4071f4c1b9466ffa8ccfdaedb392d90baceee 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.collect.ForwardingObject;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.meta.ModelStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementOrigin;
 
 /**
  * Common base class for forwarding implementations of {@link ModelStatement}.
@@ -28,11 +27,6 @@ public abstract class ForwardingModelStatement<A, S extends ModelStatement<A>> e
         return delegate().argument();
     }
 
-    @Override
-    public StatementOrigin statementOrigin() {
-        return delegate().statementOrigin();
-    }
-
     @Override
     protected abstract @NonNull S delegate();
 }