From ad59e46740ef636b95667615e3881fcee6fbbcb9 Mon Sep 17 00:00:00 2001 From: liach Date: Fri, 8 Nov 2019 16:35:19 -0600 Subject: Allow multiple services for enigma (#168) * Allow multiple services for enigma Signed-off-by: liach * Delete bad dummy Signed-off-by: liach --- src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java | 12 ++++-------- src/main/java/cuchaz/enigma/gui/Gui.java | 2 ++ src/main/java/cuchaz/enigma/gui/GuiController.java | 6 +++--- 3 files changed, 9 insertions(+), 11 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 44f70f8..c1b163d 100644 --- a/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java +++ b/src/main/java/cuchaz/enigma/gui/DecompiledClassSource.java @@ -80,19 +80,15 @@ public class DecompiledClassSource { private Optional proposeName(EnigmaProject project, Entry entry) { EnigmaServices services = project.getEnigma().getServices(); - return services.get(NameProposalService.TYPE).flatMap(nameProposalService -> { - EntryResolver resolver = project.getMapper().getObfResolver(); - - Collection> resolved = resolver.resolveEntry(entry, ResolutionStrategy.RESOLVE_ROOT); + return services.get(NameProposalService.TYPE).stream().flatMap(nameProposalService -> { EntryRemapper mapper = project.getMapper(); + Collection> resolved = mapper.getObfResolver().resolveEntry(entry, ResolutionStrategy.RESOLVE_ROOT); - Stream proposals = resolved.stream() + return resolved.stream() .map(e -> nameProposalService.proposeName(e, mapper)) .filter(Optional::isPresent) .map(Optional::get); - - return proposals.findFirst(); - }); + }).findFirst(); } @Nullable diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index 52a97bb..3ab1cee 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -526,6 +526,8 @@ public class Gui { } public void onCaretMove(int pos, boolean fromClick) { + if (controller.project == null) + return; EntryRemapper mapper = controller.project.getMapper(); Token token = this.controller.getToken(pos); boolean isToken = token != null; diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index 89fbd10..54b5c92 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -342,11 +342,11 @@ public class GuiController { visibleClasses.forEach(entry -> { ClassEntry deobfEntry = mapper.deobfuscate(entry); - Optional obfService = enigma.getServices().get(ObfuscationTestService.TYPE); + List obfService = enigma.getServices().get(ObfuscationTestService.TYPE); boolean obfuscated = deobfEntry.equals(entry); - if (obfuscated && obfService.isPresent()) { - if (obfService.get().testDeobfuscated(entry)) { + if (obfuscated && !obfService.isEmpty()) { + if (obfService.stream().anyMatch(service -> service.testDeobfuscated(entry))) { obfuscated = false; } } -- cgit v1.2.3