From d1ac43de33aede078592eed864da88540d9c4af1 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 29 Sep 2019 14:18:25 +0300 Subject: [PATCH] fix(gui): add default contructor for classes serialized with GSON (#752) --- .../main/java/jadx/gui/settings/JadxProject.java | 8 ++++++++ .../jadx/gui/settings/JadxSettingsAdapter.java | 4 ++-- .../java/jadx/gui/settings/WindowLocation.java | 16 +++++++++++++--- .../src/main/java/jadx/gui/utils/LangLocale.java | 14 +++++++++++++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java index 539051bea..05498526e 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java @@ -38,10 +38,18 @@ public class JadxProject { private int projectVersion = 0; + // Don't remove. Used in json serialization + public JadxProject() { + } + public JadxProject(JadxSettings settings) { this.settings = settings; } + public void setSettings(JadxSettings settings) { + this.settings = settings; + } + public Path getProjectPath() { return projectPath; } diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java index 3ecc9a7ab..8f1811a66 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsAdapter.java @@ -54,8 +54,8 @@ public class JadxSettingsAdapter { } public static JadxSettings load() { + String jsonSettings = PREFS.get(JADX_GUI_KEY, ""); try { - String jsonSettings = PREFS.get(JADX_GUI_KEY, ""); JadxSettings settings = fromString(jsonSettings); if (settings == null) { LOG.debug("Created new settings."); @@ -68,7 +68,7 @@ public class JadxSettingsAdapter { } return settings; } catch (Exception e) { - LOG.error("Error load settings", e); + LOG.error("Error load settings. Settings will reset.\n Loaded json string: {}", jsonSettings, e); return new JadxSettings(); } } diff --git a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java index 3f3341471..fc0b0ea40 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java @@ -3,10 +3,12 @@ package jadx.gui.settings; import java.awt.*; public class WindowLocation { + private String windowId; + private Rectangle bounds; - private final String windowId; - - private final Rectangle bounds; + // Don't remove. Used in json serialization + public WindowLocation() { + } public WindowLocation(String windowId, Rectangle bounds) { this.windowId = windowId; @@ -17,10 +19,18 @@ public class WindowLocation { return windowId; } + public void setWindowId(String windowId) { + this.windowId = windowId; + } + public Rectangle getBounds() { return bounds; } + public void setBounds(Rectangle bounds) { + this.bounds = bounds; + } + @Override public String toString() { return "WindowLocation{" diff --git a/jadx-gui/src/main/java/jadx/gui/utils/LangLocale.java b/jadx-gui/src/main/java/jadx/gui/utils/LangLocale.java index 922d61426..0f0be1ef0 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/LangLocale.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/LangLocale.java @@ -3,7 +3,11 @@ package jadx.gui.utils; import java.util.Locale; public class LangLocale { - private final Locale locale; + private Locale locale; + + // Don't remove. Used in json serialization + public LangLocale() { + } public LangLocale(Locale locale) { this.locale = locale; @@ -17,6 +21,14 @@ public class LangLocale { return locale; } + public Locale getLocale() { + return locale; + } + + public void setLocale(Locale locale) { + this.locale = locale; + } + @Override public String toString() { return NLS.str("language.name", this);