diff options
| author | 2019-06-16 23:49:25 +0200 | |
|---|---|---|
| committer | 2019-06-16 23:49:25 +0200 | |
| commit | e27d5967029f4f3da8889dd673ba516dcd9f3ac8 (patch) | |
| tree | 71c98afad01cafdb2884da288e494e8761c2a8ff /src/main/java/cuchaz/enigma/api/service | |
| parent | Merge remote-tracking branch 'origin/master' into proposal-tweak (diff) | |
| download | enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.gz enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.xz enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.zip | |
Plugin rework along with API rework: Enigma split from EnigmaProject; plugins now provide services configurable via a profile
Diffstat (limited to 'src/main/java/cuchaz/enigma/api/service')
7 files changed, 80 insertions, 0 deletions
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | public interface EnigmaService { | ||
| 4 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | import java.util.Optional; | ||
| 4 | |||
| 5 | public interface EnigmaServiceContext<T extends EnigmaService> { | ||
| 6 | static <T extends EnigmaService> EnigmaServiceContext<T> empty() { | ||
| 7 | return key -> Optional.empty(); | ||
| 8 | } | ||
| 9 | |||
| 10 | Optional<String> getArgument(String key); | ||
| 11 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | public interface EnigmaServiceFactory<T extends EnigmaService> { | ||
| 4 | T create(EnigmaServiceContext<T> ctx); | ||
| 5 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | public final class EnigmaServiceType<T extends EnigmaService> { | ||
| 4 | public final String key; | ||
| 5 | |||
| 6 | private EnigmaServiceType(String key) { | ||
| 7 | this.key = key; | ||
| 8 | } | ||
| 9 | |||
| 10 | public static <T extends EnigmaService> EnigmaServiceType<T> create(String key) { | ||
| 11 | return new EnigmaServiceType<>(key); | ||
| 12 | } | ||
| 13 | |||
| 14 | @Override | ||
| 15 | public int hashCode() { | ||
| 16 | return key.hashCode(); | ||
| 17 | } | ||
| 18 | |||
| 19 | @Override | ||
| 20 | public boolean equals(Object obj) { | ||
| 21 | if (obj == this) return true; | ||
| 22 | |||
| 23 | if (obj instanceof EnigmaServiceType) { | ||
| 24 | return ((EnigmaServiceType) obj).key.equals(key); | ||
| 25 | } | ||
| 26 | |||
| 27 | return false; | ||
| 28 | } | ||
| 29 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | import cuchaz.enigma.analysis.ClassCache; | ||
| 4 | import cuchaz.enigma.analysis.index.JarIndex; | ||
| 5 | |||
| 6 | public interface JarIndexerService extends EnigmaService { | ||
| 7 | EnigmaServiceType<JarIndexerService> TYPE = EnigmaServiceType.create("jar_indexer"); | ||
| 8 | |||
| 9 | void acceptJar(ClassCache classCache, JarIndex jarIndex); | ||
| 10 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | import cuchaz.enigma.translation.mapping.EntryRemapper; | ||
| 4 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 5 | |||
| 6 | import java.util.Optional; | ||
| 7 | |||
| 8 | public interface NameProposalService extends EnigmaService { | ||
| 9 | EnigmaServiceType<NameProposalService> TYPE = EnigmaServiceType.create("name_proposal"); | ||
| 10 | |||
| 11 | Optional<String> proposeName(Entry<?> obfEntry, EntryRemapper remapper); | ||
| 12 | } | ||
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 @@ | |||
| 1 | package cuchaz.enigma.api.service; | ||
| 2 | |||
| 3 | import cuchaz.enigma.translation.representation.entry.Entry; | ||
| 4 | |||
| 5 | public interface ObfuscationTestService extends EnigmaService { | ||
| 6 | EnigmaServiceType<ObfuscationTestService> TYPE = EnigmaServiceType.create("obfuscation_test"); | ||
| 7 | |||
| 8 | boolean testDeobfuscated(Entry<?> entry); | ||
| 9 | } | ||