summaryrefslogtreecommitdiff
path: root/enigma/src
diff options
context:
space:
mode:
authorGravatar 2xsaiko2020-06-07 17:26:41 +0200
committerGravatar 2xsaiko2020-06-07 17:26:41 +0200
commit50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46 (patch)
treed79202cc803018f04580f166a1a11e89e65786ad /enigma/src
parentFix yet another navigateToToken crash (diff)
downloadenigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.tar.gz
enigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.tar.xz
enigma-fork-50d4fc8430573757c5fe4f4a1d3b1c4871dbfb46.zip
Add remap crash handler
Diffstat (limited to 'enigma/src')
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java5
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java13
-rw-r--r--enigma/src/main/resources/lang/de_de.json1
-rw-r--r--enigma/src/main/resources/lang/en_us.json1
4 files changed, 16 insertions, 4 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
index a11b9dc..20f847a 100644
--- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
+++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
@@ -28,8 +28,13 @@ public final class ClassHandleError {
28 return new ClassHandleError(Type.DECOMPILE, cause); 28 return new ClassHandleError(Type.DECOMPILE, cause);
29 } 29 }
30 30
31 public static ClassHandleError remap(Throwable cause) {
32 return new ClassHandleError(Type.REMAP, cause);
33 }
34
31 public enum Type { 35 public enum Type {
32 DECOMPILE, 36 DECOMPILE,
37 REMAP,
33 } 38 }
34 39
35} \ No newline at end of file 40} \ No newline at end of file
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
index 2d9b52d..f9e4eff 100644
--- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
+++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
@@ -11,6 +11,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
11 11
12import javax.annotation.Nullable; 12import javax.annotation.Nullable;
13 13
14import org.objectweb.asm.tree.ClassNode;
15
14import cuchaz.enigma.Enigma; 16import cuchaz.enigma.Enigma;
15import cuchaz.enigma.EnigmaProject; 17import cuchaz.enigma.EnigmaProject;
16import cuchaz.enigma.bytecode.translators.SourceFixVisitor; 18import cuchaz.enigma.bytecode.translators.SourceFixVisitor;
@@ -19,7 +21,6 @@ import cuchaz.enigma.events.ClassHandleListener.InvalidationType;
19import cuchaz.enigma.source.*; 21import cuchaz.enigma.source.*;
20import cuchaz.enigma.translation.representation.entry.ClassEntry; 22import cuchaz.enigma.translation.representation.entry.ClassEntry;
21import cuchaz.enigma.utils.Result; 23import cuchaz.enigma.utils.Result;
22import org.objectweb.asm.tree.ClassNode;
23 24
24import static cuchaz.enigma.utils.Utils.withLock; 25import static cuchaz.enigma.utils.Utils.withLock;
25 26
@@ -285,9 +286,13 @@ public final class ClassHandleProvider {
285 int v = mappedVersion.incrementAndGet(); 286 int v = mappedVersion.incrementAndGet();
286 f.thenAcceptAsync(res -> { 287 f.thenAcceptAsync(res -> {
287 if (res == null || mappedVersion.get() != v) return; 288 if (res == null || mappedVersion.get() != v) return;
288 res = res.map(source -> { 289 res = res.andThen(source -> {
289 source.remapSource(p.project, p.project.getMapper().getDeobfuscator()); 290 try {
290 return source; 291 source.remapSource(p.project, p.project.getMapper().getDeobfuscator());
292 return Result.ok(source);
293 } catch (Throwable e) {
294 return Result.err(ClassHandleError.remap(e));
295 }
291 }); 296 });
292 Entry.this.source = res; 297 Entry.this.source = res;
293 Entry.this.waitingSources.forEach(s -> s.complete(source)); 298 Entry.this.waitingSources.forEach(s -> s.complete(source));
diff --git a/enigma/src/main/resources/lang/de_de.json b/enigma/src/main/resources/lang/de_de.json
index ef41da1..65685cf 100644
--- a/enigma/src/main/resources/lang/de_de.json
+++ b/enigma/src/main/resources/lang/de_de.json
@@ -11,6 +11,7 @@
11 11
12 "editor.decompiling": "Dekompiliere...", 12 "editor.decompiling": "Dekompiliere...",
13 "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.", 13 "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.",
14 "editor.remap_error": "Ein Fehler ist während des Remappens aufgetreten.",
14 15
15 "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.", 16 "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.",
16 "validation.message.not_int": "Wert muss eine ganze Zahl sein.", 17 "validation.message.not_int": "Wert muss eine ganze Zahl sein.",
diff --git a/enigma/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json
index 9b12f42..c2a739c 100644
--- a/enigma/src/main/resources/lang/en_us.json
+++ b/enigma/src/main/resources/lang/en_us.json
@@ -79,6 +79,7 @@
79 79
80 "editor.decompiling": "Decompiling...", 80 "editor.decompiling": "Decompiling...",
81 "editor.decompile_error": "An error was encountered while decompiling.", 81 "editor.decompile_error": "An error was encountered while decompiling.",
82 "editor.remap_error": "An error was encountered while remapping.",
82 83
83 "info_panel.classes.obfuscated": "Obfuscated Classes", 84 "info_panel.classes.obfuscated": "Obfuscated Classes",
84 "info_panel.classes.deobfuscated": "De-obfuscated Classes", 85 "info_panel.classes.deobfuscated": "De-obfuscated Classes",