From ea07fa660b3193f71ffd74881f207a784e35633f Mon Sep 17 00:00:00 2001 From: Julian Wiesler Date: Wed, 8 Mar 2023 13:47:39 +0100 Subject: [PATCH] Fix bookmarks parsing --- .../settings/AbstractPropertiesSettings.java | 4 +-- .../ilkd/key/settings/SettingsConverter.java | 27 ++++++++++++++++--- .../key/gui/KeYFileChooserBookmarkPanel.java | 4 +-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/key.core/src/main/java/de/uka/ilkd/key/settings/AbstractPropertiesSettings.java b/key.core/src/main/java/de/uka/ilkd/key/settings/AbstractPropertiesSettings.java index ac1853510b1..485c9a9540d 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/settings/AbstractPropertiesSettings.java +++ b/key.core/src/main/java/de/uka/ilkd/key/settings/AbstractPropertiesSettings.java @@ -59,7 +59,7 @@ private static String stringSetToString(Set set) { */ private static @Nonnull List parseStringList(@Nonnull String str) { // escape special chars (in particular the comma) - return Arrays.stream(str.split(SET_DELIMITER)).map(s -> SettingsConverter.convert(s, true)) + return Arrays.stream(str.split(SET_DELIMITER)).map(SettingsConverter::decodeString) .collect(Collectors.toCollection(ArrayList::new)); } @@ -69,7 +69,7 @@ private static String stringSetToString(Set set) { */ private static @Nonnull String stringListToString(@Nonnull List seq) { // escape special chars (in particular the comma) - return seq.stream().map(s -> SettingsConverter.convert(s, false)) + return seq.stream().map(SettingsConverter::encodeString) .collect(Collectors.joining(SET_DELIMITER)); } diff --git a/key.core/src/main/java/de/uka/ilkd/key/settings/SettingsConverter.java b/key.core/src/main/java/de/uka/ilkd/key/settings/SettingsConverter.java index f4a1ac8956f..caebd49e879 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/settings/SettingsConverter.java +++ b/key.core/src/main/java/de/uka/ilkd/key/settings/SettingsConverter.java @@ -59,7 +59,26 @@ public final class SettingsConverter { /** * The class doesn't need to be instantiated as it only contains static methods. */ - private SettingsConverter() { + private SettingsConverter() {} + + /** + * Replace occurrences of Strings in {@link #ENCODINGS} by their corresponding encoding String. + * + * @param str the String to be encoded + * @return the encoded String + */ + public static String encodeString(String str) { + return convert(str, true); + } + + /** + * Replace occurrences of Strings in {@link #ENCODINGS} by their corresponding decoding String. + * + * @param str the String to be decoded + * @return the decoded String + */ + public static String decodeString(String str) { + return convert(str, false); } /** @@ -76,7 +95,7 @@ private SettingsConverter() { * @param encode true if the String should be encoded, false if it should be decoded * @return the encoded/decoded String */ - public static String convert(String str, boolean encode) { + private static String convert(String str, boolean encode) { String result = str; for (int i = 0; i < ENCODINGS.length; i++) { // The order of replacements has to be reversed when decoding the String. @@ -119,7 +138,7 @@ public static String decode(@Nonnull String str) { } i = str.lastIndexOf(POSTFIX); str = str.substring(0, i); - return convert(str, false); + return decodeString(str); } /** @@ -144,7 +163,7 @@ public static String decode(@Nonnull String str) { * @return the encoded version of str */ public static String encode(@Nonnull String str) { - return PREFIX + convert(str, true) + POSTFIX; + return PREFIX + encodeString(str) + POSTFIX; } diff --git a/key.ui/src/main/java/de/uka/ilkd/key/gui/KeYFileChooserBookmarkPanel.java b/key.ui/src/main/java/de/uka/ilkd/key/gui/KeYFileChooserBookmarkPanel.java index dd3592ccfc2..e03d48fcb7f 100644 --- a/key.ui/src/main/java/de/uka/ilkd/key/gui/KeYFileChooserBookmarkPanel.java +++ b/key.ui/src/main/java/de/uka/ilkd/key/gui/KeYFileChooserBookmarkPanel.java @@ -101,9 +101,7 @@ private void setBookmark() { } private void loadBookmarks() { - viewSettings.getFolderBookmarks().forEach(it -> - // make absolute? .getAbsoluteFile()) - bookmarks.addElement(new File(it))); + viewSettings.getFolderBookmarks().forEach(it -> bookmarks.addElement(new File(it))); } private void saveBookmarks() {