diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-04 09:20:41 +0100 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-09 17:38:17 +0100 |
commit | 6346674768a5f96da38e676e810fca14ea043c18 (patch) | |
tree | 002e66ddbdc3aace30fcb98bcf173f06d3b147e6 | |
parent | 89ee5fe59b1323a9a13eb978e08de6cd82126d48 (diff) | |
download | toolchain_jack-6346674768a5f96da38e676e810fca14ea043c18.zip toolchain_jack-6346674768a5f96da38e676e810fca14ea043c18.tar.gz toolchain_jack-6346674768a5f96da38e676e810fca14ea043c18.tar.bz2 |
Implement Api01Config
Change-Id: I455d060994c59fecf5dbad2a1b4ff0905cb7df61
7 files changed, 272 insertions, 175 deletions
diff --git a/jack-api/src/com/android/jack/api/v01/Api01Config.java b/jack-api/src/com/android/jack/api/v01/Api01Config.java index 82b1dd3..7dd7e44 100644 --- a/jack-api/src/com/android/jack/api/v01/Api01Config.java +++ b/jack-api/src/com/android/jack/api/v01/Api01Config.java @@ -30,78 +30,56 @@ import javax.annotation.Nonnull; */ public interface Api01Config extends JackConfig { - @Nonnull void setReporter(@Nonnull ReporterKind reporterKind, @Nonnull OutputStream reporterStream) throws ConfigurationException; - @Nonnull void setTypeImportCollisionPolicy(@Nonnull TypeCollisionPolicy typeImportCollisionPolicy) throws ConfigurationException; - @Nonnull void setResourceImportCollisionPolicy( @Nonnull ResourceCollisionPolicy resourceImportCollisionPolicy) throws ConfigurationException; - @Nonnull void setJavaSourceVersion(@Nonnull JavaSourceVersion javaSourceVersion) throws ConfigurationException; - @Nonnull void setObfuscationMappingOutputFile(@Nonnull File obfuscationMappingOuputFile) throws ConfigurationException; - @Nonnull void setClasspath(@Nonnull List<File> classpath) throws ConfigurationException; - @Nonnull void setImportedJackLibraryFiles(@Nonnull List<File> importedJackLibraryFiles) throws ConfigurationException; - @Nonnull void setMetaDirs(@Nonnull List<File> metaDirs) throws ConfigurationException; - @Nonnull void setResourceDirs(@Nonnull List<File> resourceDirs) throws ConfigurationException; - @Nonnull void setIncrementalDir(@Nonnull File incrementalDir) throws ConfigurationException; - @Nonnull void setOutputDexDir(@Nonnull File outputDexDir) throws ConfigurationException; - @Nonnull void setOutputJackFile(@Nonnull File outputJackFile) throws ConfigurationException; - @Nonnull void setJarJarConfigFile(@Nonnull File jarjarConfigFile) throws ConfigurationException; - @Nonnull void setProguardConfigFiles(@Nonnull List<File> proguardConfigFiles) throws ConfigurationException; - @Nonnull - void setEmitDebug(boolean emitDebug) throws ConfigurationException; + void setDebugInfoLevel(@Nonnull DebugInfoLevel debugInfoLevel) throws ConfigurationException; - @Nonnull void setMultiDexKind(@Nonnull MultiDexKind multiDexKind) throws ConfigurationException; - @Nonnull void setVerbosityLevel(@Nonnull VerbosityLevel verbosityLevel) throws ConfigurationException; - @Nonnull void setProcessorNames(@Nonnull List<String> processorNames) throws ConfigurationException; - @Nonnull void setProcessorPath(@Nonnull List<File> processorPath) throws ConfigurationException; - @Nonnull void setProcessorOptions(@Nonnull Map<String, String> processorOptions) throws ConfigurationException; - @Nonnull void setSourceEntries(@Nonnull List<File> sourceEntries) throws ConfigurationException; - @Nonnull void setProperty(@Nonnull String key, @Nonnull String value) throws ConfigurationException; @Nonnull diff --git a/jack-api/src/com/android/jack/api/v01/DebugInfoLevel.java b/jack-api/src/com/android/jack/api/v01/DebugInfoLevel.java new file mode 100644 index 0000000..589743b --- /dev/null +++ b/jack-api/src/com/android/jack/api/v01/DebugInfoLevel.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.jack.api.v01; + +/** + * STOPSHIP + */ +public enum DebugInfoLevel { + NONE, LINES, FULL +}
\ No newline at end of file diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java index 83efb1e..2d7f6f2 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java @@ -19,14 +19,18 @@ package com.android.jack.test.toolchain; import com.google.common.collect.Lists; import com.android.jack.Options; +import com.android.jack.api.v01.AbortException; import com.android.jack.api.v01.Api01Config; import com.android.jack.api.v01.ConfigurationException; +import com.android.jack.api.v01.DebugInfoLevel; +import com.android.jack.api.v01.ReporterKind; import com.android.jack.api.v01.VerbosityLevel; import com.android.jack.shrob.spec.Flags; import com.android.jack.test.TestConfigurationException; import com.android.sched.vfs.Container; import java.io.File; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -51,7 +55,7 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { throws Exception { srcToCommon(sources); setOutputDex(out); - apiV01Config.getTask().run(); + run(); } @Override @@ -59,21 +63,21 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { throws Exception { srcToCommon(sources); setOutputJack(out); - apiV01Config.getTask().run(); + run(); } @Override public void libToExe(@Nonnull File[] in, @Nonnull File out, boolean zipFile) throws Exception { libToCommon(in); setOutputDex(out); - apiV01Config.getTask().run(); + run(); } @Override public void libToLib(@Nonnull File[] in, @Nonnull File out, boolean zipFiles) throws Exception { libToCommon(in); setOutputJack(out); - apiV01Config.getTask().run(); + run(); } @Override @@ -119,7 +123,7 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { @Nonnull public JackApiV01Toolchain setWithDebugInfos(boolean withDebugInfos) { try { - apiV01Config.setEmitDebug(withDebugInfos); + apiV01Config.setDebugInfoLevel(DebugInfoLevel.FULL); return this; } catch (ConfigurationException e) { throw new TestConfigurationException(e); @@ -144,6 +148,43 @@ public class JackApiV01Toolchain extends JackApiToolchainBase { } } + @Override + @Nonnull + public final Toolchain setErrorStream(@Nonnull OutputStream errorStream) { + super.setErrorStream(errorStream); + try { + apiV01Config.setReporter(ReporterKind.DEFAULT, errorStream); + } catch (ConfigurationException e) { + throw new TestConfigurationException(e); + } + return this; + } + + private void run() throws Exception { + try { + System.setOut(outRedirectStream); + System.setErr(errRedirectStream); + apiV01Config.getTask().run(); + } catch (ConfigurationException e) { + Throwable t1 = e.getCause(); + if (t1 instanceof Exception) { + throw (Exception) t1; + } else { + throw new AssertionError(); + } + } catch (AbortException e1) { + Throwable t1 = e1.getCause(); + if (t1 instanceof Exception) { + throw (Exception) t1; + } else { + throw new AssertionError(); + } + } finally { + System.setOut(stdOut); + System.setOut(stdErr); + } + } + private void srcToCommon(@Nonnull File... sources) throws Exception { apiV01Config.setClasspath(classpath); apiV01Config.setImportedJackLibraryFiles(staticLibs); diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java index 58fa82c..6f67a94 100644 --- a/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java +++ b/jack-tests/tests/com/android/jack/multidex/MultiDexOverflowTests.java @@ -119,9 +119,8 @@ public class MultiDexOverflowTests { .addToClasspath(annotations) .srcToExe(outFolder, /* zipFile = */ false, srcFolder); Assert.fail(); - } catch (ProcessException e) { - Assert.assertTrue(e.getCause() instanceof JackAbortException); - Throwable contextException = e.getCause().getCause(); + } catch (JackAbortException e) { + Throwable contextException = e.getCause(); Assert.assertTrue(contextException instanceof DexWritingException); Assert.assertTrue(contextException.getCause() instanceof MainDexOverflowException); Assert.assertTrue(contextException.getCause().getCause() instanceof FieldIdOverflowException); diff --git a/jack-tests/tests/com/android/jack/tools/merger/test011/MergerTest011.java b/jack-tests/tests/com/android/jack/tools/merger/test011/MergerTest011.java index 2393284..351b590 100644 --- a/jack-tests/tests/com/android/jack/tools/merger/test011/MergerTest011.java +++ b/jack-tests/tests/com/android/jack/tools/merger/test011/MergerTest011.java @@ -75,9 +75,8 @@ public class MergerTest011 extends MergerTestTools { try { buildOneDexPerType(srcFolder, /* withDebug = */false, /* out = */ null, err); Assert.fail(); - } catch (ProcessException e) { - Assert.assertTrue(e.getCause() instanceof JackAbortException); - Throwable contextException = e.getCause().getCause(); + } catch (JackAbortException e) { + Throwable contextException = e.getCause(); Assert.assertTrue(contextException instanceof DexWritingException); Assert.assertTrue(contextException.getCause() instanceof SingleDexOverflowException); Assert.assertTrue(contextException.getCause().getCause() instanceof MethodIdOverflowException); @@ -99,9 +98,8 @@ public class MergerTest011 extends MergerTestTools { try { buildOneDexPerType(srcFolder, /* withDebug = */false, /* out = */ null, err); Assert.fail(); - } catch (ProcessException e) { - Assert.assertTrue(e.getCause() instanceof JackAbortException); - Throwable contextException = e.getCause().getCause(); + } catch (JackAbortException e) { + Throwable contextException = e.getCause(); Assert.assertTrue(contextException instanceof DexWritingException); Assert.assertTrue(contextException.getCause() instanceof SingleDexOverflowException); Assert.assertTrue(contextException.getCause().getCause() instanceof FieldIdOverflowException); diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java index f4fe284..982b480 100644 --- a/jack/src/com/android/jack/Options.java +++ b/jack/src/com/android/jack/Options.java @@ -276,12 +276,12 @@ public class Options { @Option(name = "--import-resource", usage = "import the given directory into the output as resource files (repeatable)", metaVar = "<DIRECTORY>") - private final List<File> resImport = new ArrayList<File>(); + private List<File> resImport = new ArrayList<File>(); @Option(name = "--import-meta", usage = "import the given directory into the output as meta-files (repeatable)", metaVar = "<DIRECTORY>") - private final List<File> metaImport = new ArrayList<File>(); + private List<File> metaImport = new ArrayList<File>(); @Option(name = "--config-proguard", usage = "use a proguard flags file (default: none) (repeatable)", @@ -749,6 +749,7 @@ public class Options { public void checkValidity(@Nonnull RunnableHooks hooks) throws IllegalOptionsException, ConfigurationException { + ecjExtraArguments.clear(); config = getConfigBuilder(hooks).build(); // FINDBUGS @@ -887,6 +888,14 @@ public class Options { resImport.add(resource); } + public void setResourceDirs(@Nonnull List<File> resourceDirs) { + resImport = resourceDirs; + } + + public void setMetaDirs(@Nonnull List<File> metaDirs) { + metaImport = metaDirs; + } + public void setReporterStream(@Nonnull OutputStream reporterStream) { this.reporterStream = reporterStream; } diff --git a/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java b/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java index e96b3f6..cd4cc72 100644 --- a/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java +++ b/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java @@ -16,6 +16,8 @@ package com.android.jack.api.v01.impl; +import com.google.common.base.Joiner; + import com.android.jack.IllegalOptionsException; import com.android.jack.Jack; import com.android.jack.JackAbortException; @@ -25,6 +27,7 @@ import com.android.jack.api.v01.AbortException; import com.android.jack.api.v01.Api01CompilationTask; import com.android.jack.api.v01.Api01Config; import com.android.jack.api.v01.ConfigurationException; +import com.android.jack.api.v01.DebugInfoLevel; import com.android.jack.api.v01.JavaSourceVersion; import com.android.jack.api.v01.MultiDexKind; import com.android.jack.api.v01.ReporterKind; @@ -32,6 +35,10 @@ import com.android.jack.api.v01.ResourceCollisionPolicy; import com.android.jack.api.v01.TypeCollisionPolicy; import com.android.jack.api.v01.UnrecoverableException; import com.android.jack.api.v01.VerbosityLevel; +import com.android.jack.config.id.JavaVersionPropertyId.JavaVersion; +import com.android.jack.reporting.Reporter; +import com.android.jack.resource.ResourceImporter; +import com.android.jack.shrob.obfuscation.MappingPrinter; import com.android.sched.scheduler.ProcessException; import com.android.sched.util.RunnableHooks; @@ -118,209 +125,250 @@ public class Api01ConfigImpl implements Api01Config { } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setClasspath(java.util.List) - */ @Override - @Nonnull - public void setClasspath(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setClasspath(@Nonnull List<File> classpath) { + options.setClasspath(Joiner.on(File.pathSeparator).join(classpath)); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setEmitDebug(boolean) - */ @Override - @Nonnull - public void setEmitDebug(boolean arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setDebugInfoLevel(@Nonnull DebugInfoLevel debugLevel) throws ConfigurationException { + switch (debugLevel) { + case FULL: { + options.setEmitLocalDebugInfo(true); + break; + } + case LINES: { + options.setEmitLocalDebugInfo(false); + break; + } + case NONE: { + options.setEmitLocalDebugInfo(false); + options.addProperty(Options.EMIT_LINE_NUMBER_DEBUG_INFO.getName(), "false"); + options.addProperty(Options.EMIT_SOURCE_FILE_DEBUG_INFO.getName(), "false"); + break; + } + default: { + throw new ConfigurationException("Debug info level '" + debugLevel + "' is unsupported"); + } + } } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setImportedJackLibraryFiles(java.util.List) - */ @Override - @Nonnull - public void setImportedJackLibraryFiles(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setImportedJackLibraryFiles(@Nonnull List<File> importedJackLibraryFiles) { + options.setImportedLibraries(importedJackLibraryFiles); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setIncrementalDir(java.io.File) - */ @Override - @Nonnull - public void setIncrementalDir(@Nonnull File arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setIncrementalDir(@Nonnull File incrementalDir) { + options.setIncrementalFolder(incrementalDir); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setJarJarConfigFile(java.io.File) - */ @Override - @Nonnull - public void setJarJarConfigFile(@Nonnull File arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setJarJarConfigFile(@Nonnull File jarJarConfigFile) { + options.setJarjarRulesFile(jarJarConfigFile); } @Override - @Nonnull - public void setJavaSourceVersion(@Nonnull JavaSourceVersion arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub + public void setJavaSourceVersion(@Nonnull JavaSourceVersion javaSourceVersion) + throws ConfigurationException { + JavaVersion javaSourceVersionWrapped = null; + switch (javaSourceVersion) { + case JAVA_3: { + javaSourceVersionWrapped = JavaVersion.JAVA_3; + break; + } + case JAVA_4: { + javaSourceVersionWrapped = JavaVersion.JAVA_4; + break; + } + case JAVA_5: { + javaSourceVersionWrapped = JavaVersion.JAVA_5; + break; + } + case JAVA_6: { + javaSourceVersionWrapped = JavaVersion.JAVA_6; + break; + } + case JAVA_7: { + javaSourceVersionWrapped = JavaVersion.JAVA_7; + break; + } + default: { + throw new ConfigurationException( + "Java source version '" + javaSourceVersion + "' is unsupported"); + } + } + options.addProperty(Options.JAVA_SOURCE_VERSION.getName(), javaSourceVersionWrapped.toString()); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setMetaDirs(java.util.List) - */ @Override - @Nonnull - public void setMetaDirs(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setMetaDirs(@Nonnull List<File> metaDirs) { + options.setMetaDirs(metaDirs); } @Override - @Nonnull - public void setMultiDexKind(@Nonnull MultiDexKind arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setMultiDexKind(@Nonnull MultiDexKind multiDexKind) throws ConfigurationException { + switch (multiDexKind) { + case LEGACY: { + options.setMultiDexKind(com.android.jack.Options.MultiDexKind.LEGACY); + break; + } + case NATIVE: { + options.setMultiDexKind(com.android.jack.Options.MultiDexKind.NATIVE); + break; + } + case NONE: { + options.setMultiDexKind(com.android.jack.Options.MultiDexKind.NONE); + break; + } + default: { + throw new ConfigurationException("Multi dex kind '" + multiDexKind + "' is unsupported"); + } + } } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setObfuscationMappingOutputFile(java.io.File) - */ @Override - @Nonnull - public void setObfuscationMappingOutputFile(@Nonnull File arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setObfuscationMappingOutputFile(@Nonnull File obfuscationMappingOutputFile) { + options.addProperty(MappingPrinter.MAPPING_OUTPUT_ENABLED.getName(), "true"); + options.addProperty(MappingPrinter.MAPPING_OUTPUT_FILE.getName(), + obfuscationMappingOutputFile.getPath()); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setOutputDexDir(java.io.File) - */ @Override - @Nonnull - public void setOutputDexDir(@Nonnull File arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setOutputDexDir(@Nonnull File outputDexDir) { + options.setOutputDir(outputDexDir); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setOutputJackFile(java.io.File) - */ @Override - @Nonnull - public void setOutputJackFile(@Nonnull File arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setOutputJackFile(@Nonnull File outputJackFile) { + options.setJayceOutputZip(outputJackFile); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setProcessorNames(java.util.List) - */ @Override - @Nonnull - public void setProcessorNames(@Nonnull List<String> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setProcessorNames(@Nonnull List<String> processorNames) { + throw new AssertionError(); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setProcessorOptions(java.util.Map) - */ @Override - @Nonnull - public void setProcessorOptions(@Nonnull Map<String, String> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setProcessorOptions(@Nonnull Map<String, String> processorOptions) { + throw new AssertionError(); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setProcessorPath(java.util.List) - */ @Override - @Nonnull - public void setProcessorPath(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setProcessorPath(@Nonnull List<File> processorPath) { + throw new AssertionError(); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setProguardConfigFiles(java.util.List) - */ @Override - @Nonnull - public void setProguardConfigFiles(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setProguardConfigFiles(@Nonnull List<File> proguardConfigFiles) { + options.setProguardFlagsFile(proguardConfigFiles); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setProperty(java.lang.String, java.lang.String) - */ @Override - @Nonnull - public void setProperty(@Nonnull String arg0, @Nonnull String arg1) - throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setProperty(@Nonnull String key, @Nonnull String value) { + options.addProperty(key, value); } @Override - @Nonnull - public void setReporter(@Nonnull ReporterKind arg0, @Nonnull OutputStream arg1) + public void setReporter(@Nonnull ReporterKind reporterKind, @Nonnull OutputStream reporterStream) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + String reporterKindAsString = null; + switch (reporterKind) { + case DEFAULT: { + reporterKindAsString = "default"; + break; + } + case SDK: { + reporterKindAsString = "sdk"; + break; + } + default: { + throw new ConfigurationException("Reporter kind '" + reporterKind + "' is unsupported"); + } + } + options.addProperty(Reporter.REPORTER.getName(), reporterKindAsString); + options.setReporterStream(reporterStream); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setResourceDirs(java.util.List) - */ @Override - @Nonnull - public void setResourceDirs(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setResourceDirs(@Nonnull List<File> resourceDirs) { + options.setResourceDirs(resourceDirs); } @Override - @Nonnull - public void setResourceImportCollisionPolicy(@Nonnull ResourceCollisionPolicy arg0) + public void setResourceImportCollisionPolicy( + @Nonnull ResourceCollisionPolicy resourceImportCollisionPolicy) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + String collissionPolicy = null; + switch (resourceImportCollisionPolicy) { + case FAIL: { + collissionPolicy = "fail"; + break; + } + case KEEP_FIRST: { + collissionPolicy = "keep-first"; + break; + } + default: { + throw new ConfigurationException( + "Resource collision policy '" + resourceImportCollisionPolicy + "' is unsupported"); + } + } + options.addProperty(ResourceImporter.RESOURCE_COLLISION_POLICY.getName(), collissionPolicy); } - /* (non-Javadoc) - * @see com.android.jack.api.v01.Api01Config#setSourceEntries(java.util.List) - */ @Override - @Nonnull - public void setSourceEntries(@Nonnull List<File> arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setSourceEntries(@Nonnull List<File> sourceEntries) { + options.setInputSources(sourceEntries); } @Override - @Nonnull - public void setTypeImportCollisionPolicy(@Nonnull TypeCollisionPolicy arg0) + public void setTypeImportCollisionPolicy(@Nonnull TypeCollisionPolicy typeImportCollisionPolicy) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + String collissionPolicy = null; + switch (typeImportCollisionPolicy) { + case FAIL: { + collissionPolicy = "fail"; + break; + } + case KEEP_FIRST: { + collissionPolicy = "keep-first"; + break; + } + default: { + throw new ConfigurationException( + "Type collision policy '" + typeImportCollisionPolicy + "' is unsupported"); + } + } + options.addProperty(ResourceImporter.RESOURCE_COLLISION_POLICY.getName(), collissionPolicy); } @Override - @Nonnull - public void setVerbosityLevel(@Nonnull VerbosityLevel arg0) throws ConfigurationException { - // TODO(benoitlamarche): Auto-generated method stub - + public void setVerbosityLevel(@Nonnull VerbosityLevel verbosityLevel) + throws ConfigurationException { + com.android.jack.Options.VerbosityLevel jackVerbosityLevel; + switch (verbosityLevel) { + case DEBUG: { + jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.DEBUG; + break; + } + case ERROR: { + jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.ERROR; + break; + } + case INFO: { + jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.INFO; + break; + } + case WARNING: { + jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.WARNING; + break; + } + default: { + throw new ConfigurationException("Verbosity level '" + verbosityLevel + "' is unsupported"); + } + } + options.setVerbosityLevel(jackVerbosityLevel); } } |