While we try to recover from malformed JSON data, it doesn't always work. For example, this fails:
- Run version 1.1 (nightly)
- Create a highlight filter
- Close the app
- Run version 1.0.1
Expected result: something visible happens
Actual result: nothing happens, app just doesn't start.
With -d we can see the logs:
com.google.gson.JsonIOException: java.io.IOException: Unexpected value: STRING
at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:246)
at name.mlopatkin.andlogview.config.PolymorphicTypeAdapterFactory$PolymorphicTypeAdapter.read(PolymorphicTypeAdapterFactory.java:151)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:83)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:59)
at com.google.gson.Gson.fromJson(Gson.java:1361)
at com.google.gson.Gson.fromJson(Gson.java:1463)
at name.mlopatkin.andlogview.config.SimpleClient.fromJson(SimpleClient.java:41)
at name.mlopatkin.andlogview.config.ConfigStorageImpl.loadConfig(ConfigStorageImpl.java:169)
at name.mlopatkin.andlogview.config.PreferenceImpl.get(PreferenceImpl.java:35)
at name.mlopatkin.andlogview.ui.filters.StoredFilters.createModel(StoredFilters.java:70)
at name.mlopatkin.andlogview.ui.filters.StoredFilters.lambda$new$0(StoredFilters.java:62)
at name.mlopatkin.andlogview.utils.LazyInstance$1.get(LazyInstance.java:56)
at name.mlopatkin.andlogview.ui.filters.StoredFilters.getStorageBackedModel(StoredFilters.java:66)
at name.mlopatkin.andlogview.ui.filters.FilterModule.getFiltersModel(FilterModule.java:52)
at name.mlopatkin.andlogview.ui.filters.FilterModule_GetFiltersModelFactory.getFiltersModel(FilterModule_GetFiltersModelFactory.java:52)
at name.mlopatkin.andlogview.ui.filters.FilterModule_GetFiltersModelFactory.get(FilterModule_GetFiltersModelFactory.java:38)
at name.mlopatkin.andlogview.ui.filters.FilterModule_GetFiltersModelFactory.get(FilterModule_GetFiltersModelFactory.java:13)
at dagger.internal.DoubleCheck.getSynchronized(DoubleCheck.java:54)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:45)
at name.mlopatkin.andlogview.ui.mainframe.DaggerMainFrameDependencies$MainFrameDependenciesImpl.injectMainFrame2(DaggerMainFrameDependencies.java:605)
at name.mlopatkin.andlogview.ui.mainframe.DaggerMainFrameDependencies$MainFrameDependenciesImpl.injectMainFrame(DaggerMainFrameDependencies.java:597)
at name.mlopatkin.andlogview.MainFrame.<init>(MainFrame.java:245)
at name.mlopatkin.andlogview.MainFrame$Factory.get(MainFrame.java:636)
at name.mlopatkin.andlogview.Main.createAndShowWindow(Main.java:117)
at name.mlopatkin.andlogview.Main.start(Main.java:124)
at name.mlopatkin.andlogview.Main.lambda$main$1(Main.java:78)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.IOException: Unexpected value: STRING
at name.mlopatkin.andlogview.config.ColorTypeAdapter.read(ColorTypeAdapter.java:31)
at name.mlopatkin.andlogview.config.ColorTypeAdapter.read(ColorTypeAdapter.java:13)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:267)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:558)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:516)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:267)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:558)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:516)
at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:244)
... 35 more
This is caused by the change to the color encoding.
While we try to recover from malformed JSON data, it doesn't always work. For example, this fails:
Expected result: something visible happens
Actual result: nothing happens, app just doesn't start.
With
-dwe can see the logs:This is caused by the change to the color encoding.