Fix NPE in CtbrecPreferencesStorage
This commit is contained in:
parent
8b55e9d374
commit
51574b0b7a
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
|||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -109,7 +110,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
Field field = Settings.class.getField(setting.getKey());
|
||||
field.set(settings, newV);
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV)) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}));
|
||||
|
@ -120,6 +121,16 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
return row;
|
||||
}
|
||||
|
||||
private void runRestartRequiredCallback() {
|
||||
Optional.ofNullable(prefs).map(Preferences::getRestartRequiredCallback).ifPresent(r -> {
|
||||
try {
|
||||
r.run();
|
||||
} catch (RuntimeException e) {
|
||||
LOG.warn("Error while calling \"restart required\" callback", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Node createRangeSlider(Setting setting) {
|
||||
SimpleRangeProperty<Integer> rangeProperty = (SimpleRangeProperty<Integer>) setting.getProperty();
|
||||
|
@ -167,7 +178,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
if (!Objects.equals(path, oldValue)) {
|
||||
field.set(settings, path);
|
||||
if (setting.doesNeedRestart()) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
@ -187,7 +198,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
if (!Objects.equals(path, oldValue)) {
|
||||
field.set(settings, path);
|
||||
if (setting.doesNeedRestart()) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
@ -203,7 +214,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
Field field = Settings.class.getField(setting.getKey());
|
||||
field.set(settings, newV);
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV)) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}));
|
||||
|
@ -223,7 +234,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
Field field = Settings.class.getField(setting.getKey());
|
||||
field.set(settings, Integer.parseInt(ctrl.getText()));
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV) && prefs != null) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
@ -248,7 +259,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
Field field = Settings.class.getField(setting.getKey());
|
||||
field.set(settings, value);
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV)) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}
|
||||
|
@ -264,7 +275,7 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
Field field = Settings.class.getField(setting.getKey());
|
||||
field.set(settings, newV);
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV)) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}));
|
||||
|
@ -287,13 +298,14 @@ public class CtbrecPreferencesStorage implements PreferencesStorage {
|
|||
}
|
||||
}
|
||||
comboBox.valueProperty().addListener((obs, oldV, newV) -> saveValue(() -> {
|
||||
LOG.debug("Saving setting {}", setting.getKey());
|
||||
if (setting.getConverter() != null) {
|
||||
field.set(settings, setting.getConverter().convertFrom(newV));
|
||||
} else {
|
||||
field.set(settings, newV);
|
||||
}
|
||||
if (setting.doesNeedRestart() && !Objects.equals(oldV, newV)) {
|
||||
prefs.getRestartRequiredCallback().run();
|
||||
runRestartRequiredCallback();
|
||||
}
|
||||
config.save();
|
||||
}));
|
||||
|
|
Loading…
Reference in New Issue