From 5afc4472807f71f30f5d5be2d4c4632ed3204ec4 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 12 May 2019 15:34:42 +0200 Subject: Separate JarProcessor and EntryNameProposer --- src/main/java/cuchaz/enigma/Deobfuscator.java | 17 +++++++++-------- src/main/java/cuchaz/enigma/api/EnigmaPlugin.java | 14 -------------- src/main/java/cuchaz/enigma/api/EntryNameProposer.java | 10 ++++++++++ src/main/java/cuchaz/enigma/api/JarProcessor.java | 8 ++++++++ .../java/cuchaz/enigma/gui/DecompiledClassSource.java | 2 +- 5 files changed, 28 insertions(+), 23 deletions(-) delete mode 100644 src/main/java/cuchaz/enigma/api/EnigmaPlugin.java create mode 100644 src/main/java/cuchaz/enigma/api/EntryNameProposer.java create mode 100644 src/main/java/cuchaz/enigma/api/JarProcessor.java (limited to 'src/main') 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; import cuchaz.enigma.analysis.IndexTreeBuilder; import cuchaz.enigma.analysis.ParsedJar; import cuchaz.enigma.analysis.index.JarIndex; -import cuchaz.enigma.api.EnigmaPlugin; +import cuchaz.enigma.api.EntryNameProposer; +import cuchaz.enigma.api.JarProcessor; import cuchaz.enigma.bytecode.translators.SourceFixVisitor; import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; import cuchaz.enigma.translation.Translatable; @@ -59,7 +60,9 @@ import java.util.stream.Stream; public class Deobfuscator { - private final ServiceLoader plugins = ServiceLoader.load(EnigmaPlugin.class); + private final ServiceLoader jarProcessors = ServiceLoader.load(JarProcessor.class); + private final ServiceLoader nameProposers = ServiceLoader.load(EntryNameProposer.class); + private final ParsedJar parsedJar; private final JarIndex jarIndex; private final IndexTreeBuilder indexTreeBuilder; @@ -75,10 +78,8 @@ public class Deobfuscator { this.jarIndex = JarIndex.empty(); this.jarIndex.indexJar(this.parsedJar, listener); - getPlugins().forEach(plugin -> { - listener.accept("Initializing plugin '" + plugin.getClass().getSimpleName() + "'"); - plugin.indexJar(parsedJar, jarIndex); - }); + listener.accept("Processing jar"); + this.jarProcessors.forEach(processor -> processor.accept(parsedJar, jarIndex)); this.indexTreeBuilder = new IndexTreeBuilder(jarIndex); @@ -107,8 +108,8 @@ public class Deobfuscator { }); } - public Stream getPlugins() { - return Streams.stream(plugins); + public Stream getNameProposers() { + return Streams.stream(nameProposers); } public ParsedJar getJar() { diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java deleted file mode 100644 index a5ec9c45..00000000 --- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java +++ /dev/null @@ -1,14 +0,0 @@ -package cuchaz.enigma.api; - -import cuchaz.enigma.analysis.ParsedJar; -import cuchaz.enigma.analysis.index.JarIndex; -import cuchaz.enigma.translation.mapping.EntryRemapper; -import cuchaz.enigma.translation.representation.entry.Entry; - -import java.util.Optional; - -public interface EnigmaPlugin { - void indexJar(ParsedJar jar, JarIndex index); - - Optional proposeName(Entry obfEntry, EntryRemapper remapper); -} diff --git a/src/main/java/cuchaz/enigma/api/EntryNameProposer.java b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java new file mode 100644 index 00000000..3fc26d27 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java @@ -0,0 +1,10 @@ +package cuchaz.enigma.api; + +import cuchaz.enigma.translation.mapping.EntryRemapper; +import cuchaz.enigma.translation.representation.entry.Entry; + +import java.util.Optional; + +public interface EntryNameProposer { + Optional proposeName(Entry obfEntry, EntryRemapper remapper); +} 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 @@ +package cuchaz.enigma.api; + +import cuchaz.enigma.analysis.ParsedJar; +import cuchaz.enigma.analysis.index.JarIndex; + +public interface JarProcessor { + void accept(ParsedJar jar, JarIndex index); +} 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 { } private Optional proposeName(Deobfuscator deobfuscator, Entry entry) { - Stream proposals = deobfuscator.getPlugins() + Stream proposals = deobfuscator.getNameProposers() .map(plugin -> plugin.proposeName(entry, deobfuscator.getMapper())) .filter(Optional::isPresent) .map(Optional::get); -- cgit v1.2.3