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 --- .../cuchaz/enigma/gui/DecompiledClassSource.java | 28 +++++++++------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'src/main/java/cuchaz/enigma/gui') diff --git a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java b/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java index 93643ab..1e96a06 100644 --- a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java +++ b/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java @@ -4,18 +4,17 @@ import cuchaz.enigma.Deobfuscator; import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.analysis.SourceIndex; import cuchaz.enigma.analysis.Token; -import cuchaz.enigma.api.EnigmaPlugin; import cuchaz.enigma.gui.highlight.TokenHighlightType; import cuchaz.enigma.translation.LocalNameGenerator; import cuchaz.enigma.translation.Translator; import cuchaz.enigma.translation.representation.TypeDescriptor; import cuchaz.enigma.translation.representation.entry.ClassEntry; import cuchaz.enigma.translation.representation.entry.Entry; -import cuchaz.enigma.translation.representation.entry.FieldEntry; import cuchaz.enigma.translation.representation.entry.LocalVariableDefEntry; import javax.annotation.Nullable; import java.util.*; +import java.util.stream.Stream; public class DecompiledClassSource { private final ClassEntry classEntry; @@ -55,10 +54,10 @@ public class DecompiledClassSource { highlightToken(movedToken, TokenHighlightType.DEOBFUSCATED); return translatedEntry.getSourceRemapName(); } else { - String proposedName = proposeName(deobfuscator, entry); - if (proposedName != null) { + Optional proposedName = proposeName(deobfuscator, entry); + if (proposedName.isPresent()) { highlightToken(movedToken, TokenHighlightType.PROPOSED); - return proposedName; + return proposedName.get(); } highlightToken(movedToken, TokenHighlightType.OBFUSCATED); @@ -73,18 +72,13 @@ public class DecompiledClassSource { return null; } - @Nullable - private String proposeName(Deobfuscator deobfuscator, Entry entry) { - if (entry instanceof FieldEntry) { - for (EnigmaPlugin plugin : deobfuscator.getPlugins()) { - String owner = entry.getContainingClass().getFullName(); - String proposal = plugin.proposeFieldName(owner, entry.getName(), ((FieldEntry) entry).getDesc().toString()); - if (proposal != null) { - return proposal; - } - } - } - return null; + private Optional proposeName(Deobfuscator deobfuscator, Entry entry) { + Stream proposals = deobfuscator.getPlugins() + .map(plugin -> plugin.proposeName(entry, deobfuscator.getMapper())) + .filter(Optional::isPresent) + .map(Optional::get); + + return proposals.findFirst(); } @Nullable -- cgit v1.2.3