From 8e8609cd032d299f79307cfdd41998d331a876a7 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 12 May 2019 11:56:22 +0200 Subject: Simplify Plugin API and support all entry types --- src/main/java/cuchaz/enigma/api/EnigmaPlugin.java | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src/main/java/cuchaz/enigma/api') diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java index 3efe0dc..a5ec9c4 100644 --- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java +++ b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java @@ -1,18 +1,14 @@ package cuchaz.enigma.api; -import org.objectweb.asm.tree.ClassNode; +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 javax.annotation.Nullable; -import java.util.Map; -import java.util.function.Function; +import java.util.Optional; -public abstract class EnigmaPlugin { - public void onClassesLoaded(Map classData, Function classNodeGetter) { +public interface EnigmaPlugin { + void indexJar(ParsedJar jar, JarIndex index); - } - - @Nullable - public String proposeFieldName(String owner, String name, String desc) { - return null; - } + Optional proposeName(Entry obfEntry, EntryRemapper remapper); } -- cgit v1.2.3 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/api/EnigmaPlugin.java | 14 -------------- src/main/java/cuchaz/enigma/api/EntryNameProposer.java | 10 ++++++++++ src/main/java/cuchaz/enigma/api/JarProcessor.java | 8 ++++++++ 3 files changed, 18 insertions(+), 14 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/java/cuchaz/enigma/api') 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 a5ec9c4..0000000 --- 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 0000000..3fc26d2 --- /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 0000000..965b0c4 --- /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); +} -- cgit v1.2.3 From e27d5967029f4f3da8889dd673ba516dcd9f3ac8 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 16 Jun 2019 23:49:25 +0200 Subject: Plugin rework along with API rework: Enigma split from EnigmaProject; plugins now provide services configurable via a profile --- src/main/java/cuchaz/enigma/api/EnigmaPlugin.java | 5 ++++ .../cuchaz/enigma/api/EnigmaPluginContext.java | 9 +++++++ .../java/cuchaz/enigma/api/EntryNameProposer.java | 10 -------- src/main/java/cuchaz/enigma/api/JarProcessor.java | 8 ------ .../cuchaz/enigma/api/service/EnigmaService.java | 4 +++ .../enigma/api/service/EnigmaServiceContext.java | 11 ++++++++ .../enigma/api/service/EnigmaServiceFactory.java | 5 ++++ .../enigma/api/service/EnigmaServiceType.java | 29 ++++++++++++++++++++++ .../enigma/api/service/JarIndexerService.java | 10 ++++++++ .../enigma/api/service/NameProposalService.java | 12 +++++++++ .../enigma/api/service/ObfuscationTestService.java | 9 +++++++ 11 files changed, 94 insertions(+), 18 deletions(-) create mode 100644 src/main/java/cuchaz/enigma/api/EnigmaPlugin.java create mode 100644 src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java delete mode 100644 src/main/java/cuchaz/enigma/api/EntryNameProposer.java delete mode 100644 src/main/java/cuchaz/enigma/api/JarProcessor.java create mode 100644 src/main/java/cuchaz/enigma/api/service/EnigmaService.java create mode 100644 src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java create mode 100644 src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java create mode 100644 src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java create mode 100644 src/main/java/cuchaz/enigma/api/service/JarIndexerService.java create mode 100644 src/main/java/cuchaz/enigma/api/service/NameProposalService.java create mode 100644 src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java (limited to 'src/main/java/cuchaz/enigma/api') diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java new file mode 100644 index 0000000..bdd6015 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api; + +public interface EnigmaPlugin { + void init(EnigmaPluginContext ctx); +} diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java b/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java new file mode 100644 index 0000000..a59051a --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/EnigmaPluginContext.java @@ -0,0 +1,9 @@ +package cuchaz.enigma.api; + +import cuchaz.enigma.api.service.EnigmaService; +import cuchaz.enigma.api.service.EnigmaServiceFactory; +import cuchaz.enigma.api.service.EnigmaServiceType; + +public interface EnigmaPluginContext { + void registerService(String id, EnigmaServiceType serviceType, EnigmaServiceFactory factory); +} diff --git a/src/main/java/cuchaz/enigma/api/EntryNameProposer.java b/src/main/java/cuchaz/enigma/api/EntryNameProposer.java deleted file mode 100644 index 3fc26d2..0000000 --- a/src/main/java/cuchaz/enigma/api/EntryNameProposer.java +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 965b0c4..0000000 --- a/src/main/java/cuchaz/enigma/api/JarProcessor.java +++ /dev/null @@ -1,8 +0,0 @@ -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/api/service/EnigmaService.java b/src/main/java/cuchaz/enigma/api/service/EnigmaService.java new file mode 100644 index 0000000..526dda7 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/EnigmaService.java @@ -0,0 +1,4 @@ +package cuchaz.enigma.api.service; + +public interface EnigmaService { +} diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java new file mode 100644 index 0000000..9e433fb --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceContext.java @@ -0,0 +1,11 @@ +package cuchaz.enigma.api.service; + +import java.util.Optional; + +public interface EnigmaServiceContext { + static EnigmaServiceContext empty() { + return key -> Optional.empty(); + } + + Optional getArgument(String key); +} diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java new file mode 100644 index 0000000..7c10ac2 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceFactory.java @@ -0,0 +1,5 @@ +package cuchaz.enigma.api.service; + +public interface EnigmaServiceFactory { + T create(EnigmaServiceContext ctx); +} diff --git a/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java new file mode 100644 index 0000000..358828f --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/EnigmaServiceType.java @@ -0,0 +1,29 @@ +package cuchaz.enigma.api.service; + +public final class EnigmaServiceType { + public final String key; + + private EnigmaServiceType(String key) { + this.key = key; + } + + public static EnigmaServiceType create(String key) { + return new EnigmaServiceType<>(key); + } + + @Override + public int hashCode() { + return key.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + + if (obj instanceof EnigmaServiceType) { + return ((EnigmaServiceType) obj).key.equals(key); + } + + return false; + } +} diff --git a/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java b/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java new file mode 100644 index 0000000..0cda199 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/JarIndexerService.java @@ -0,0 +1,10 @@ +package cuchaz.enigma.api.service; + +import cuchaz.enigma.analysis.ClassCache; +import cuchaz.enigma.analysis.index.JarIndex; + +public interface JarIndexerService extends EnigmaService { + EnigmaServiceType TYPE = EnigmaServiceType.create("jar_indexer"); + + void acceptJar(ClassCache classCache, JarIndex jarIndex); +} diff --git a/src/main/java/cuchaz/enigma/api/service/NameProposalService.java b/src/main/java/cuchaz/enigma/api/service/NameProposalService.java new file mode 100644 index 0000000..4c357db --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/NameProposalService.java @@ -0,0 +1,12 @@ +package cuchaz.enigma.api.service; + +import cuchaz.enigma.translation.mapping.EntryRemapper; +import cuchaz.enigma.translation.representation.entry.Entry; + +import java.util.Optional; + +public interface NameProposalService extends EnigmaService { + EnigmaServiceType TYPE = EnigmaServiceType.create("name_proposal"); + + Optional proposeName(Entry obfEntry, EntryRemapper remapper); +} diff --git a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java new file mode 100644 index 0000000..af0cf30 --- /dev/null +++ b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java @@ -0,0 +1,9 @@ +package cuchaz.enigma.api.service; + +import cuchaz.enigma.translation.representation.entry.Entry; + +public interface ObfuscationTestService extends EnigmaService { + EnigmaServiceType TYPE = EnigmaServiceType.create("obfuscation_test"); + + boolean testDeobfuscated(Entry entry); +} -- cgit v1.2.3 From 1e1641d81938c48b5f01f6ab71fe4b8868a5889d Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Tue, 18 Jun 2019 21:37:15 +0200 Subject: Use jopt for cli parsing --- .../enigma/api/service/ObfuscationTestService.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/main/java/cuchaz/enigma/api') diff --git a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java index af0cf30..c580f09 100644 --- a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java +++ b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java @@ -1,9 +1,27 @@ package cuchaz.enigma.api.service; +import com.google.common.base.Strings; +import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; public interface ObfuscationTestService extends EnigmaService { EnigmaServiceType TYPE = EnigmaServiceType.create("obfuscation_test"); boolean testDeobfuscated(Entry entry); + + final class Default implements ObfuscationTestService { + Default INSTANCE = new Default(); + + Default() { + } + + @Override + public boolean testDeobfuscated(Entry entry) { + if (entry instanceof ClassEntry) { + String packageName = ((ClassEntry) entry).getPackageName(); + return Strings.isNullOrEmpty(packageName); + } + return false; + } + } } -- cgit v1.2.3 From 257e8c3f33755a12209b203545f314286ce05382 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Tue, 18 Jun 2019 21:46:11 +0200 Subject: Parse profile json from cli args --- .../enigma/api/service/ObfuscationTestService.java | 18 ------------------ 1 file changed, 18 deletions(-) (limited to 'src/main/java/cuchaz/enigma/api') diff --git a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java index c580f09..af0cf30 100644 --- a/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java +++ b/src/main/java/cuchaz/enigma/api/service/ObfuscationTestService.java @@ -1,27 +1,9 @@ package cuchaz.enigma.api.service; -import com.google.common.base.Strings; -import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; public interface ObfuscationTestService extends EnigmaService { EnigmaServiceType TYPE = EnigmaServiceType.create("obfuscation_test"); boolean testDeobfuscated(Entry entry); - - final class Default implements ObfuscationTestService { - Default INSTANCE = new Default(); - - Default() { - } - - @Override - public boolean testDeobfuscated(Entry entry) { - if (entry instanceof ClassEntry) { - String packageName = ((ClassEntry) entry).getPackageName(); - return Strings.isNullOrEmpty(packageName); - } - return false; - } - } } -- cgit v1.2.3