Remove ImplicitParentAwareStatementSupport inheritence 78/80578/4
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Feb 2019 13:31:09 +0000 (14:31 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Feb 2019 14:08:23 +0000 (15:08 +0100)
Not all StatementSupports are ImplicitParentAwareStatementSupport,
make it an opt-in feature.

Change-Id: I98a1f3ff55c2f023e0806914409b1b5aef50e5a1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/AbstractChoiceStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/ForwardingStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/ImplicitParentAwareStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java

index 0cc9e4637670f93991292963d7cb48f23a95b9c8..43fdeb696d09d65d3e66661cda8af76439c1cc3f 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
@@ -58,7 +59,8 @@ public class StatementDefinitionContext<A, D extends DeclaredStatement<A>, E ext
     }
 
     public Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
-        return support.getImplicitParentFor(stmtDef);
+        return support instanceof ImplicitParentAwareStatementSupport
+                ? ((ImplicitParentAwareStatementSupport) support).getImplicitParentFor(stmtDef) : Optional.empty();
     }
 
     public boolean onStatementAdded(final Mutable<A, D, E> stmt) {
index 54bdf918a3b8d52f091437185a508a17791e558f..7f78ccf92362ad6b3d79ca679599be14f79e5dd4 100644 (file)
@@ -16,13 +16,15 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
 
 abstract class AbstractChoiceStatementSupport extends
-        AbstractQNameStatementSupport<ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> {
+        AbstractQNameStatementSupport<ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>>
+        implements ImplicitParentAwareStatementSupport {
     AbstractChoiceStatementSupport() {
         super(YangStmtMapping.CHOICE);
     }
index 54bcf11c306c9ec6b64317af376986c4d38269f3..56545ccacf668bca3b0f405e9949f4617ff37b90 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ForwardingObject;
-import java.util.Optional;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -57,11 +56,6 @@ public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<
         delegate().onStatementAdded(stmt);
     }
 
-    @Override
-    public Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
-        return delegate().getImplicitParentFor(stmtDef);
-    }
-
     @Override
     public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
         delegate().onPreLinkageDeclared(stmt);
index 4baf0d31ecf12bfbb185c7d8d7f9f62b028a7227..0ca41292511fe66233797b9d0e71ff8016f2ad7e 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
  * @author Robert Varga
  */
 @Beta
-// FIXME: 3.0.0: make this interface extend StatementSupport
 public interface ImplicitParentAwareStatementSupport {
     /**
      * Returns implicit parent statement support for supplied statement definition, if it is defined. This allows
index 5c6ddeee27e0e076a6621d32ac779e6892216090..e0a60739bd20d6183ee8107d48d1f4e3eb374793 100644 (file)
@@ -34,9 +34,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
  * @param <E>
  *            Effective Statement representation
  */
-// FIXME: 3.0.0: do not extends ImplicitParentAwareStatementSupport
 public interface StatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
-        extends StatementDefinition, StatementFactory<A, D, E>, ImplicitParentAwareStatementSupport {
+        extends StatementDefinition, StatementFactory<A, D, E> {
 
     /**
      * Returns public statement definition, which will be present in built statements.
@@ -84,12 +83,6 @@ public interface StatementSupport<A, D extends DeclaredStatement<A>, E extends E
      */
     void onStatementAdded(StmtContext.Mutable<A, D, E> stmt);
 
-    // FIXME: 3.0.0: remove this default method
-    @Override
-    default Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
-        return Optional.empty();
-    }
-
     /**
      * Invoked when statement is closed during {@link ModelProcessingPhase#SOURCE_PRE_LINKAGE} phase, only substatements
      * from this and previous phase are available.