summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/TranslatingTypeLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/TranslatingTypeLoader.java')
-rw-r--r--src/cuchaz/enigma/TranslatingTypeLoader.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/TranslatingTypeLoader.java b/src/cuchaz/enigma/TranslatingTypeLoader.java
index 1e0e95a2..e70093eb 100644
--- a/src/cuchaz/enigma/TranslatingTypeLoader.java
+++ b/src/cuchaz/enigma/TranslatingTypeLoader.java
@@ -47,6 +47,11 @@ public class TranslatingTypeLoader implements ITypeLoader
47 private Map<String,byte[]> m_cache; 47 private Map<String,byte[]> m_cache;
48 private ClasspathTypeLoader m_defaultTypeLoader; 48 private ClasspathTypeLoader m_defaultTypeLoader;
49 49
50 public TranslatingTypeLoader( JarFile jar, JarIndex jarIndex )
51 {
52 this( jar, jarIndex, new Translator(), new Translator() );
53 }
54
50 public TranslatingTypeLoader( JarFile jar, JarIndex jarIndex, Translator obfuscatingTranslator, Translator deobfuscatingTranslator ) 55 public TranslatingTypeLoader( JarFile jar, JarIndex jarIndex, Translator obfuscatingTranslator, Translator deobfuscatingTranslator )
51 { 56 {
52 m_jar = jar; 57 m_jar = jar;
@@ -90,6 +95,28 @@ public class TranslatingTypeLoader implements ITypeLoader
90 return true; 95 return true;
91 } 96 }
92 97
98 public CtClass loadClass( String deobfClassName )
99 {
100 byte[] data = loadType( deobfClassName );
101 if( data == null )
102 {
103 return null;
104 }
105
106 // return a javassist handle for the class
107 String javaClassFileName = Descriptor.toJavaName( deobfClassName );
108 ClassPool classPool = new ClassPool();
109 classPool.insertClassPath( new ByteArrayClassPath( javaClassFileName, data ) );
110 try
111 {
112 return classPool.get( javaClassFileName );
113 }
114 catch( NotFoundException ex )
115 {
116 throw new Error( ex );
117 }
118 }
119
93 private byte[] loadType( String deobfClassName ) 120 private byte[] loadType( String deobfClassName )
94 { 121 {
95 // what class file should we actually load? 122 // what class file should we actually load?