From 3f295ee85142983463025520ab09df32f579a0de Mon Sep 17 00:00:00 2001 From: Nathan Harmata Date: Wed, 15 Jun 2016 19:44:41 +0000 Subject: Slight refactor of OutputFormatter interface: separate the specification of potentially-relevant options from the creation of the callback. -- MOS_MIGRATED_REVID=124981132 --- .../build/lib/query2/output/OutputFormatter.java | 43 ++++++++++++++-------- .../lib/query2/output/ProtoOutputFormatter.java | 18 ++++----- .../build/lib/query2/output/QueryOutputUtils.java | 6 ++- .../lib/query2/output/XmlOutputFormatter.java | 12 +----- 4 files changed, 40 insertions(+), 39 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/query2/output') diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java index 21bbf0f38b..b82d048c4b 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java @@ -170,9 +170,17 @@ public abstract class OutputFormatter implements Serializable { * before writting in the output. */ public interface StreamedFormatter { - - OutputFormatterCallback createStreamCallback(QueryOptions options, PrintStream out, - AspectResolver aspectResolver); + /** Specifies options to be used by subsequent calls to {@link #createStreamCallback}. */ + void setOptions(QueryOptions options, AspectResolver aspectResolver); + + /** + * Returns a {@link OutputFormatterCallback} whose {@link OutputFormatterCallback#process} + * outputs formatted {@link Target}s to the given {@code out}. + * + *

Takes any options specified via the most recent call to {@link #setOptions} into + * consideration. + */ + OutputFormatterCallback createStreamCallback(PrintStream out); } /** @@ -182,6 +190,10 @@ public abstract class OutputFormatter implements Serializable { abstract static class AbstractUnorderedFormatter extends OutputFormatter implements StreamedFormatter { + protected QueryOptions options; + protected AspectResolver aspectResolver; + protected DependencyFilter dependencyFilter; + protected Iterable getOrderedTargets( Digraph result, QueryOptions options) { Iterable> orderedResult = @@ -191,11 +203,19 @@ public abstract class OutputFormatter implements Serializable { return Iterables.transform(orderedResult, EXTRACT_NODE_LABEL); } + @Override + public void setOptions(QueryOptions options, AspectResolver aspectResolver) { + this.options = options; + this.aspectResolver = aspectResolver; + this.dependencyFilter = OutputFormatter.getDependencyFilter(options); + } + @Override public void output(QueryOptions options, Digraph result, PrintStream out, AspectResolver aspectResolver) throws IOException, InterruptedException { + setOptions(options, aspectResolver); OutputFormatterCallback.processAllTargets( - createStreamCallback(options, out, aspectResolver), + createStreamCallback(out), getOrderedTargets(result, options)); } } @@ -218,8 +238,7 @@ public abstract class OutputFormatter implements Serializable { } @Override - public OutputFormatterCallback createStreamCallback(QueryOptions options, - final PrintStream out, AspectResolver aspectResolver) { + public OutputFormatterCallback createStreamCallback(final PrintStream out) { return new OutputFormatterCallback() { @Override @@ -259,9 +278,7 @@ public abstract class OutputFormatter implements Serializable { } @Override - public OutputFormatterCallback createStreamCallback(QueryOptions options, - final PrintStream out, - AspectResolver aspectResolver) { + public OutputFormatterCallback createStreamCallback(final PrintStream out) { return new OutputFormatterCallback() { private final Set packageNames = Sets.newTreeSet(); @@ -297,9 +314,7 @@ public abstract class OutputFormatter implements Serializable { } @Override - public OutputFormatterCallback createStreamCallback(QueryOptions options, - final PrintStream out, - AspectResolver aspectResolver) { + public OutputFormatterCallback createStreamCallback(final PrintStream out) { return new OutputFormatterCallback() { @Override @@ -327,9 +342,7 @@ public abstract class OutputFormatter implements Serializable { } @Override - public OutputFormatterCallback createStreamCallback(QueryOptions options, - final PrintStream out, - AspectResolver aspectResolver) { + public OutputFormatterCallback createStreamCallback(final PrintStream out) { return new OutputFormatterCallback() { private final Set