diff options
author | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-10 11:00:47 +0100 |
---|---|---|
committer | mikaelpeltier <mikaelpeltier@google.com> | 2015-03-10 14:36:05 +0100 |
commit | 0c97c866ce45efbaa523fa06e1540f7545d0d246 (patch) | |
tree | e6ab79f00c5076a5483c52448a7716e7aae3f5ec /jack-api | |
parent | b001ab34cbf7a73ccfe749be405db9fd67efaa95 (diff) | |
download | toolchain_jack-0c97c866ce45efbaa523fa06e1540f7545d0d246.zip toolchain_jack-0c97c866ce45efbaa523fa06e1540f7545d0d246.tar.gz toolchain_jack-0c97c866ce45efbaa523fa06e1540f7545d0d246.tar.bz2 |
Add a service provider for JackConfigProvider
Change-Id: Ib599f5b012aec9d15c71fd314fe859628e855c00
Diffstat (limited to 'jack-api')
-rw-r--r-- | jack-api/src/com/android/jack/api/example/SampleWithClassLoader.java (renamed from jack-api/src/com/android/jack/api/example/Main.java) | 5 | ||||
-rw-r--r-- | jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java | 39 |
2 files changed, 42 insertions, 2 deletions
diff --git a/jack-api/src/com/android/jack/api/example/Main.java b/jack-api/src/com/android/jack/api/example/SampleWithClassLoader.java index fe6d7ab..f2b3040 100644 --- a/jack-api/src/com/android/jack/api/example/Main.java +++ b/jack-api/src/com/android/jack/api/example/SampleWithClassLoader.java @@ -34,14 +34,15 @@ import java.net.URLClassLoader; /** * STOPSHIP */ -public class Main { +public class SampleWithClassLoader { + public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException { ClassLoader loader = URLClassLoader.newInstance(new URL[] {new File( "<replace_with_a_path_to_jack.jar>").toURI().toURL()}, - Main.class.getClassLoader()); + SampleWithClassLoader.class.getClassLoader()); Class<? extends JackConfigProvider> confProviderClass = Class.forName(JackConfigProvider.CLASS_NAME, true, loader).asSubclass( diff --git a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java new file mode 100644 index 0000000..995bd9d --- /dev/null +++ b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java @@ -0,0 +1,39 @@ +/* + * 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.example; + +import com.android.jack.api.JackConfigProvider; + +import java.util.NoSuchElementException; +import java.util.ServiceLoader; + +/** + * Sample of Jack api usage based on a service provider. + * This sample requires jack.jar on classpath. + */ +public class SampleWithServiceLoader { + + public static void main(String[] args) throws SecurityException, IllegalArgumentException { + ServiceLoader<JackConfigProvider> serviceLoader = ServiceLoader.load(JackConfigProvider.class); + try { + JackConfigProvider confProvider = serviceLoader.iterator().next(); + System.out.println("Jack version: " + confProvider.getCompilerVersion()); + } catch (NoSuchElementException e) { + System.out.println("Check that jack.jar is on classpath"); + } + } +} |