diff options
| author | 2019-05-12 15:34:42 +0200 | |
|---|---|---|
| committer | 2019-05-12 15:34:42 +0200 | |
| commit | 5afc4472807f71f30f5d5be2d4c4632ed3204ec4 (patch) | |
| tree | 967f6ef774e960ecc0ab6542e7024e24ff7c2f2a /src/main/java | |
| parent | Simplify Plugin API and support all entry types (diff) | |
| download | enigma-5afc4472807f71f30f5d5be2d4c4632ed3204ec4.tar.gz enigma-5afc4472807f71f30f5d5be2d4c4632ed3204ec4.tar.xz enigma-5afc4472807f71f30f5d5be2d4c4632ed3204ec4.zip | |
Separate JarProcessor and EntryNameProposer
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/Deobfuscator.java | 17 | ||||
| -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.java | 8 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java | 2 |
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 9060c1f5..32f7aa7c 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; | |||
| 24 | import cuchaz.enigma.analysis.IndexTreeBuilder; | 24 | import cuchaz.enigma.analysis.IndexTreeBuilder; |
| 25 | import cuchaz.enigma.analysis.ParsedJar; | 25 | import cuchaz.enigma.analysis.ParsedJar; |
| 26 | import cuchaz.enigma.analysis.index.JarIndex; | 26 | import cuchaz.enigma.analysis.index.JarIndex; |
| 27 | import cuchaz.enigma.api.EnigmaPlugin; | 27 | import cuchaz.enigma.api.EntryNameProposer; |
| 28 | import cuchaz.enigma.api.JarProcessor; | ||
| 28 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 29 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; |
| 29 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; | 30 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; |
| 30 | import cuchaz.enigma.translation.Translatable; | 31 | import cuchaz.enigma.translation.Translatable; |
| @@ -59,7 +60,9 @@ import java.util.stream.Stream; | |||
| 59 | 60 | ||
| 60 | public class Deobfuscator { | 61 | public 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 a5ec9c45..3fc26d27 100644 --- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java +++ b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java | |||
| @@ -1,14 +1,10 @@ | |||
| 1 | package cuchaz.enigma.api; | 1 | package cuchaz.enigma.api; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.analysis.ParsedJar; | ||
| 4 | import cuchaz.enigma.analysis.index.JarIndex; | ||
| 5 | import cuchaz.enigma.translation.mapping.EntryRemapper; | 3 | import cuchaz.enigma.translation.mapping.EntryRemapper; |
| 6 | import cuchaz.enigma.translation.representation.entry.Entry; | 4 | import cuchaz.enigma.translation.representation.entry.Entry; |
| 7 | 5 | ||
| 8 | import java.util.Optional; | 6 | import java.util.Optional; |
| 9 | 7 | ||
| 10 | public interface EnigmaPlugin { | 8 | public 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 00000000..965b0c45 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/JarProcessor.java | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | package cuchaz.enigma.api; | ||
| 2 | |||
| 3 | import cuchaz.enigma.analysis.ParsedJar; | ||
| 4 | import cuchaz.enigma.analysis.index.JarIndex; | ||
| 5 | |||
| 6 | public 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 1e96a06b..d7c981ac 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); |