Make QueryEnvironment#getTargetsMatchingPattern pass its result to a callback.
This is the third step in a series to allow processing large sets of targets in query target patterns via streaming batches rather than all at once. This should also be a functional no-op.
--
MOS_MIGRATED_REVID=111620668
diff --git a/src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java
index beba2f3..c63e00d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java
@@ -35,6 +35,7 @@
import com.google.devtools.build.lib.query2.engine.QueryEvalResult;
import com.google.devtools.build.lib.query2.engine.QueryException;
import com.google.devtools.build.lib.query2.engine.QueryExpression;
+import com.google.devtools.build.lib.query2.engine.QueryUtil.AggregateAllCallback;
import com.google.devtools.build.lib.util.BinaryPredicate;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.skyframe.WalkableGraph.WalkableGraphFactory;
@@ -233,7 +234,9 @@
reportBuildFileError(caller, e.getMessage());
}
}
- return getTargetsMatchingPattern(caller, pattern);
+ AggregateAllCallback<T> aggregatingCallback = new AggregateAllCallback<>();
+ getTargetsMatchingPattern(caller, pattern, aggregatingCallback);
+ return aggregatingCallback.getResult();
}
protected abstract Map<String, Set<Target>> preloadOrThrow(