mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-25 06:16:40 +00:00
Fix deprecated setting specializations (#33412)
Deprecating a some setting specializations (e.g., list settings) does not cause deprecation warning headers and deprecation log messages to appear. This is due to a missed check for deprecation. This commit fixes this for all setting specializations, and ensures that this can not be missed again.
This commit is contained in:
parent
7319bc7411
commit
23934e39d2
@ -69,7 +69,7 @@ public abstract class SecureSetting<T> extends Setting<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRaw(Settings settings) {
|
String innerGetRaw(final Settings settings) {
|
||||||
throw new UnsupportedOperationException("secure settings are not strings");
|
throw new UnsupportedOperationException("secure settings are not strings");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,8 +426,19 @@ public class Setting<T> implements ToXContentObject {
|
|||||||
* Returns the raw (string) settings value. If the setting is not present in the given settings object the default value is returned
|
* Returns the raw (string) settings value. If the setting is not present in the given settings object the default value is returned
|
||||||
* instead. This is useful if the value can't be parsed due to an invalid value to access the actual value.
|
* instead. This is useful if the value can't be parsed due to an invalid value to access the actual value.
|
||||||
*/
|
*/
|
||||||
public String getRaw(Settings settings) {
|
public final String getRaw(final Settings settings) {
|
||||||
checkDeprecation(settings);
|
checkDeprecation(settings);
|
||||||
|
return innerGetRaw(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The underlying implementation for {@link #getRaw(Settings)}. Setting specializations can override this as needed to convert the
|
||||||
|
* actual settings value to raw strings.
|
||||||
|
*
|
||||||
|
* @param settings the settings instance
|
||||||
|
* @return the raw string representation of the setting value
|
||||||
|
*/
|
||||||
|
String innerGetRaw(final Settings settings) {
|
||||||
return settings.get(getKey(), defaultValue.apply(settings));
|
return settings.get(getKey(), defaultValue.apply(settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -713,7 +724,7 @@ public class Setting<T> implements ToXContentObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRaw(Settings settings) {
|
public String innerGetRaw(final Settings settings) {
|
||||||
throw new UnsupportedOperationException("affix settings can't return values" +
|
throw new UnsupportedOperationException("affix settings can't return values" +
|
||||||
" use #getConcreteSetting to obtain a concrete setting");
|
" use #getConcreteSetting to obtain a concrete setting");
|
||||||
}
|
}
|
||||||
@ -820,7 +831,7 @@ public class Setting<T> implements ToXContentObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRaw(Settings settings) {
|
public String innerGetRaw(final Settings settings) {
|
||||||
Settings subSettings = get(settings);
|
Settings subSettings = get(settings);
|
||||||
try {
|
try {
|
||||||
XContentBuilder builder = XContentFactory.jsonBuilder();
|
XContentBuilder builder = XContentFactory.jsonBuilder();
|
||||||
@ -913,7 +924,7 @@ public class Setting<T> implements ToXContentObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRaw(Settings settings) {
|
String innerGetRaw(final Settings settings) {
|
||||||
List<String> array = settings.getAsList(getKey(), null);
|
List<String> array = settings.getAsList(getKey(), null);
|
||||||
return array == null ? defaultValue.apply(settings) : arrayToParsableString(array);
|
return array == null ? defaultValue.apply(settings) : arrayToParsableString(array);
|
||||||
}
|
}
|
||||||
|
@ -462,6 +462,26 @@ public class SettingTests extends ESTestCase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testListSettingsDeprecated() {
|
||||||
|
final Setting<List<String>> deprecatedListSetting =
|
||||||
|
Setting.listSetting(
|
||||||
|
"foo.deprecated",
|
||||||
|
Collections.singletonList("foo.deprecated"),
|
||||||
|
Function.identity(),
|
||||||
|
Property.Deprecated,
|
||||||
|
Property.NodeScope);
|
||||||
|
final Setting<List<String>> nonDeprecatedListSetting =
|
||||||
|
Setting.listSetting(
|
||||||
|
"foo.non_deprecated", Collections.singletonList("foo.non_deprecated"), Function.identity(), Property.NodeScope);
|
||||||
|
final Settings settings = Settings.builder()
|
||||||
|
.put("foo.deprecated", "foo.deprecated1,foo.deprecated2")
|
||||||
|
.put("foo.deprecated", "foo.non_deprecated1,foo.non_deprecated2")
|
||||||
|
.build();
|
||||||
|
deprecatedListSetting.get(settings);
|
||||||
|
nonDeprecatedListSetting.get(settings);
|
||||||
|
assertSettingDeprecationsAndWarnings(new Setting[]{deprecatedListSetting});
|
||||||
|
}
|
||||||
|
|
||||||
public void testListSettings() {
|
public void testListSettings() {
|
||||||
Setting<List<String>> listSetting = Setting.listSetting("foo.bar", Arrays.asList("foo,bar"), (s) -> s.toString(),
|
Setting<List<String>> listSetting = Setting.listSetting("foo.bar", Arrays.asList("foo,bar"), (s) -> s.toString(),
|
||||||
Property.Dynamic, Property.NodeScope);
|
Property.Dynamic, Property.NodeScope);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user