diff options
author | Jean-Marie Henaff <jmhenaff@google.com> | 2015-03-10 10:51:39 +0100 |
---|---|---|
committer | Jean-Marie Henaff <jmhenaff@google.com> | 2015-03-10 17:31:38 +0100 |
commit | baa62033b31c8da1ef958e70bbc7bf003ba83193 (patch) | |
tree | bc46d0681cb9db0036ca9f770936898f76569860 /jack-tests/src | |
parent | 1fbd91032860c939488719e318edd183a59e9378 (diff) | |
download | toolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.zip toolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.tar.gz toolchain_jack-baa62033b31c8da1ef958e70bbc7bf003ba83193.tar.bz2 |
Instantiate JackConfing in same ClassLoader for API test Toolchain
Change-Id: Ib9a4b90a2706d408c961a60d3149d3ab0ad69b83
Diffstat (limited to 'jack-tests/src')
-rw-r--r-- | jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java index f008561..af2dd65 100644 --- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java +++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java @@ -54,6 +54,9 @@ public abstract class JackApiToolchainBase extends JackBasedToolchain { @Nonnull protected VerbosityLevel verbosityLevel = VerbosityLevel.WARNING; + @CheckForNull + private static JackConfigProvider configProvider; + public String getCompilerCodeName() { return compilerCodeName; } @@ -73,22 +76,23 @@ public abstract class JackApiToolchainBase extends JackBasedToolchain { protected <T extends JackConfig> JackApiToolchainBase(@Nonnull File jackPrebuilt, @Nonnull Class<T> jackConfig) { try { - ClassLoader loader; - JackConfigProvider confProvider; - loader = URLClassLoader.newInstance(new URL[] {jackPrebuilt.toURI().toURL()}, - JackApiToolchainBase.class.getClassLoader()); - Class<? extends JackConfigProvider> confProviderClass = Class.forName( - JackConfigProvider.CLASS_NAME, true, loader).asSubclass(JackConfigProvider.class); + if (configProvider == null) { + ClassLoader classLoader = URLClassLoader.newInstance( + new URL[] {jackPrebuilt.toURI().toURL()}, JackApiToolchainBase.class.getClassLoader()); + Class<? extends JackConfigProvider> confProviderClass = Class.forName( + JackConfigProvider.CLASS_NAME, true, classLoader).asSubclass(JackConfigProvider.class); + configProvider = confProviderClass.getConstructor().newInstance(); + } - JackConfigProvider configProvider = confProviderClass.getConstructor().newInstance(); + assert configProvider != null; compilerCodeName = configProvider.getCompilerCodeName(); compilerVersion = configProvider.getCompilerVersion(); compilerBuildId = configProvider.getCompilerBuildId(); compilerCodeBase = configProvider.getCompilerCodeBase(); - config = confProviderClass.getConstructor().newInstance().getConfig(jackConfig); + config = configProvider.getConfig(jackConfig); } catch (ConfigNotSupportedException e) { throw new TestConfigurationException("Jack API v01 not supported", e); |