diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2015-02-27 10:00:39 +0100 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-09 16:38:24 +0100 |
commit | 4fd8cd2715f83f8d5789a9cd1d7295acccc62100 (patch) | |
tree | d6dc8714ff198f83877edd023f27f07d5d72708a | |
parent | 9ac4cd8086417ea41bcd115d4daee18a24de7f84 (diff) | |
download | toolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.zip toolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.tar.gz toolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.tar.bz2 |
Add property for reporter stream
Bug: 18546725
Change-Id: Ie91b463bfb494f9608c4ea68316ac086bda64058
7 files changed, 47 insertions, 3 deletions
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java index e48177e..0aa1253 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java @@ -25,6 +25,7 @@ import com.android.sched.util.config.cli.TokenIterator; import com.android.sched.util.location.NoLocation; import java.io.File; +import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -227,6 +228,14 @@ public class JackApiToolchain extends JackBasedToolchain { return this; } + @Override + @Nonnull + public final JackApiToolchain setErrorStream(@Nonnull OutputStream errorStream) { + super.setErrorStream(errorStream); + jackOptions.setReporterStream(errorStream); + return this; + } + private static final void addProperties(@Nonnull Map<String, String> properties, @Nonnull Options jackOptions) { for (Entry<String, String> entry : properties.entrySet()) { diff --git a/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java index 52e4d1f..cf2ed55 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/Toolchain.java @@ -174,7 +174,7 @@ public abstract class Toolchain implements IToolchain { @Override @Nonnull - public final Toolchain setErrorStream(@Nonnull OutputStream errorStream) { + public Toolchain setErrorStream(@Nonnull OutputStream errorStream) { errRedirectStream = new PrintStream(errorStream); return this; } diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java index 5ed5104..f4fe284 100644 --- a/jack/src/com/android/jack/Options.java +++ b/jack/src/com/android/jack/Options.java @@ -30,6 +30,7 @@ import com.android.jack.ir.ast.JMethod; import com.android.jack.library.InputJackLibrary; import com.android.jack.library.InputJackLibraryCodec; import com.android.jack.meta.MetaImporter; +import com.android.jack.reporting.Reporter; import com.android.jack.resource.ResourceImporter; import com.android.jack.shrob.obfuscation.MappingPrinter; import com.android.jack.shrob.obfuscation.NameProviderFactory; @@ -66,6 +67,7 @@ import com.android.sched.util.file.FileOrDirectory.ChangePermission; import com.android.sched.util.file.FileOrDirectory.Existence; import com.android.sched.util.file.FileOrDirectory.Permission; import com.android.sched.util.file.FileUtils; +import com.android.sched.util.file.OutputStreamFile; import com.android.sched.util.location.FileLocation; import com.android.sched.util.location.NoLocation; import com.android.sched.util.location.StringLocation; @@ -88,6 +90,8 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -386,6 +390,9 @@ public class Options { "jack.internal.filter.method", "Define which filter will be used for methods", Filter.class).addDefaultValue("all-methods"); + @CheckForNull + private OutputStream reporterStream = null; + public void setVerbosityLevel(@Nonnull VerbosityLevel verbose) { this.verbose = verbose; } @@ -516,6 +523,11 @@ public class Options { configBuilder.set(VERBOSITY_LEVEL, verbose); + if (reporterStream != null) { + configBuilder.set(Reporter.REPORTER_OUTPUT_STREAM, + new OutputStreamFile(new PrintStream(reporterStream), new NoLocation())); + } + if (jarjarRulesFile != null) { configBuilder.set(PackageRenamer.JARJAR_ENABLED, true); configBuilder.setString(PackageRenamer.JARJAR_FILE, jarjarRulesFile.getPath()); @@ -875,6 +887,10 @@ public class Options { resImport.add(resource); } + public void setReporterStream(@Nonnull OutputStream reporterStream) { + this.reporterStream = reporterStream; + } + @Nonnull private static Directory createTempDirForTypeDexFiles( @Nonnull RunnableHooks hooks) { diff --git a/jack/src/com/android/jack/reporting/CommonReporter.java b/jack/src/com/android/jack/reporting/CommonReporter.java index 48cdcf0..d082b24 100644 --- a/jack/src/com/android/jack/reporting/CommonReporter.java +++ b/jack/src/com/android/jack/reporting/CommonReporter.java @@ -24,6 +24,8 @@ import com.android.sched.util.config.ThreadConfig; import org.eclipse.jdt.core.compiler.CategorizedProblem; +import java.io.PrintStream; + import javax.annotation.CheckForNull; import javax.annotation.Nonnull; @@ -33,8 +35,13 @@ import javax.annotation.Nonnull; */ abstract class CommonReporter implements Reporter { + @Nonnull private final VerbosityLevel verbosityLevel = ThreadConfig.get(Options.VERBOSITY_LEVEL); + @Nonnull + protected final PrintStream reporterStream = + ThreadConfig.get(REPORTER_OUTPUT_STREAM).getPrintStream(); + @Override public void report(@Nonnull Severity severity, @Nonnull Reportable reportable) { if (reportable instanceof EcjProblem) { diff --git a/jack/src/com/android/jack/reporting/DefaultReporter.java b/jack/src/com/android/jack/reporting/DefaultReporter.java index 2f815b0..ac9e335 100644 --- a/jack/src/com/android/jack/reporting/DefaultReporter.java +++ b/jack/src/com/android/jack/reporting/DefaultReporter.java @@ -48,6 +48,6 @@ public class DefaultReporter extends CommonReporter { } messageBuffer.append(": "); messageBuffer.append(message); - System.err.println(messageBuffer.toString()); + reporterStream.println(messageBuffer.toString()); } } diff --git a/jack/src/com/android/jack/reporting/Reporter.java b/jack/src/com/android/jack/reporting/Reporter.java index 7947376..5a09d07 100644 --- a/jack/src/com/android/jack/reporting/Reporter.java +++ b/jack/src/com/android/jack/reporting/Reporter.java @@ -17,8 +17,13 @@ package com.android.jack.reporting; import com.android.jack.config.id.Arzon; +import com.android.jack.config.id.Brest; +import com.android.sched.util.codec.OutputStreamCodec; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.id.ImplementationPropertyId; +import com.android.sched.util.config.id.PropertyId; +import com.android.sched.util.file.FileOrDirectory.Existence; +import com.android.sched.util.file.OutputStreamFile; import javax.annotation.Nonnull; @@ -40,6 +45,13 @@ public interface Reporter { "jack.reporter", "Define which reporter will be used", Reporter.class).addDefaultValue( "default").withCategory(Arzon.get()); + @Nonnull + public static final PropertyId<OutputStreamFile> REPORTER_OUTPUT_STREAM = PropertyId.create( + "jack.reporter.file", "File where the reporter will write", + new OutputStreamCodec(Existence.MAY_EXIST).allowStandardOutputOrError()) + .addDefaultValue("--").requiredIf(REPORTER.getClazz().isImplementedBy(DefaultReporter.class) + .or(REPORTER.getClazz().isImplementedBy(SdkReporter.class))).withCategory(Brest.get()); + public void report(@Nonnull Severity severity, @Nonnull Reportable reportable); } diff --git a/jack/src/com/android/jack/reporting/SdkReporter.java b/jack/src/com/android/jack/reporting/SdkReporter.java index f0e5eed..505933c 100644 --- a/jack/src/com/android/jack/reporting/SdkReporter.java +++ b/jack/src/com/android/jack/reporting/SdkReporter.java @@ -62,6 +62,6 @@ public class SdkReporter extends CommonReporter { } messageBuffer.append(MESSAGE_SEPARATOR); messageBuffer.append(message); - System.err.println(messageBuffer.toString()); + reporterStream.println(messageBuffer.toString()); } } |