summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/convert/ClassIdentifier.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-28 18:00:25 -0500
committerGravatar jeff2015-02-28 18:00:25 -0500
commit741e3472f76d959645ee0e025547d69a03e5b6f2 (patch)
treeda17641de8b891721e435636edbf7a5077d9e6ec /src/cuchaz/enigma/convert/ClassIdentifier.java
parentignore more harmless exceptions from the buggy highlight painter system (diff)
downloadenigma-fork-741e3472f76d959645ee0e025547d69a03e5b6f2.tar.gz
enigma-fork-741e3472f76d959645ee0e025547d69a03e5b6f2.tar.xz
enigma-fork-741e3472f76d959645ee0e025547d69a03e5b6f2.zip
fix up conversion tool to handle Minecraft 1.8.3
Diffstat (limited to 'src/cuchaz/enigma/convert/ClassIdentifier.java')
-rw-r--r--src/cuchaz/enigma/convert/ClassIdentifier.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/convert/ClassIdentifier.java b/src/cuchaz/enigma/convert/ClassIdentifier.java
new file mode 100644
index 0000000..bdbf11b
--- /dev/null
+++ b/src/cuchaz/enigma/convert/ClassIdentifier.java
@@ -0,0 +1,41 @@
1package cuchaz.enigma.convert;
2
3import java.util.Map;
4import java.util.jar.JarFile;
5
6import javassist.CtClass;
7
8import com.beust.jcommander.internal.Maps;
9
10import cuchaz.enigma.TranslatingTypeLoader;
11import cuchaz.enigma.analysis.JarIndex;
12import cuchaz.enigma.convert.ClassNamer.SidedClassNamer;
13import cuchaz.enigma.mapping.ClassEntry;
14
15
16public class ClassIdentifier {
17
18 private JarIndex m_index;
19 private SidedClassNamer m_namer;
20 private boolean m_useReferences;
21 private TranslatingTypeLoader m_loader;
22 private Map<ClassEntry,ClassIdentity> m_cache;
23
24 public ClassIdentifier(JarFile jar, JarIndex index, SidedClassNamer namer, boolean useReferences) {
25 m_index = index;
26 m_namer = namer;
27 m_useReferences = useReferences;
28 m_loader = new TranslatingTypeLoader(jar, index);
29 m_cache = Maps.newHashMap();
30 }
31
32 public ClassIdentity identify(ClassEntry classEntry) {
33 ClassIdentity identity = m_cache.get(classEntry);
34 if (identity == null) {
35 CtClass c = m_loader.loadClass(classEntry.getName());
36 identity = new ClassIdentity(c, m_namer, m_index, m_useReferences);
37 m_cache.put(classEntry, identity);
38 }
39 return identity;
40 }
41}