Merge pull request #16047 from nik9000/unraw_3
Remove some raw warnings from settings
This commit is contained in:
commit
491d776f65
|
@ -36,7 +36,7 @@ import java.util.function.Consumer;
|
|||
*/
|
||||
public abstract class AbstractScopedSettings extends AbstractComponent {
|
||||
private Settings lastSettingsApplied = Settings.EMPTY;
|
||||
private final List<SettingUpdater> settingUpdaters = new ArrayList<>();
|
||||
private final List<SettingUpdater<?>> settingUpdaters = new ArrayList<>();
|
||||
private final Map<String, Setting<?>> complexMatchers = new HashMap<>();
|
||||
private final Map<String, Setting<?>> keySettings = new HashMap<>();
|
||||
private final Setting.Scope scope;
|
||||
|
@ -68,7 +68,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
|||
final Settings current = Settings.builder().put(this.settings).put(settings).build();
|
||||
final Settings previous = Settings.builder().put(this.settings).put(this.lastSettingsApplied).build();
|
||||
List<RuntimeException> exceptions = new ArrayList<>();
|
||||
for (SettingUpdater settingUpdater : settingUpdaters) {
|
||||
for (SettingUpdater<?> settingUpdater : settingUpdaters) {
|
||||
try {
|
||||
if (settingUpdater.hasChanged(current, previous)) {
|
||||
settingUpdater.getValue(current, previous);
|
||||
|
@ -99,7 +99,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
|||
final Settings previous = Settings.builder().put(this.settings).put(this.lastSettingsApplied).build();
|
||||
try {
|
||||
List<Runnable> applyRunnables = new ArrayList<>();
|
||||
for (SettingUpdater settingUpdater : settingUpdaters) {
|
||||
for (SettingUpdater<?> settingUpdater : settingUpdaters) {
|
||||
try {
|
||||
applyRunnables.add(settingUpdater.updater(current, previous));
|
||||
} catch (Exception ex) {
|
||||
|
@ -164,6 +164,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
|||
/**
|
||||
* Transactional interface to update settings.
|
||||
* @see Setting
|
||||
* @param <T> the type of the value of the setting
|
||||
*/
|
||||
public interface SettingUpdater<T> {
|
||||
|
||||
|
@ -216,17 +217,16 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
|||
/**
|
||||
* Returns the {@link Setting} for the given key or <code>null</code> if the setting can not be found.
|
||||
*/
|
||||
public Setting get(String key) {
|
||||
public Setting<?> get(String key) {
|
||||
Setting<?> setting = keySettings.get(key);
|
||||
if (setting == null) {
|
||||
if (setting != null) {
|
||||
return setting;
|
||||
}
|
||||
for (Map.Entry<String, Setting<?>> entry : complexMatchers.entrySet()) {
|
||||
if (entry.getValue().match(key)) {
|
||||
return entry.getValue();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return setting;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -234,7 +234,7 @@ public abstract class AbstractScopedSettings extends AbstractComponent {
|
|||
* Returns <code>true</code> if the setting for the given key is dynamically updateable. Otherwise <code>false</code>.
|
||||
*/
|
||||
public boolean hasDynamicSetting(String key) {
|
||||
final Setting setting = get(key);
|
||||
final Setting<?> setting = get(key);
|
||||
return setting != null && setting.isDynamic();
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,8 @@ import java.util.function.Function;
|
|||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* A setting. Encapsulates typical stuff like default value, parsing, and scope.
|
||||
* Some (dynamic=true) can by modified at run time using the API.
|
||||
*/
|
||||
public class Setting<T> extends ToXContentToBytes {
|
||||
private final String key;
|
||||
|
@ -173,11 +175,18 @@ public class Setting<T> extends ToXContentToBytes {
|
|||
INDEX;
|
||||
}
|
||||
|
||||
final AbstractScopedSettings.SettingUpdater newUpdater(Consumer<T> consumer, ESLogger logger) {
|
||||
/**
|
||||
* Build a new updater with a noop validator.
|
||||
*/
|
||||
final AbstractScopedSettings.SettingUpdater<T> newUpdater(Consumer<T> consumer, ESLogger logger) {
|
||||
return newUpdater(consumer, logger, (s) -> {});
|
||||
}
|
||||
|
||||
AbstractScopedSettings.SettingUpdater newUpdater(Consumer<T> consumer, ESLogger logger, Consumer<T> validator) {
|
||||
/**
|
||||
* Build the updater responsible for validating new values, logging the new
|
||||
* value, and eventually setting the value where it belongs.
|
||||
*/
|
||||
AbstractScopedSettings.SettingUpdater<T> newUpdater(Consumer<T> consumer, ESLogger logger, Consumer<T> validator) {
|
||||
if (isDynamic()) {
|
||||
return new Updater(consumer, logger, validator);
|
||||
} else {
|
||||
|
@ -343,6 +352,7 @@ public class Setting<T> extends ToXContentToBytes {
|
|||
return array == null ? defaultValue.apply(settings) : arrayToParsableString(array);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean match(String toTest) {
|
||||
return pattern.matcher(toTest).matches();
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ public class SettingTests extends ESTestCase {
|
|||
ByteSizeValue byteSizeValue = byteSizeValueSetting.get(Settings.EMPTY);
|
||||
assertEquals(byteSizeValue.bytes(), 1024);
|
||||
AtomicReference<ByteSizeValue> value = new AtomicReference<>(null);
|
||||
ClusterSettings.SettingUpdater settingUpdater = byteSizeValueSetting.newUpdater(value::set, logger);
|
||||
ClusterSettings.SettingUpdater<ByteSizeValue> settingUpdater = byteSizeValueSetting.newUpdater(value::set, logger);
|
||||
try {
|
||||
settingUpdater.apply(Settings.builder().put("a.byte.size", 12).build(), Settings.EMPTY);
|
||||
fail("no unit");
|
||||
|
@ -60,7 +60,7 @@ public class SettingTests extends ESTestCase {
|
|||
public void testSimpleUpdate() {
|
||||
Setting<Boolean> booleanSetting = Setting.boolSetting("foo.bar", false, true, Setting.Scope.CLUSTER);
|
||||
AtomicReference<Boolean> atomicBoolean = new AtomicReference<>(null);
|
||||
ClusterSettings.SettingUpdater settingUpdater = booleanSetting.newUpdater(atomicBoolean::set, logger);
|
||||
ClusterSettings.SettingUpdater<Boolean> settingUpdater = booleanSetting.newUpdater(atomicBoolean::set, logger);
|
||||
Settings build = Settings.builder().put("foo.bar", false).build();
|
||||
settingUpdater.apply(build, Settings.EMPTY);
|
||||
assertNull(atomicBoolean.get());
|
||||
|
@ -94,8 +94,7 @@ public class SettingTests extends ESTestCase {
|
|||
Setting<Boolean> booleanSetting = Setting.boolSetting("foo.bar", false, true, Setting.Scope.CLUSTER);
|
||||
AtomicReference<Boolean> ab1 = new AtomicReference<>(null);
|
||||
AtomicReference<Boolean> ab2 = new AtomicReference<>(null);
|
||||
ClusterSettings.SettingUpdater settingUpdater = booleanSetting.newUpdater(ab1::set, logger);
|
||||
ClusterSettings.SettingUpdater settingUpdater2 = booleanSetting.newUpdater(ab2::set, logger);
|
||||
ClusterSettings.SettingUpdater<Boolean> settingUpdater = booleanSetting.newUpdater(ab1::set, logger);
|
||||
settingUpdater.apply(Settings.builder().put("foo.bar", true).build(), Settings.EMPTY);
|
||||
assertTrue(ab1.get());
|
||||
assertNull(ab2.get());
|
||||
|
@ -120,7 +119,7 @@ public class SettingTests extends ESTestCase {
|
|||
assertFalse(setting.isGroupSetting());
|
||||
ref.set(setting.get(Settings.EMPTY));
|
||||
ComplexType type = ref.get();
|
||||
ClusterSettings.SettingUpdater settingUpdater = setting.newUpdater(ref::set, logger);
|
||||
ClusterSettings.SettingUpdater<ComplexType> settingUpdater = setting.newUpdater(ref::set, logger);
|
||||
assertFalse(settingUpdater.apply(Settings.EMPTY, Settings.EMPTY));
|
||||
assertSame("no update - type has not changed", type, ref.get());
|
||||
|
||||
|
@ -147,7 +146,7 @@ public class SettingTests extends ESTestCase {
|
|||
AtomicReference<Settings> ref = new AtomicReference<>(null);
|
||||
Setting<Settings> setting = Setting.groupSetting("foo.bar.", true, Setting.Scope.CLUSTER);
|
||||
assertTrue(setting.isGroupSetting());
|
||||
ClusterSettings.SettingUpdater settingUpdater = setting.newUpdater(ref::set, logger);
|
||||
ClusterSettings.SettingUpdater<Settings> settingUpdater = setting.newUpdater(ref::set, logger);
|
||||
|
||||
Settings currentInput = Settings.builder().put("foo.bar.1.value", "1").put("foo.bar.2.value", "2").put("foo.bar.3.value", "3").build();
|
||||
Settings previousInput = Settings.EMPTY;
|
||||
|
@ -191,7 +190,7 @@ public class SettingTests extends ESTestCase {
|
|||
assertTrue(setting.match("foo.bar.baz"));
|
||||
assertFalse(setting.match("foo.baz.bar"));
|
||||
|
||||
ClusterSettings.SettingUpdater predicateSettingUpdater = setting.newUpdater(ref::set, logger,(s) -> assertFalse(true));
|
||||
ClusterSettings.SettingUpdater<Settings> predicateSettingUpdater = setting.newUpdater(ref::set, logger,(s) -> assertFalse(true));
|
||||
try {
|
||||
predicateSettingUpdater.apply(Settings.builder().put("foo.bar.1.value", "1").put("foo.bar.2.value", "2").build(), Settings.EMPTY);
|
||||
fail("not accepted");
|
||||
|
@ -273,7 +272,7 @@ public class SettingTests extends ESTestCase {
|
|||
assertArrayEquals(value.toArray(new String[0]), input.toArray(new String[0]));
|
||||
|
||||
AtomicReference<List<String>> ref = new AtomicReference<>();
|
||||
AbstractScopedSettings.SettingUpdater settingUpdater = listSetting.newUpdater(ref::set, logger);
|
||||
AbstractScopedSettings.SettingUpdater<List<String>> settingUpdater = listSetting.newUpdater(ref::set, logger);
|
||||
assertTrue(settingUpdater.hasChanged(builder.build(), Settings.EMPTY));
|
||||
settingUpdater.apply(builder.build(), Settings.EMPTY);
|
||||
assertEquals(input.size(), ref.get().size());
|
||||
|
|
Loading…
Reference in New Issue