summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/EnigmaProject.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/EnigmaProject.java')
-rw-r--r--src/main/java/cuchaz/enigma/EnigmaProject.java26
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;
8import cuchaz.enigma.analysis.ClassCache; 8import cuchaz.enigma.analysis.ClassCache;
9import cuchaz.enigma.analysis.EntryReference; 9import cuchaz.enigma.analysis.EntryReference;
10import cuchaz.enigma.analysis.index.JarIndex; 10import cuchaz.enigma.analysis.index.JarIndex;
11import cuchaz.enigma.api.service.NameProposalService;
11import cuchaz.enigma.bytecode.translators.SourceFixVisitor; 12import cuchaz.enigma.bytecode.translators.SourceFixVisitor;
12import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; 13import cuchaz.enigma.bytecode.translators.TranslationClassVisitor;
13import cuchaz.enigma.translation.Translator; 14import cuchaz.enigma.translation.Translator;
14import cuchaz.enigma.translation.mapping.EntryMapping; 15import cuchaz.enigma.translation.mapping.*;
15import cuchaz.enigma.translation.mapping.EntryRemapper;
16import cuchaz.enigma.translation.mapping.MappingsChecker;
17import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; 16import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree;
18import cuchaz.enigma.translation.mapping.tree.EntryTree; 17import cuchaz.enigma.translation.mapping.tree.EntryTree;
19import cuchaz.enigma.translation.representation.entry.ClassEntry; 18import cuchaz.enigma.translation.representation.entry.ClassEntry;
@@ -26,16 +25,19 @@ import org.objectweb.asm.tree.ClassNode;
26 25
27import java.io.BufferedWriter; 26import java.io.BufferedWriter;
28import java.io.IOException; 27import java.io.IOException;
28import java.io.PrintWriter;
29import java.io.StringWriter; 29import java.io.StringWriter;
30import java.nio.file.Files; 30import java.nio.file.Files;
31import java.nio.file.Path; 31import java.nio.file.Path;
32import java.util.Collection; 32import java.util.Collection;
33import java.util.Map; 33import java.util.Map;
34import java.util.Objects; 34import java.util.Objects;
35import java.util.Optional;
35import java.util.concurrent.atomic.AtomicInteger; 36import java.util.concurrent.atomic.AtomicInteger;
36import java.util.jar.JarEntry; 37import java.util.jar.JarEntry;
37import java.util.jar.JarOutputStream; 38import java.util.jar.JarOutputStream;
38import java.util.stream.Collectors; 39import java.util.stream.Collectors;
40import java.util.stream.Stream;
39 41
40public class EnigmaProject { 42public 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 }