Remove unused SourceSpecificContext methods
[yangtools.git] / yang / yang-parser-reactor / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / SourceSpecificContext.java
index c6c51f301a7268614b8792016088a71065383ce9..19bb1d5faa34c2644f2cab80d8da03ea785dde95 100644 (file)
@@ -29,10 +29,7 @@ import org.opendaylight.yangtools.concepts.Mutable;
 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.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.StatementSource;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
@@ -76,7 +73,9 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
     private final QNameToStatementDefinitionMap qnameToStmtDefMap = new QNameToStatementDefinitionMap();
     private final PrefixToModuleMap prefixToModuleMap = new PrefixToModuleMap();
     private final BuildGlobalContext currentContext;
-    private final StatementStreamSource source;
+
+    // Freed as soon as we complete ModelProcessingPhase.EFFECTIVE_MODEL
+    private StatementStreamSource source;
 
     /*
      * "imported" namespaces in this source -- this points to RootStatementContexts of
@@ -101,21 +100,6 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         return inProgressPhase;
     }
 
-    Optional<AbstractResumedStatement<?, ?, ?>> lookupDeclaredChild(final AbstractResumedStatement<?, ?, ?> current,
-            final int childId) {
-        if (current == null) {
-            return Optional.empty();
-        }
-
-        // Fast path: we are entering a statement which was emitted in previous phase
-        AbstractResumedStatement<?, ?, ?> existing = current.lookupSubstatement(childId);
-        while (existing != null && StatementSource.CONTEXT == existing.getStatementSource()) {
-            existing = existing.lookupSubstatement(childId);
-        }
-
-        return Optional.ofNullable(existing);
-    }
-
     AbstractResumedStatement<?, ?, ?> createDeclaredChild(final AbstractResumedStatement<?, ?, ?> current,
             final int childId, final QName name, final String argument, final StatementSourceReference ref) {
         StatementDefinitionContext<?, ?, ?> def = currentContext.getStatementDefinition(getRootVersion(), name);
@@ -192,14 +176,6 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         return root != null ? root.getRootVersion() : RootStatementContext.DEFAULT_VERSION;
     }
 
-    DeclaredStatement<?> buildDeclared() {
-        return root.buildDeclared();
-    }
-
-    EffectiveStatement<?, ?> buildEffective() {
-        return root.buildEffective();
-    }
-
     void startPhase(final ModelProcessingPhase phase) {
         final ModelProcessingPhase previousPhase = phase.getPreviousPhase();
         verify(Objects.equals(previousPhase, finishedPhase),
@@ -291,7 +267,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
     }
 
     @Override
-    public NamespaceStorageNode getParentNamespaceStorage() {
+    public BuildGlobalContext getParentNamespaceStorage() {
         return currentContext;
     }
 
@@ -307,8 +283,12 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         if (phaseCompleted && currentPhaseModifiers.isEmpty()) {
             finishedPhase = phase;
             LOG.debug("Source {} finished phase {}", source, phase);
+            if (phase == ModelProcessingPhase.EFFECTIVE_MODEL) {
+                // We have the effective model acquired, which is the final phase of source interaction.
+                LOG.trace("Releasing source {}", source);
+                source = null;
+            }
             return PhaseCompletionProgress.FINISHED;
-
         }
 
         return hasProgressed ? PhaseCompletionProgress.PROGRESS : PhaseCompletionProgress.NO_PROGRESS;