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