summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/cuchaz/enigma/Deobfuscator.java17
-rw-r--r--src/main/java/cuchaz/enigma/api/EntryNameProposer.java (renamed from src/main/java/cuchaz/enigma/api/EnigmaPlugin.java)6
-rw-r--r--src/main/java/cuchaz/enigma/api/JarProcessor.java8
-rw-r--r--src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java2
4 files changed, 19 insertions, 14 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java
index 9060c1f..32f7aa7 100644
--- a/src/main/java/cuchaz/enigma/Deobfuscator.java
+++ b/src/main/java/cuchaz/enigma/Deobfuscator.java
@@ -24,7 +24,8 @@ import cuchaz.enigma.analysis.EntryReference;
24import cuchaz.enigma.analysis.IndexTreeBuilder; 24import cuchaz.enigma.analysis.IndexTreeBuilder;
25import cuchaz.enigma.analysis.ParsedJar; 25import cuchaz.enigma.analysis.ParsedJar;
26import cuchaz.enigma.analysis.index.JarIndex; 26import cuchaz.enigma.analysis.index.JarIndex;
27import cuchaz.enigma.api.EnigmaPlugin; 27import cuchaz.enigma.api.EntryNameProposer;
28import cuchaz.enigma.api.JarProcessor;
28import cuchaz.enigma.bytecode.translators.SourceFixVisitor; 29import cuchaz.enigma.bytecode.translators.SourceFixVisitor;
29import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; 30import cuchaz.enigma.bytecode.translators.TranslationClassVisitor;
30import cuchaz.enigma.translation.Translatable; 31import cuchaz.enigma.translation.Translatable;
@@ -59,7 +60,9 @@ import java.util.stream.Stream;
59 60
60public class Deobfuscator { 61public class Deobfuscator {
61 62
62 private final ServiceLoader<EnigmaPlugin> plugins = ServiceLoader.load(EnigmaPlugin.class); 63 private final ServiceLoader<JarProcessor> jarProcessors = ServiceLoader.load(JarProcessor.class);
64 private final ServiceLoader<EntryNameProposer> nameProposers = ServiceLoader.load(EntryNameProposer.class);
65
63 private final ParsedJar parsedJar; 66 private final ParsedJar parsedJar;
64 private final JarIndex jarIndex; 67 private final JarIndex jarIndex;
65 private final IndexTreeBuilder indexTreeBuilder; 68 private final IndexTreeBuilder indexTreeBuilder;
@@ -75,10 +78,8 @@ public class Deobfuscator {
75 this.jarIndex = JarIndex.empty(); 78 this.jarIndex = JarIndex.empty();
76 this.jarIndex.indexJar(this.parsedJar, listener); 79 this.jarIndex.indexJar(this.parsedJar, listener);
77 80
78 getPlugins().forEach(plugin -> { 81 listener.accept("Processing jar");
79 listener.accept("Initializing plugin '" + plugin.getClass().getSimpleName() + "'"); 82 this.jarProcessors.forEach(processor -> processor.accept(parsedJar, jarIndex));
80 plugin.indexJar(parsedJar, jarIndex);
81 });
82 83
83 this.indexTreeBuilder = new IndexTreeBuilder(jarIndex); 84 this.indexTreeBuilder = new IndexTreeBuilder(jarIndex);
84 85
@@ -107,8 +108,8 @@ public class Deobfuscator {
107 }); 108 });
108 } 109 }
109 110
110 public Stream<EnigmaPlugin> getPlugins() { 111 public Stream<EntryNameProposer> getNameProposers() {
111 return Streams.stream(plugins); 112 return Streams.stream(nameProposers);
112 } 113 }
113 114
114 public ParsedJar getJar() { 115 public ParsedJar getJar() {
diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java
index a5ec9c4..3fc26d2 100644
--- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java
+++ b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java
@@ -1,14 +1,10 @@
1package cuchaz.enigma.api; 1package cuchaz.enigma.api;
2 2
3import cuchaz.enigma.analysis.ParsedJar;
4import cuchaz.enigma.analysis.index.JarIndex;
5import cuchaz.enigma.translation.mapping.EntryRemapper; 3import cuchaz.enigma.translation.mapping.EntryRemapper;
6import cuchaz.enigma.translation.representation.entry.Entry; 4import cuchaz.enigma.translation.representation.entry.Entry;
7 5
8import java.util.Optional; 6import java.util.Optional;
9 7
10public interface EnigmaPlugin { 8public interface EntryNameProposer {
11 void indexJar(ParsedJar jar, JarIndex index);
12
13 Optional<String> proposeName(Entry<?> obfEntry, EntryRemapper remapper); 9 Optional<String> proposeName(Entry<?> obfEntry, EntryRemapper remapper);
14} 10}
diff --git a/src/main/java/cuchaz/enigma/api/JarProcessor.java b/src/main/java/cuchaz/enigma/api/JarProcessor.java
new file mode 100644
index 0000000..965b0c4
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/api/JarProcessor.java
@@ -0,0 +1,8 @@
1package cuchaz.enigma.api;
2
3import cuchaz.enigma.analysis.ParsedJar;
4import cuchaz.enigma.analysis.index.JarIndex;
5
6public interface JarProcessor {
7 void accept(ParsedJar jar, JarIndex index);
8}
diff --git a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java b/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java
index 1e96a06..d7c981a 100644
--- a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java
+++ b/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java
@@ -73,7 +73,7 @@ public class DecompiledClassSource {
73 } 73 }
74 74
75 private Optional<String> proposeName(Deobfuscator deobfuscator, Entry<?> entry) { 75 private Optional<String> proposeName(Deobfuscator deobfuscator, Entry<?> entry) {
76 Stream<String> proposals = deobfuscator.getPlugins() 76 Stream<String> proposals = deobfuscator.getNameProposers()
77 .map(plugin -> plugin.proposeName(entry, deobfuscator.getMapper())) 77 .map(plugin -> plugin.proposeName(entry, deobfuscator.getMapper()))
78 .filter(Optional::isPresent) 78 .filter(Optional::isPresent)
79 .map(Optional::get); 79 .map(Optional::get);