From 5bf40f1a249953e7152fa5900f3a6c5e048db30a Mon Sep 17 00:00:00 2001 From: mikaelpeltier Date: Wed, 11 Mar 2015 10:42:13 +0100 Subject: Add a sample based on service loader that really do a compilation Change-Id: Ie54f774222827806859ccef37ebb2a50a7708d38 --- .../jack/api/example/SampleWithServiceLoader.java | 59 +++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'jack-api') diff --git a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java index 995bd9d..3754946 100644 --- a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java +++ b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java @@ -16,8 +16,16 @@ package com.android.jack.api.example; +import com.android.jack.api.ConfigNotSupportedException; import com.android.jack.api.JackConfigProvider; +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.UnrecoverableException; +import java.io.File; +import java.util.Arrays; import java.util.NoSuchElementException; import java.util.ServiceLoader; @@ -28,12 +36,59 @@ import java.util.ServiceLoader; public class SampleWithServiceLoader { public static void main(String[] args) throws SecurityException, IllegalArgumentException { + if (args.length != 3) { + System.out.println( + "Usage: "); + return; + } + ServiceLoader serviceLoader = ServiceLoader.load(JackConfigProvider.class); + JackConfigProvider confProvider; try { - JackConfigProvider confProvider = serviceLoader.iterator().next(); - System.out.println("Jack version: " + confProvider.getCompilerVersion()); + confProvider = serviceLoader.iterator().next(); } catch (NoSuchElementException e) { System.out.println("Check that jack.jar is on classpath"); + return; + } + + Api01CompilationTask compilationTask; + Api01Config config; + + // Get configuration object + try { + config = confProvider.getConfig(Api01Config.class); + } catch (ConfigNotSupportedException e1) { + System.err.println("Brest config not supported)"); + return; + } + + // Configure the compiler + try { + config.setClasspath(Arrays.asList(new File(args[0]))); + + config.setSourceEntries(Arrays.asList(new File(args[1]))); + + config.setOutputDexDir(new File(args[2])); + + // Check and build compiler + compilationTask = config.getTask(); + } catch (ConfigurationException e) { + System.err.println(e.getMessage()); + return; + } + + // Run the compilation + try { + compilationTask.run(); + } catch (AbortException e) { + System.out.println("User error, see reporter"); + return; + } catch (UnrecoverableException e) { + System.out.println("Something out of Jack control has happen: " + e.getMessage()); + return; + } catch (ConfigurationException e) { + System.err.println(e.getMessage()); + return; } } } -- cgit v1.1