summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Thiakil2018-07-23 13:22:33 +0800
committerGravatar Thiakil2018-07-23 13:22:33 +0800
commit7f914aa5d50f151ceff74f0764c9eafb2bebfd9a (patch)
treedd7315885c4c70f1ad2165def16f1d7ff2fadc63
parentadd classloader for adding deps (diff)
downloadenigma-7f914aa5d50f151ceff74f0764c9eafb2bebfd9a.tar.gz
enigma-7f914aa5d50f151ceff74f0764c9eafb2bebfd9a.tar.xz
enigma-7f914aa5d50f151ceff74f0764c9eafb2bebfd9a.zip
add support for the extra loader
-rw-r--r--src/main/java/cuchaz/enigma/CachingClasspathTypeLoader.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/CachingClasspathTypeLoader.java b/src/main/java/cuchaz/enigma/CachingClasspathTypeLoader.java
index 58682e23..fe13321c 100644
--- a/src/main/java/cuchaz/enigma/CachingClasspathTypeLoader.java
+++ b/src/main/java/cuchaz/enigma/CachingClasspathTypeLoader.java
@@ -8,6 +8,12 @@ import com.strobel.assembler.metadata.ITypeLoader;
8 * Caching version of {@link ClasspathTypeLoader} 8 * Caching version of {@link ClasspathTypeLoader}
9 */ 9 */
10public class CachingClasspathTypeLoader extends CachingTypeLoader { 10public class CachingClasspathTypeLoader extends CachingTypeLoader {
11 private static ITypeLoader extraClassPathLoader = null;
12
13 public static void setExtraClassPathLoader(ITypeLoader loader){
14 extraClassPathLoader = loader;
15 }
16
11 private final ITypeLoader classpathLoader = new ClasspathTypeLoader(); 17 private final ITypeLoader classpathLoader = new ClasspathTypeLoader();
12 18
13 protected byte[] doLoad(String className) { 19 protected byte[] doLoad(String className) {
@@ -15,6 +21,12 @@ public class CachingClasspathTypeLoader extends CachingTypeLoader {
15 if (classpathLoader.tryLoadType(className, parentBuf)) { 21 if (classpathLoader.tryLoadType(className, parentBuf)) {
16 return parentBuf.array(); 22 return parentBuf.array();
17 } 23 }
24 if (extraClassPathLoader != null){
25 parentBuf.reset();
26 if (extraClassPathLoader.tryLoadType(className, parentBuf)){
27 return parentBuf.array();
28 }
29 }
18 return EMPTY_ARRAY;//need to return *something* as null means no store 30 return EMPTY_ARRAY;//need to return *something* as null means no store
19 } 31 }
20} 32}