Rename StatementSource to StatementOrigin
[yangtools.git] / yang / yang-parser-spi / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / CommonStmtCtx.java
index 7d50437512b00e0884d36c74dbe94fa70271bcf8..35dffbaedfd6510d0542467ea6f657115e5ba06c 100644 (file)
@@ -13,8 +13,10 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.VerifyException;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+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;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementOrigin;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 
 /**
@@ -28,6 +30,28 @@ public interface CommonStmtCtx {
      */
     @NonNull StatementDefinition publicDefinition();
 
+    /**
+     * Return true if this context produces specified {@link DeclaredStatement} representation.
+     *
+     * @param <D> Declared Statement representation
+     * @param type DeclaredStatement representation
+     * @return True if this context results in specified {@link DeclaredStatement} representation
+     */
+    default <D extends DeclaredStatement<?>> boolean producesDeclared(final Class<? super D> type) {
+        return type.isAssignableFrom(publicDefinition().getDeclaredRepresentationClass());
+    }
+
+    /**
+     * Return true if this context produces specified {@link EffectiveStatement} representation.
+     *
+     * @param <E> Effective Statement representation
+     * @param type EffectiveStatement representation
+     * @return True if this context results in specified {@link EffectiveStatement} representation
+     */
+    default <E extends EffectiveStatement<?, ?>> boolean producesEffective(final Class<? super E> type) {
+        return type.isAssignableFrom(publicDefinition().getEffectiveRepresentationClass());
+    }
+
     /**
      * Returns a reference to statement source.
      *
@@ -40,8 +64,8 @@ public interface CommonStmtCtx {
      *
      * @return origin of statement
      */
-    default @NonNull StatementSource source() {
-        return sourceReference().getStatementSource();
+    default @NonNull StatementOrigin origin() {
+        return sourceReference().statementOrigin();
     }
 
     /**