paginagmbh / EPUB-Checker

Standalone “EPUB-Checker” application for Windows, macOS, and Linux
https://www.pagina.gmbh/produkte/epub-checker/
GNU General Public License v2.0
37 stars 5 forks source link

Use Java preference API for storing preferences #41

Open tofi86 opened 6 years ago

tofi86 commented 6 years ago

https://dev.to/argherna/the-java-preferences-api-is-a-little-thing-thats-a-huge-benefit-13ac

Saving string:

String newUrl = "https://secure.example.com/";
Preferences myConnectionPrefs = Preferences.userRoot().node("com/github/argherna/MyApplication/connections");

// Save the newUrl.
myConnectionPrefs.put("url", newUrl);

Reading strings:

Preferences myConnectionPrefs = Preferences.userRoot().node("com/github/argherna/MyApplication/connections");
String url = myConnectionPrefs.get("url", "http://example.com");

This rewrite would require to migrate the existing textfiles currently used for configuration storage.

tofi86 commented 5 years ago

encountered some issues on Mac OS. Moving to next milestone.

tofi86 commented 5 years ago

Preferences API seems not to work in shutdown hooks:

Exception in thread "Thread-0" java.lang.IllegalStateException: Shutdown in progress
    at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:66)
    at java.lang.Runtime.addShutdownHook(Runtime.java:211)
    at java.util.prefs.MacOSXPreferencesFile.timer(MacOSXPreferencesFile.java:344)
    at java.util.prefs.MacOSXPreferencesFile.markChanged(MacOSXPreferencesFile.java:282)
    at java.util.prefs.MacOSXPreferencesFile.addNode(MacOSXPreferencesFile.java:354)
    at java.util.prefs.MacOSXPreferences.<init>(MacOSXPreferences.java:107)
    at java.util.prefs.MacOSXPreferences.<init>(MacOSXPreferences.java:77)
    at java.util.prefs.MacOSXPreferences.getUserRoot(MacOSXPreferences.java:58)
    at java.util.prefs.MacOSXPreferencesFactory.userRoot(MacOSXPreferencesFactory.java:30)
    at java.util.prefs.Preferences.userRoot(Preferences.java:457)
    at de.paginagmbh.epubchecker.PreferenceManager.savePref(PreferenceManager.java:20)
    at de.paginagmbh.epubchecker.PaginaEPUBChecker$1.run(PaginaEPUBChecker.java:136)

I pushed the current code to a new branch test/41-java-prefs-api