Remove SchemaNode.getPath()
[yangtools.git] / parser / yang-parser-reactor / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / ReactorStmtCtx.java
index 66ad765afa84bc53301a1906773b6417186f2f21..9a5441d8e8ab5e1df81532431aaed66cd9e4b31c 100644 (file)
@@ -22,7 +22,6 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.YangVersion;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 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;
@@ -160,11 +159,6 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
     // FIXME: move this out once we have JDK15+
     private boolean boolFlag;
 
-    // SchemaPath cache for use with SubstatementContext and InferredStatementContext. This hurts RootStatementContext
-    // a bit in terms of size -- but those are only a few and SchemaPath is on its way out anyway.
-    // FIXME: this should become 'QName'
-    private SchemaPath schemaPath;
-
     ReactorStmtCtx() {
         // Empty on purpose
     }
@@ -614,63 +608,38 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
 
     @Override
     public final QName argumentAsTypeQName() {
-        return interpretAsQName(getRawArgument());
+        // FIXME: This may yield illegal argument exceptions
+        return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), getRawArgument());
     }
 
     @Override
     public final QNameModule effectiveNamespace() {
-        // FIXME: there has to be a better way to do this
-        return getSchemaPath().getLastComponent().getModule();
-    }
-
-    //
-    //
-    // Common SchemaPath cache. All of this is bound to be removed once YANGTOOLS-1066 is done.
-    //
-    //
-
-    // Exists only to support {SubstatementContext,InferredStatementContext}.schemaPath()
-    @Deprecated
-    final @Nullable SchemaPath substatementGetSchemaPath() {
-        if (schemaPath == null) {
-            schemaPath = createSchemaPath((StatementContextBase<?, ?, ?>) coerceParentContext());
-        }
-        return schemaPath;
-    }
-
-    // FIXME: 7.0.0: this method's logic needs to be moved to the respective StatementSupport classes
-    @Deprecated
-    private SchemaPath createSchemaPath(final StatementContextBase<?, ?, ?> parent) {
-        final SchemaPath parentPath = parent.getSchemaPath();
         if (StmtContextUtils.isUnknownStatement(this)) {
-            return parentPath.createChild(publicDefinition().getStatementName());
+            return publicDefinition().getStatementName().getModule();
+        }
+        if (producesDeclared(UsesStatement.class)) {
+            return coerceParent().effectiveNamespace();
         }
+
         final Object argument = argument();
         if (argument instanceof QName) {
-            final QName qname = (QName) argument;
-            if (producesDeclared(UsesStatement.class)) {
-                return parentPath;
-            }
-
-            return parentPath.createChild(qname);
+            return ((QName) argument).getModule();
         }
         if (argument instanceof String) {
-            return parentPath.createChild(interpretAsQName((String) argument));
+            // FIXME: This may yield illegal argument exceptions
+            return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), (String) argument).getModule();
         }
         if (argument instanceof SchemaNodeIdentifier
                 && (producesDeclared(AugmentStatement.class) || producesDeclared(RefineStatement.class)
                         || producesDeclared(DeviationStatement.class))) {
-
-            return parentPath.createChild(((SchemaNodeIdentifier) argument).getNodeIdentifiers());
+            return ((SchemaNodeIdentifier) argument).lastNodeIdentifier().getModule();
         }
 
-        // FIXME: this does not look right, investigate more?
-        return parentPath;
+        return coerceParent().effectiveNamespace();
     }
 
-    private @NonNull QName interpretAsQName(final String argument) {
-        // FIXME: This may yield illegal argument exceptions
-        return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), argument);
+    private ReactorStmtCtx<?, ?, ?> coerceParent() {
+        return (ReactorStmtCtx<?, ?, ?>) coerceParentContext();
     }
 
     //