diff options
| author | 2019-08-26 00:55:44 -0400 | |
|---|---|---|
| committer | 2019-08-26 06:55:44 +0200 | |
| commit | c31b70da2f88c41936a3fd7d69f445ef1db6548d (patch) | |
| tree | 3c8d419f8d895a8345464c43c0dac315764e8a30 /src/main/java/cuchaz/enigma/EnigmaProject.java | |
| parent | Put class opening brace on same line (#160) (diff) | |
| download | enigma-fork-c31b70da2f88c41936a3fd7d69f445ef1db6548d.tar.gz enigma-fork-c31b70da2f88c41936a3fd7d69f445ef1db6548d.tar.xz enigma-fork-c31b70da2f88c41936a3fd7d69f445ef1db6548d.zip | |
Use name proposal service when exporting deobfuscated jar or decompiled sources (#159)
Diffstat (limited to 'src/main/java/cuchaz/enigma/EnigmaProject.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/EnigmaProject.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/cuchaz/enigma/EnigmaProject.java b/src/main/java/cuchaz/enigma/EnigmaProject.java index bb2f7fa..a589c63 100644 --- a/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/src/main/java/cuchaz/enigma/EnigmaProject.java | |||
| @@ -8,12 +8,11 @@ import com.strobel.decompiler.languages.java.ast.CompilationUnit; | |||
| 8 | import cuchaz.enigma.analysis.ClassCache; | 8 | import cuchaz.enigma.analysis.ClassCache; |
| 9 | import cuchaz.enigma.analysis.EntryReference; | 9 | import cuchaz.enigma.analysis.EntryReference; |
| 10 | import cuchaz.enigma.analysis.index.JarIndex; | 10 | import cuchaz.enigma.analysis.index.JarIndex; |
| 11 | import cuchaz.enigma.api.service.NameProposalService; | ||
| 11 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 12 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; |
| 12 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; | 13 | import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; |
| 13 | import cuchaz.enigma.translation.Translator; | 14 | import cuchaz.enigma.translation.Translator; |
| 14 | import cuchaz.enigma.translation.mapping.EntryMapping; | 15 | import cuchaz.enigma.translation.mapping.*; |
| 15 | import cuchaz.enigma.translation.mapping.EntryRemapper; | ||
| 16 | import cuchaz.enigma.translation.mapping.MappingsChecker; | ||
| 17 | import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; | 16 | import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; |
| 18 | import cuchaz.enigma.translation.mapping.tree.EntryTree; | 17 | import cuchaz.enigma.translation.mapping.tree.EntryTree; |
| 19 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | 18 | import cuchaz.enigma.translation.representation.entry.ClassEntry; |
| @@ -26,16 +25,19 @@ import org.objectweb.asm.tree.ClassNode; | |||
| 26 | 25 | ||
| 27 | import java.io.BufferedWriter; | 26 | import java.io.BufferedWriter; |
| 28 | import java.io.IOException; | 27 | import java.io.IOException; |
| 28 | import java.io.PrintWriter; | ||
| 29 | import java.io.StringWriter; | 29 | import java.io.StringWriter; |
| 30 | import java.nio.file.Files; | 30 | import java.nio.file.Files; |
| 31 | import java.nio.file.Path; | 31 | import java.nio.file.Path; |
| 32 | import java.util.Collection; | 32 | import java.util.Collection; |
| 33 | import java.util.Map; | 33 | import java.util.Map; |
| 34 | import java.util.Objects; | 34 | import java.util.Objects; |
| 35 | import java.util.Optional; | ||
| 35 | import java.util.concurrent.atomic.AtomicInteger; | 36 | import java.util.concurrent.atomic.AtomicInteger; |
| 36 | import java.util.jar.JarEntry; | 37 | import java.util.jar.JarEntry; |
| 37 | import java.util.jar.JarOutputStream; | 38 | import java.util.jar.JarOutputStream; |
| 38 | import java.util.stream.Collectors; | 39 | import java.util.stream.Collectors; |
| 40 | import java.util.stream.Stream; | ||
| 39 | 41 | ||
| 40 | public class EnigmaProject { | 42 | public class EnigmaProject { |
| 41 | private final Enigma enigma; | 43 | private final Enigma enigma; |
| @@ -141,7 +143,12 @@ public class EnigmaProject { | |||
| 141 | 143 | ||
| 142 | public JarExport exportRemappedJar(ProgressListener progress) { | 144 | public JarExport exportRemappedJar(ProgressListener progress) { |
| 143 | Collection<ClassEntry> classEntries = jarIndex.getEntryIndex().getClasses(); | 145 | Collection<ClassEntry> classEntries = jarIndex.getEntryIndex().getClasses(); |
| 144 | Translator deobfuscator = mapper.getDeobfuscator(); | 146 | |
| 147 | Translator deobfuscator = getEnigma() | ||
| 148 | .getServices() | ||
| 149 | .get(NameProposalService.TYPE) | ||
| 150 | .map(nameProposalService -> (Translator) new ProposingTranslator(mapper, nameProposalService)) | ||
| 151 | .orElse(mapper.getDeobfuscator()); | ||
| 145 | 152 | ||
| 146 | AtomicInteger count = new AtomicInteger(); | 153 | AtomicInteger count = new AtomicInteger(); |
| 147 | progress.init(classEntries.size(), "Deobfuscating classes..."); | 154 | progress.init(classEntries.size(), "Deobfuscating classes..."); |
| @@ -233,11 +240,14 @@ public class EnigmaProject { | |||
| 233 | } | 240 | } |
| 234 | 241 | ||
| 235 | private String decompileClass(ClassNode translatedNode, SourceProvider sourceProvider) { | 242 | private String decompileClass(ClassNode translatedNode, SourceProvider sourceProvider) { |
| 236 | CompilationUnit sourceTree = sourceProvider.getSources(translatedNode.name); | ||
| 237 | |||
| 238 | StringWriter writer = new StringWriter(); | 243 | StringWriter writer = new StringWriter(); |
| 239 | sourceProvider.writeSource(writer, sourceTree); | 244 | try { |
| 240 | 245 | CompilationUnit sourceTree = sourceProvider.getSources(translatedNode.name); | |
| 246 | sourceProvider.writeSource(writer, sourceTree); | ||
| 247 | } catch (Throwable t) { | ||
| 248 | t.printStackTrace(); | ||
| 249 | t.printStackTrace(new PrintWriter(writer)); | ||
| 250 | } | ||
| 241 | return writer.toString(); | 251 | return writer.toString(); |
| 242 | } | 252 | } |
| 243 | } | 253 | } |