summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2015-02-27 10:00:39 +0100
committermikaelpeltier <mikaelpeltier@google.com>2015-03-09 16:38:24 +0100
commit4fd8cd2715f83f8d5789a9cd1d7295acccc62100 (patch)
treed6dc8714ff198f83877edd023f27f07d5d72708a
parent9ac4cd8086417ea41bcd115d4daee18a24de7f84 (diff)
downloadtoolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.zip
toolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.tar.gz
toolchain_jack-4fd8cd2715f83f8d5789a9cd1d7295acccc62100.tar.bz2
Add property for reporter stream
Bug: 18546725 Change-Id: Ie91b463bfb494f9608c4ea68316ac086bda64058
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java9
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/Toolchain.java2
-rw-r--r--jack/src/com/android/jack/Options.java16
-rw-r--r--jack/src/com/android/jack/reporting/CommonReporter.java7
-rw-r--r--jack/src/com/android/jack/reporting/DefaultReporter.java2
-rw-r--r--jack/src/com/android/jack/reporting/Reporter.java12
-rw-r--r--jack/src/com/android/jack/reporting/SdkReporter.java2
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());
}
}