diff options
| author | 2019-06-19 18:51:31 +0100 | |
|---|---|---|
| committer | 2019-06-19 18:51:31 +0100 | |
| commit | 546c617598b10c341fe6549678803f6ac0c95619 (patch) | |
| tree | d818bcebf7634ed5b716ee29619725fdc29a04e8 /src/main/java/cuchaz/enigma/api | |
| parent | fix unwanted declaration navigation during Quick Find (diff) | |
| parent | Parse profile json from cli args (diff) | |
| download | enigma-fork-546c617598b10c341fe6549678803f6ac0c95619.tar.gz enigma-fork-546c617598b10c341fe6549678803f6ac0c95619.tar.xz enigma-fork-546c617598b10c341fe6549678803f6ac0c95619.zip | |
Merge pull request #135 from gegy1000/proposal-tweak
Plugin rework
Diffstat (limited to 'src/main/java/cuchaz/enigma/api')
9 files changed, 91 insertions, 15 deletions
diff --git a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java index 3efe0dc..bdd6015 100644 --- a/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java +++ b/src/main/java/cuchaz/enigma/api/EnigmaPlugin.java | |||
| @@ -1,18 +1,5 @@ | |||
| 1 | package cuchaz.enigma.api; | 1 | package cuchaz.enigma.api; |
| 2 | 2 | ||
| 3 | import org.objectweb.asm.tree.ClassNode; | 3 | public interface EnigmaPlugin { |
| 4 | 4 | void init(EnigmaPluginContext ctx); | |
| 5 | import javax.annotation.Nullable; | ||
| 6 | import java.util.Map; | ||
| 7 | import java.util.function.Function; | ||
| 8 | |||
| 9 | public abstract class EnigmaPlugin { | ||
| 10 | public void onClassesLoaded(Map<String, byte[]> classData, Function<String, ClassNode> classNodeGetter) { | ||
| 11 | |||
| 12 | } | ||
| 13 | |||
| 14 | @Nullable | ||
| 15 | public String proposeFieldName(String owner, String name, String desc) { | ||
| 16 | return null; | ||
| 17 | } | ||
| 18 | } | 5 | } |
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 @@ | |||
| 1 | package cuchaz.enigma.api; | ||
| 2 | |||
| 3 | import cuchaz.enigma.api.service.EnigmaService; | ||
| 4 | import cuchaz.enigma.api.service.EnigmaServiceFactory; | ||
| 5 | import cuchaz.enigma.api.service.EnigmaServiceType; | ||
| 6 | |||
| 7 | public interface EnigmaPluginContext { | ||
| 8 | <T extends EnigmaService> void registerService(String id, EnigmaServiceType<T> serviceType, EnigmaServiceFactory<T> factory); | ||
| 9 | } | ||
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 | } | ||