summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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}