diff --git a/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt index c2f96e734350b..75fc0b79a0143 100644 --- a/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt +++ b/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt @@ -35,6 +35,8 @@ java.nio.channels.SocketChannel#connect(java.net.SocketAddress) # org.elasticsearch.core.Booleans#parseBoolean(java.lang.String) directly on the string. @defaultMessage use org.elasticsearch.core.Booleans#parseBoolean(java.lang.String) java.lang.Boolean#getBoolean(java.lang.String) +java.lang.Boolean#parseBoolean(java.lang.String) +java.lang.Boolean#valueOf(java.lang.String) org.apache.lucene.util.IOUtils @ use @org.elasticsearch.core.internal.io instead diff --git a/libs/core/src/main/java/org/elasticsearch/core/Booleans.java b/libs/core/src/main/java/org/elasticsearch/core/Booleans.java index 42579a39df0a2..7984c45fc4e3c 100644 --- a/libs/core/src/main/java/org/elasticsearch/core/Booleans.java +++ b/libs/core/src/main/java/org/elasticsearch/core/Booleans.java @@ -97,32 +97,16 @@ public static Boolean parseBoolean(String value, Boolean defaultValue) { } /** - * Returns {@code false} if text is in "false", "0", "off", "no"; else, {@code true}. + * Wrapper around Boolean.parseBoolean for lenient parsing of booleans. * - * @deprecated Only kept to provide automatic upgrades for pre 6.0 indices. Use {@link #parseBoolean(String, Boolean)} instead. + * Note: Lenient parsing is highly discouraged and should only be used if absolutely necessary. */ - @Deprecated - public static Boolean parseBooleanLenient(String value, Boolean defaultValue) { - if (value == null) { // only for the null case we do that here! - return defaultValue; - } - return parseBooleanLenient(value, false); - } - - /** - * Returns {@code false} if text is in "false", "0", "off", "no"; else, {@code true}. - * - * @deprecated Only kept to provide automatic upgrades for pre 6.0 indices. Use {@link #parseBoolean(String, boolean)} instead. - */ - @Deprecated + @SuppressForbidden(reason = "allow lenient parsing of booleans") public static boolean parseBooleanLenient(String value, boolean defaultValue) { if (value == null) { return defaultValue; } - return switch (value) { - case "false", "0", "off", "no" -> false; - default -> true; - }; + return Boolean.parseBoolean(value); } /** @@ -138,71 +122,4 @@ public static boolean isFalse(String value) { public static boolean isTrue(String value) { return "true".equals(value); } - - /** - * Returns {@code false} if text is in "false", "0", "off", "no"; else, {@code true}. - * - * @deprecated Only kept to provide automatic upgrades for pre 6.0 indices. Use {@link #parseBoolean(char[], int, int, boolean)} instead - */ - @Deprecated - public static boolean parseBooleanLenient(char[] text, int offset, int length, boolean defaultValue) { - if (text == null || length == 0) { - return defaultValue; - } - if (length == 1) { - return text[offset] != '0'; - } - if (length == 2) { - return (text[offset] == 'n' && text[offset + 1] == 'o') == false; - } - if (length == 3) { - return (text[offset] == 'o' && text[offset + 1] == 'f' && text[offset + 2] == 'f') == false; - } - if (length == 5) { - return (text[offset] == 'f' - && text[offset + 1] == 'a' - && text[offset + 2] == 'l' - && text[offset + 3] == 's' - && text[offset + 4] == 'e') == false; - } - return true; - } - - /** - * returns true if the a sequence of chars is one of "true","false","on","off","yes","no","0","1" - * - * @param text sequence to check - * @param offset offset to start - * @param length length to check - * - * @deprecated Only kept to provide automatic upgrades for pre 6.0 indices. Use {@link #isBoolean(char[], int, int)} instead. - */ - @Deprecated - public static boolean isBooleanLenient(char[] text, int offset, int length) { - if (text == null || length == 0) { - return false; - } - if (length == 1) { - return text[offset] == '0' || text[offset] == '1'; - } - if (length == 2) { - return (text[offset] == 'n' && text[offset + 1] == 'o') || (text[offset] == 'o' && text[offset + 1] == 'n'); - } - if (length == 3) { - return (text[offset] == 'o' && text[offset + 1] == 'f' && text[offset + 2] == 'f') - || (text[offset] == 'y' && text[offset + 1] == 'e' && text[offset + 2] == 's'); - } - if (length == 4) { - return (text[offset] == 't' && text[offset + 1] == 'r' && text[offset + 2] == 'u' && text[offset + 3] == 'e'); - } - if (length == 5) { - return (text[offset] == 'f' - && text[offset + 1] == 'a' - && text[offset + 2] == 'l' - && text[offset + 3] == 's' - && text[offset + 4] == 'e'); - } - return false; - } - } diff --git a/libs/core/src/main/java/org/elasticsearch/core/internal/provider/EmbeddedImplClassLoader.java b/libs/core/src/main/java/org/elasticsearch/core/internal/provider/EmbeddedImplClassLoader.java index 5e5c82af4807e..c4f57ce4a0679 100644 --- a/libs/core/src/main/java/org/elasticsearch/core/internal/provider/EmbeddedImplClassLoader.java +++ b/libs/core/src/main/java/org/elasticsearch/core/internal/provider/EmbeddedImplClassLoader.java @@ -9,6 +9,8 @@ package org.elasticsearch.core.internal.provider; +import org.elasticsearch.core.Booleans; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -469,7 +471,7 @@ private static boolean isMultiRelease(ClassLoader parent, String jarPrefix) thro try (InputStream is = parent.getResourceAsStream(jarPrefix + "/META-INF/MANIFEST.MF")) { if (is != null) { Manifest manifest = new Manifest(is); - return Boolean.parseBoolean(manifest.getMainAttributes().getValue(MULTI_RELEASE)); + return Booleans.parseBooleanLenient(manifest.getMainAttributes().getValue(MULTI_RELEASE), false); } } return false; diff --git a/libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder/Main.java b/libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder/Main.java index 60b3a3c9f3c8e..1bf86e5b7ab25 100644 --- a/libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder/Main.java +++ b/libs/entitlement/tools/public-callers-finder/src/main/java/org/elasticsearch/entitlement/tools/publiccallersfinder/Main.java @@ -9,6 +9,7 @@ package org.elasticsearch.entitlement.tools.publiccallersfinder; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.entitlement.tools.ExternalAccess; import org.elasticsearch.entitlement.tools.Utils; @@ -191,7 +192,7 @@ private static void parseCsv(Path csvPath, MethodDescriptorConsumer methodConsum public static void main(String[] args) throws IOException { var csvFilePath = Path.of(args[0]); - boolean bubbleUpFromPublic = args.length >= 2 && Boolean.parseBoolean(args[1]); + boolean bubbleUpFromPublic = args.length >= 2 && Booleans.parseBoolean(args[1]); parseCsv(csvFilePath, (method, module, access) -> identifyTopLevelEntryPoints(method, module, access, bubbleUpFromPublic)); } } diff --git a/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java b/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java index a2188d0685c3b..43a0a3510e8ef 100644 --- a/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java +++ b/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java @@ -220,6 +220,9 @@ static boolean isMacOrLinuxAarch64() { /** -Dorg.elasticsearch.nativeaccess.enableVectorLibrary=false to disable.*/ static final String ENABLE_JDK_VECTOR_LIBRARY = "org.elasticsearch.nativeaccess.enableVectorLibrary"; + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) static boolean checkEnableSystemProperty() { return Optional.ofNullable(System.getProperty(ENABLE_JDK_VECTOR_LIBRARY)).map(Boolean::valueOf).orElse(Boolean.TRUE); } diff --git a/modules/aggregations/src/yamlRestTest/java/org/elasticsearch/aggregations/AggregationsClientYamlTestSuiteIT.java b/modules/aggregations/src/yamlRestTest/java/org/elasticsearch/aggregations/AggregationsClientYamlTestSuiteIT.java index c4f44bc3e4b3e..9c5d0afbcec5a 100644 --- a/modules/aggregations/src/yamlRestTest/java/org/elasticsearch/aggregations/AggregationsClientYamlTestSuiteIT.java +++ b/modules/aggregations/src/yamlRestTest/java/org/elasticsearch/aggregations/AggregationsClientYamlTestSuiteIT.java @@ -11,6 +11,7 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.FeatureFlag; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; @@ -26,8 +27,8 @@ private static ElasticsearchCluster makeCluster() { // On Serverless, we want to disallow scripted metrics aggs per default. // The following override allows us to still run the scripted metrics agg tests without breaking bwc. - boolean disableAllowListPerDefault = Boolean.parseBoolean( - System.getProperty("tests.disable_scripted_metric_allow_list_per_default") + boolean disableAllowListPerDefault = Booleans.parseBoolean( + System.getProperty("tests.disable_scripted_metric_allow_list_per_default", "false") ); if (disableAllowListPerDefault) { return cluster.setting("search.aggs.only_allowed_metric_scripts", "false").build(); diff --git a/modules/data-streams/src/yamlRestTest/java/org/elasticsearch/datastreams/DataStreamsClientYamlTestSuiteIT.java b/modules/data-streams/src/yamlRestTest/java/org/elasticsearch/datastreams/DataStreamsClientYamlTestSuiteIT.java index b952155cd3016..d568cc6cd0acb 100644 --- a/modules/data-streams/src/yamlRestTest/java/org/elasticsearch/datastreams/DataStreamsClientYamlTestSuiteIT.java +++ b/modules/data-streams/src/yamlRestTest/java/org/elasticsearch/datastreams/DataStreamsClientYamlTestSuiteIT.java @@ -13,6 +13,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.FeatureFlag; import org.elasticsearch.test.cluster.local.LocalClusterSpecBuilder; @@ -53,7 +54,7 @@ private static ElasticsearchCluster createCluster() { if (initTestSeed().nextBoolean()) { clusterBuilder.setting("xpack.license.self_generated.type", "trial"); } - boolean setNodes = Boolean.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); + boolean setNodes = Booleans.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); if (setNodes) { clusterBuilder.nodes(2); } diff --git a/modules/dot-prefix-validation/src/yamlRestTest/java/org/elasticsearch/validation/DotPrefixClientYamlTestSuiteIT.java b/modules/dot-prefix-validation/src/yamlRestTest/java/org/elasticsearch/validation/DotPrefixClientYamlTestSuiteIT.java index b00b5e54cb1d3..9e83287139747 100644 --- a/modules/dot-prefix-validation/src/yamlRestTest/java/org/elasticsearch/validation/DotPrefixClientYamlTestSuiteIT.java +++ b/modules/dot-prefix-validation/src/yamlRestTest/java/org/elasticsearch/validation/DotPrefixClientYamlTestSuiteIT.java @@ -14,6 +14,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.LocalClusterSpecBuilder; import org.elasticsearch.test.cluster.local.distribution.DistributionType; @@ -50,7 +51,7 @@ private static ElasticsearchCluster createCluster() { .setting("xpack.security.enabled", "true") .keystore("bootstrap.password", "x-pack-test-password") .user("x_pack_rest_user", "x-pack-test-password"); - boolean setNodes = Boolean.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); + boolean setNodes = Booleans.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); if (setNodes) { clusterBuilder.nodes(2); } diff --git a/modules/ingest-common/src/yamlRestTest/java/org/elasticsearch/ingest/common/IngestCommonClientYamlTestSuiteIT.java b/modules/ingest-common/src/yamlRestTest/java/org/elasticsearch/ingest/common/IngestCommonClientYamlTestSuiteIT.java index 8150b7cdd176f..fe87f81d93bfe 100644 --- a/modules/ingest-common/src/yamlRestTest/java/org/elasticsearch/ingest/common/IngestCommonClientYamlTestSuiteIT.java +++ b/modules/ingest-common/src/yamlRestTest/java/org/elasticsearch/ingest/common/IngestCommonClientYamlTestSuiteIT.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.LocalClusterSpecBuilder; import org.elasticsearch.test.cluster.local.distribution.DistributionType; @@ -48,7 +49,7 @@ private static ElasticsearchCluster createCluster() { .distribution(DistributionType.DEFAULT) .setting("xpack.security.enabled", "true") .user("x_pack_rest_user", "x-pack-test-password"); - boolean setNodes = Boolean.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); + boolean setNodes = Booleans.parseBoolean(System.getProperty("yaml.rest.tests.set_num_nodes", "true")); if (setNodes) { clusterBuilder.nodes(2); } diff --git a/modules/ingest-geoip/qa/geoip-reindexed/src/javaRestTest/java/org/elasticsearch/ingest/geoip/GeoIpReindexedIT.java b/modules/ingest-geoip/qa/geoip-reindexed/src/javaRestTest/java/org/elasticsearch/ingest/geoip/GeoIpReindexedIT.java index 67c34e0445b44..4c8cf07801d7b 100644 --- a/modules/ingest-geoip/qa/geoip-reindexed/src/javaRestTest/java/org/elasticsearch/ingest/geoip/GeoIpReindexedIT.java +++ b/modules/ingest-geoip/qa/geoip-reindexed/src/javaRestTest/java/org/elasticsearch/ingest/geoip/GeoIpReindexedIT.java @@ -20,6 +20,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.CollectionUtils; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.Nullable; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.test.cluster.ElasticsearchCluster; @@ -52,7 +53,7 @@ public class GeoIpReindexedIT extends ParameterizedFullClusterRestartTestCase { // e.g. use ./gradlew -Dtests.jvm.argline="-Dgeoip_test_with_security=false" ":modules:ingest-geoip:qa:full-cluster-restart:check" // to set this to false, if you so desire - private static final boolean useSecurity = Boolean.parseBoolean(System.getProperty("geoip_test_with_security", "true")); + private static final boolean useSecurity = Booleans.parseBoolean(System.getProperty("geoip_test_with_security", "true")); private static final ElasticsearchCluster cluster = ElasticsearchCluster.local() .distribution(DistributionType.DEFAULT) diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngine.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngine.java index e7b1727791510..3f72fbca847e2 100644 --- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngine.java +++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngine.java @@ -21,6 +21,7 @@ import org.elasticsearch.common.text.SizeLimitingStringWriter; import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.common.unit.MemorySizeValue; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.script.GeneralScriptException; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptContext; @@ -107,12 +108,19 @@ private static CustomMustacheFactory createMustacheFactory(Map o } if (options.containsKey(DETECT_MISSING_PARAMS_OPTION)) { - builder.detectMissingParams(Boolean.valueOf(options.get(DETECT_MISSING_PARAMS_OPTION))); + builder.detectMissingParams(getDetectMissingParamsOption(options)); } return builder.build(); } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean getDetectMissingParamsOption(Map options) { + return Boolean.valueOf(options.get(DETECT_MISSING_PARAMS_OPTION)); + } + @Override public String getType() { return NAME; diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java index e350a5a1ec1da..841e8a19462c5 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java @@ -11,6 +11,7 @@ import org.elasticsearch.SpecialPermission; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.painless.Compiler.Loader; import org.elasticsearch.painless.lookup.PainlessLookup; import org.elasticsearch.painless.lookup.PainlessLookupBuilder; @@ -414,7 +415,7 @@ private CompilerSettings buildCompilerSettings(Map params) { value = copy.remove(CompilerSettings.PICKY); if (value != null) { - compilerSettings.setPicky(Boolean.parseBoolean(value)); + compilerSettings.setPicky(parseBoolean(value)); } value = copy.remove(CompilerSettings.INITIAL_CALL_SITE_DEPTH); @@ -439,6 +440,13 @@ private CompilerSettings buildCompilerSettings(Map params) { return compilerSettings; } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean parseBoolean(String value) { + return Boolean.parseBoolean(value); + } + private static ScriptException convertToScriptException(String scriptSource, Throwable t) { // create a script stack: this is just the script portion List scriptStack = new ArrayList<>(); diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/NettyAllocator.java b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/NettyAllocator.java index e8bd5514947d6..267d8091b08ee 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/NettyAllocator.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/NettyAllocator.java @@ -26,6 +26,7 @@ import org.elasticsearch.common.util.PageCacheRecycler; import org.elasticsearch.core.Assertions; import org.elasticsearch.core.Booleans; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.monitor.jvm.JvmInfo; import java.util.Arrays; @@ -55,7 +56,7 @@ public class NettyAllocator { + ", factors={es.unsafe.use_netty_default_allocator=true}]"; } else { final long heapSizeInBytes = JvmInfo.jvmInfo().getMem().getHeapMax().getBytes(); - final boolean g1gcEnabled = Boolean.parseBoolean(JvmInfo.jvmInfo().useG1GC()); + final boolean g1gcEnabled = useG1GC(); final long g1gcRegionSizeInBytes = JvmInfo.jvmInfo().getG1RegionSize(); final boolean g1gcRegionSizeIsKnown = g1gcRegionSizeInBytes != -1; ByteSizeValue heapSize = ByteSizeValue.ofBytes(heapSizeInBytes); @@ -169,6 +170,13 @@ public int pageSize() { }; } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean useG1GC() { + return Boolean.parseBoolean(JvmInfo.jvmInfo().useG1GC()); + } + public static void logAllocatorDescriptionIfNeeded() { if (descriptionLogged.compareAndSet(false, true)) { logger.info("creating NettyAllocator with the following configs: " + NettyAllocator.getAllocatorDescription()); diff --git a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java index 1f30505e00104..d1a44235a3ced 100644 --- a/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java +++ b/qa/lucene-index-compatibility/src/javaRestTest/java/org/elasticsearch/lucene/AbstractIndexCompatibilityTestCase.java @@ -21,6 +21,7 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.test.XContentTestUtils; @@ -330,7 +331,7 @@ protected static List indexBlocks(String indexName) throws Excepti @SuppressWarnings("unchecked") protected static void assertIndexSetting(String indexName, Setting setting, Matcher matcher) throws Exception { var indexSettings = getIndexSettingsAsMap(indexName); - assertThat(Boolean.parseBoolean((String) indexSettings.get(setting.getKey())), matcher); + assertThat(Booleans.parseBoolean((String) indexSettings.get(setting.getKey()), false), matcher); } protected static ResponseException expectUpdateIndexSettingsThrows(String indexName, Settings.Builder settings) { diff --git a/qa/packaging/src/test/java/org/elasticsearch/packaging/util/ServerUtils.java b/qa/packaging/src/test/java/org/elasticsearch/packaging/util/ServerUtils.java index ea71308b11940..2b1c9ed140ee3 100644 --- a/qa/packaging/src/test/java/org/elasticsearch/packaging/util/ServerUtils.java +++ b/qa/packaging/src/test/java/org/elasticsearch/packaging/util/ServerUtils.java @@ -26,6 +26,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.packaging.test.PackagingTestCase; import java.io.IOException; @@ -82,7 +83,7 @@ public static void waitForElasticsearch(Installation installation) throws Except .lines() .filter(each -> each.startsWith("xpack.security.enabled")) .findFirst() - .map(line -> Boolean.parseBoolean(line.split("=")[1])) + .map(line -> Booleans.parseBoolean(line.split("=")[1])) // security is enabled by default, the only way for it to be disabled is to be explicitly disabled .orElse(true); } diff --git a/qa/rolling-upgrade-legacy/src/test/java/org/elasticsearch/upgrades/AbstractRollingTestCase.java b/qa/rolling-upgrade-legacy/src/test/java/org/elasticsearch/upgrades/AbstractRollingTestCase.java index e0ce4e47212c9..5f03c5b9a1d74 100644 --- a/qa/rolling-upgrade-legacy/src/test/java/org/elasticsearch/upgrades/AbstractRollingTestCase.java +++ b/qa/rolling-upgrade-legacy/src/test/java/org/elasticsearch/upgrades/AbstractRollingTestCase.java @@ -29,7 +29,6 @@ public static ClusterType parse(String value) { } protected static final ClusterType CLUSTER_TYPE = ClusterType.parse(System.getProperty("tests.rest.suite")); - protected static final boolean FIRST_MIXED_ROUND = Boolean.parseBoolean(System.getProperty("tests.first_round", "false")); protected static final Version UPGRADE_FROM_VERSION = Version.fromString(System.getProperty("tests.upgrade_from_version")); @Override diff --git a/qa/rolling-upgrade/src/javaRestTest/java/org/elasticsearch/upgrades/FeatureUpgradeIT.java b/qa/rolling-upgrade/src/javaRestTest/java/org/elasticsearch/upgrades/FeatureUpgradeIT.java index faa012adcc139..b85dbf5ab3ce8 100644 --- a/qa/rolling-upgrade/src/javaRestTest/java/org/elasticsearch/upgrades/FeatureUpgradeIT.java +++ b/qa/rolling-upgrade/src/javaRestTest/java/org/elasticsearch/upgrades/FeatureUpgradeIT.java @@ -13,6 +13,7 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.ResponseException; +import org.elasticsearch.core.Booleans; import org.elasticsearch.indices.SystemIndices; import org.elasticsearch.test.XContentTestUtils; import org.junit.BeforeClass; @@ -33,7 +34,7 @@ public FeatureUpgradeIT(@Name("upgradedNodes") int upgradedNodes) { @BeforeClass public static void ensureNotForwardCompatTest() { - assumeFalse("Only supported by bwc tests", Boolean.parseBoolean(System.getProperty("tests.fwc", "false"))); + assumeFalse("Only supported by bwc tests", Booleans.parseBoolean(System.getProperty("tests.fwc", "false"))); } public void testGetFeatureUpgradeStatus() throws Exception { diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/resolve/ResolveIndexAction.java b/server/src/main/java/org/elasticsearch/action/admin/indices/resolve/ResolveIndexAction.java index 6c9e9ddf59e04..67e19f0d4459a 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/resolve/ResolveIndexAction.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/resolve/ResolveIndexAction.java @@ -629,7 +629,7 @@ private static void enrichIndexAbstraction( if (ia.isSystem()) { attributes.add(Attribute.SYSTEM); } - final boolean isFrozen = Boolean.parseBoolean(writeIndex.getSettings().get("index.frozen")); + final boolean isFrozen = writeIndex.getSettings().getAsBoolean("index.frozen", false); if (isFrozen) { attributes.add(Attribute.FROZEN); } diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/LifecycleExecutionState.java b/server/src/main/java/org/elasticsearch/cluster/metadata/LifecycleExecutionState.java index 6397ce3c63b35..77f1135da2505 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/LifecycleExecutionState.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/LifecycleExecutionState.java @@ -11,6 +11,7 @@ import org.elasticsearch.ElasticsearchException; import org.elasticsearch.common.Strings; +import org.elasticsearch.core.SuppressForbidden; import java.util.Collections; import java.util.HashMap; @@ -111,7 +112,7 @@ public static LifecycleExecutionState fromCustomMetadata(Map cus } String isAutoRetryableError = customData.get(IS_AUTO_RETRYABLE_ERROR); if (isAutoRetryableError != null) { - builder.setIsAutoRetryableError(Boolean.parseBoolean(isAutoRetryableError)); + builder.setIsAutoRetryableError(parseIsAutoRetryableError(isAutoRetryableError)); } String failedStepRetryCount = customData.get(FAILED_STEP_RETRY_COUNT); if (failedStepRetryCount != null) { @@ -204,6 +205,13 @@ public static LifecycleExecutionState fromCustomMetadata(Map cus return builder.build(); } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean parseIsAutoRetryableError(String isAutoRetryableError) { + return Boolean.parseBoolean(isAutoRetryableError); + } + /** * Converts this object to an immutable map representation for use with * {@link IndexMetadata.Builder#putCustom(String, Map)}. diff --git a/server/src/main/java/org/elasticsearch/common/network/NetworkUtils.java b/server/src/main/java/org/elasticsearch/common/network/NetworkUtils.java index 061b5da66fb4f..9d91ef960b8a8 100644 --- a/server/src/main/java/org/elasticsearch/common/network/NetworkUtils.java +++ b/server/src/main/java/org/elasticsearch/common/network/NetworkUtils.java @@ -12,6 +12,7 @@ import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.Constants; import org.elasticsearch.core.Predicates; +import org.elasticsearch.core.SuppressForbidden; import java.io.IOException; import java.net.Inet4Address; @@ -44,7 +45,14 @@ private NetworkUtils() {} * @deprecated transition mechanism only */ @Deprecated - static final boolean PREFER_V6 = Boolean.parseBoolean(System.getProperty("java.net.preferIPv6Addresses", "false")); + static final boolean PREFER_V6 = preferIPv6Addresses(); + + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean preferIPv6Addresses() { + return Boolean.parseBoolean(System.getProperty("java.net.preferIPv6Addresses", "false")); + } /** * True if we can bind to a v6 address. Its silly, but for *binding* we have a need to know diff --git a/server/src/main/java/org/elasticsearch/gateway/PersistedClusterStateService.java b/server/src/main/java/org/elasticsearch/gateway/PersistedClusterStateService.java index 0681d2edd0dac..40b46ece4585d 100644 --- a/server/src/main/java/org/elasticsearch/gateway/PersistedClusterStateService.java +++ b/server/src/main/java/org/elasticsearch/gateway/PersistedClusterStateService.java @@ -69,6 +69,7 @@ import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.core.Assertions; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.CheckedFunction; import org.elasticsearch.core.FixForMultiProject; import org.elasticsearch.core.IOUtils; @@ -690,7 +691,7 @@ public OnDiskStateMetadata loadOnDiskStateMetadataFromUserData(Map { static final String STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE = "es.stateless.allow.index.refresh_interval.override"; - private static final boolean IS_OVERRIDE_ALLOWED = Boolean.parseBoolean( + private static final boolean IS_OVERRIDE_ALLOWED = Booleans.parseBoolean( System.getProperty(STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "false") ); diff --git a/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/ES819TSDBDocValuesFormat.java b/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/ES819TSDBDocValuesFormat.java index af86fcf23e612..1a937e75ad5f9 100644 --- a/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/ES819TSDBDocValuesFormat.java +++ b/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/ES819TSDBDocValuesFormat.java @@ -13,6 +13,7 @@ import org.apache.lucene.codecs.DocValuesProducer; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; +import org.elasticsearch.core.SuppressForbidden; import java.io.IOException; @@ -93,7 +94,14 @@ public class ES819TSDBDocValuesFormat extends org.apache.lucene.codecs.DocValues static final String OPTIMIZED_MERGE_ENABLED_NAME = ES819TSDBDocValuesConsumer.class.getName() + ".enableOptimizedMerge"; static { - OPTIMIZED_MERGE_ENABLE_DEFAULT = Boolean.parseBoolean(System.getProperty(OPTIMIZED_MERGE_ENABLED_NAME, Boolean.TRUE.toString())); + OPTIMIZED_MERGE_ENABLE_DEFAULT = getOptimizedMergeEnabledDefault(); + } + + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean getOptimizedMergeEnabledDefault() { + return Boolean.parseBoolean(System.getProperty(OPTIMIZED_MERGE_ENABLED_NAME, Boolean.TRUE.toString())); } final int skipIndexIntervalSize; diff --git a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java index 146164b55f00a..9a31ff42a7c5c 100644 --- a/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java +++ b/server/src/main/java/org/elasticsearch/index/codec/vectors/es818/ES818BinaryQuantizedVectorsFormat.java @@ -26,6 +26,7 @@ import org.apache.lucene.codecs.lucene99.Lucene99FlatVectorsFormat; import org.apache.lucene.index.SegmentReadState; import org.apache.lucene.index.SegmentWriteState; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.index.codec.vectors.OptimizedScalarQuantizer; import java.io.IOException; @@ -87,7 +88,7 @@ */ public class ES818BinaryQuantizedVectorsFormat extends FlatVectorsFormat { - public static final boolean USE_DIRECT_IO = Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "false")); + public static final boolean USE_DIRECT_IO = getUseDirectIO(); public static final String BINARIZED_VECTOR_COMPONENT = "BVEC"; public static final String NAME = "ES818BinaryQuantizedVectorsFormat"; @@ -100,6 +101,13 @@ public class ES818BinaryQuantizedVectorsFormat extends FlatVectorsFormat { static final String VECTOR_DATA_EXTENSION = "veb"; static final int DIRECT_MONOTONIC_BLOCK_SHIFT = 16; + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean getUseDirectIO() { + return Boolean.parseBoolean(System.getProperty("vector.rescoring.directio", "false")); + } + private static final FlatVectorsFormat rawVectorFormat = USE_DIRECT_IO ? new DirectIOLucene99FlatVectorsFormat(FlatVectorScorerUtil.getLucene99FlatVectorsScorer()) : new Lucene99FlatVectorsFormat(FlatVectorScorerUtil.getLucene99FlatVectorsScorer()); diff --git a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index 170ccc2cc7bbb..d5b45eb6de429 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -2736,7 +2736,7 @@ protected IndexWriter createWriter(Directory directory, IndexWriterConfig iwc) t } // with tests.verbose, lucene sets this up: plumb to align with filesystem stream - private static final boolean TESTS_VERBOSE = Boolean.parseBoolean(System.getProperty("tests.verbose")); + private static final boolean TESTS_VERBOSE = Booleans.parseBoolean(System.getProperty("tests.verbose", "false")); private static final boolean SHUFFLE_FORCE_MERGE = Booleans.parseBoolean( System.getProperty("es.shuffle_forced_merge", Boolean.TRUE.toString()) diff --git a/server/src/main/java/org/elasticsearch/index/store/LuceneFilesExtensions.java b/server/src/main/java/org/elasticsearch/index/store/LuceneFilesExtensions.java index 65b3e85d7e7ba..5fe85222e2597 100644 --- a/server/src/main/java/org/elasticsearch/index/store/LuceneFilesExtensions.java +++ b/server/src/main/java/org/elasticsearch/index/store/LuceneFilesExtensions.java @@ -12,6 +12,7 @@ import org.apache.lucene.index.IndexFileNames; import org.elasticsearch.common.util.Maps; import org.elasticsearch.core.Nullable; +import org.elasticsearch.core.SuppressForbidden; import java.util.Collections; import java.util.Map; @@ -94,6 +95,9 @@ public enum LuceneFilesExtensions { * that checks that all encountered file extensions are known to this class. * In the future, we would like to add a proper plugin extension point for this. */ + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) private static boolean allowUnknownLuceneFileExtensions() { return Boolean.parseBoolean(System.getProperty("es.allow_unknown_lucene_file_extensions", "false")); } diff --git a/server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java b/server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java index d5f4b9d14660c..17facfc9cf086 100644 --- a/server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java +++ b/server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java @@ -12,6 +12,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.env.Environment; import org.elasticsearch.plugin.settings.BooleanSetting; import org.elasticsearch.plugin.settings.IntSetting; @@ -46,6 +47,9 @@ public static T create(Settings settings, Class parameterType, Environmen ); } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { assert method.getAnnotations().length == 1; diff --git a/server/src/main/java/org/elasticsearch/search/SearchService.java b/server/src/main/java/org/elasticsearch/search/SearchService.java index 9c228468f1964..af568c7b5d2cb 100644 --- a/server/src/main/java/org/elasticsearch/search/SearchService.java +++ b/server/src/main/java/org/elasticsearch/search/SearchService.java @@ -55,6 +55,7 @@ import org.elasticsearch.core.RefCounted; import org.elasticsearch.core.Releasable; import org.elasticsearch.core.Releasables; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexNotFoundException; @@ -599,7 +600,7 @@ static ActionListener wrapListenerForErrorHandling( ) { final boolean header; if (version.onOrAfter(ERROR_TRACE_IN_TRANSPORT_HEADER) && threadPool.getThreadContext() != null) { - header = Boolean.parseBoolean(threadPool.getThreadContext().getHeaderOrDefault("error_trace", "false")); + header = getErrorTraceHeader(threadPool); } else { header = true; } @@ -628,6 +629,13 @@ static ActionListener wrapListenerForErrorHandling( }); } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean getErrorTraceHeader(ThreadPool threadPool) { + return Boolean.parseBoolean(threadPool.getThreadContext().getHeaderOrDefault("error_trace", "false")); + } + public void executeDfsPhase(ShardSearchRequest request, SearchShardTask task, ActionListener listener) { listener = wrapListenerForErrorHandling( listener, diff --git a/server/src/test/java/org/elasticsearch/common/BooleansTests.java b/server/src/test/java/org/elasticsearch/common/BooleansTests.java index 2b2e8677f8324..d564c62d7bd12 100644 --- a/server/src/test/java/org/elasticsearch/common/BooleansTests.java +++ b/server/src/test/java/org/elasticsearch/common/BooleansTests.java @@ -12,10 +12,7 @@ import org.elasticsearch.core.Booleans; import org.elasticsearch.test.ESTestCase; -import java.util.Locale; - import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; public class BooleansTests extends ESTestCase { private static final String[] NON_BOOLEANS = new String[] { @@ -87,56 +84,10 @@ public void testParseNonBoolean() { } } - public void testIsBooleanLenient() { - String[] booleans = new String[] { "true", "false", "on", "off", "yes", "no", "0", "1" }; - String[] notBooleans = new String[] { "11", "00", "sdfsdfsf", "F", "T" }; - assertThat(Booleans.isBooleanLenient(null, 0, 1), is(false)); - - for (String b : booleans) { - String t = "prefix" + b + "suffix"; - assertTrue( - "failed to recognize [" + b + "] as boolean", - Booleans.isBooleanLenient(t.toCharArray(), "prefix".length(), b.length()) - ); - } - - for (String nb : notBooleans) { - String t = "prefix" + nb + "suffix"; - assertFalse("recognized [" + nb + "] as boolean", Booleans.isBooleanLenient(t.toCharArray(), "prefix".length(), nb.length())); - } - } - public void testParseBooleanLenient() { - assertThat(Booleans.parseBooleanLenient(randomFrom("true", "on", "yes", "1"), randomBoolean()), is(true)); - assertThat(Booleans.parseBooleanLenient(randomFrom("false", "off", "no", "0"), randomBoolean()), is(false)); - assertThat(Booleans.parseBooleanLenient(randomFrom("true", "on", "yes").toUpperCase(Locale.ROOT), randomBoolean()), is(true)); + assertThat(Booleans.parseBooleanLenient(randomFrom("true", "TRUE", "True"), randomBoolean()), is(true)); + assertThat(Booleans.parseBooleanLenient(randomFrom("false", "FALSE", "anything"), randomBoolean()), is(false)); assertThat(Booleans.parseBooleanLenient(null, false), is(false)); assertThat(Booleans.parseBooleanLenient(null, true), is(true)); - - assertThat( - Booleans.parseBooleanLenient(randomFrom("true", "on", "yes", "1"), randomFrom(Boolean.TRUE, Boolean.FALSE, null)), - is(true) - ); - assertThat( - Booleans.parseBooleanLenient(randomFrom("false", "off", "no", "0"), randomFrom(Boolean.TRUE, Boolean.FALSE, null)), - is(false) - ); - assertThat( - Booleans.parseBooleanLenient( - randomFrom("true", "on", "yes").toUpperCase(Locale.ROOT), - randomFrom(Boolean.TRUE, Boolean.FALSE, null) - ), - is(true) - ); - assertThat(Booleans.parseBooleanLenient(null, Boolean.FALSE), is(false)); - assertThat(Booleans.parseBooleanLenient(null, Boolean.TRUE), is(true)); - assertThat(Booleans.parseBooleanLenient(null, null), nullValue()); - - char[] chars = randomFrom("true", "on", "yes", "1").toCharArray(); - assertThat(Booleans.parseBooleanLenient(chars, 0, chars.length, randomBoolean()), is(true)); - chars = randomFrom("false", "off", "no", "0").toCharArray(); - assertThat(Booleans.parseBooleanLenient(chars, 0, chars.length, randomBoolean()), is(false)); - chars = randomFrom("true", "on", "yes").toUpperCase(Locale.ROOT).toCharArray(); - assertThat(Booleans.parseBooleanLenient(chars, 0, chars.length, randomBoolean()), is(true)); } } diff --git a/server/src/test/java/org/elasticsearch/index/IndexSettingsOverrideTests.java b/server/src/test/java/org/elasticsearch/index/IndexSettingsOverrideTests.java index 5f580914efab2..b033db8507cbb 100644 --- a/server/src/test/java/org/elasticsearch/index/IndexSettingsOverrideTests.java +++ b/server/src/test/java/org/elasticsearch/index/IndexSettingsOverrideTests.java @@ -11,6 +11,7 @@ import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.TimeValue; import org.elasticsearch.test.ESTestCase; @@ -28,7 +29,7 @@ public static IndexMetadata newIndexMeta(String name, Settings indexSettings) { public void testStatelessMinRefreshIntervalOverride() { assumeTrue( "This test depends on system property configured in build.gradle", - Boolean.parseBoolean( + Booleans.parseBoolean( System.getProperty(IndexSettings.RefreshIntervalValidator.STATELESS_ALLOW_INDEX_REFRESH_INTERVAL_OVERRIDE, "false") ) ); diff --git a/server/src/test/java/org/elasticsearch/index/engine/RecoverySourcePruneMergePolicyTests.java b/server/src/test/java/org/elasticsearch/index/engine/RecoverySourcePruneMergePolicyTests.java index b8600842effe4..1bd7c2bb80d2e 100644 --- a/server/src/test/java/org/elasticsearch/index/engine/RecoverySourcePruneMergePolicyTests.java +++ b/server/src/test/java/org/elasticsearch/index/engine/RecoverySourcePruneMergePolicyTests.java @@ -34,6 +34,7 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.util.NullInfoStream; import org.apache.lucene.util.InfoStream; +import org.elasticsearch.core.Booleans; import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.test.ESTestCase; @@ -182,7 +183,7 @@ public void testPruneSome() throws IOException { Set collect = document.getFields().stream().map(IndexableField::name).collect(Collectors.toSet()); assertTrue(collect.contains("source")); assertTrue(collect.contains("even")); - boolean isEven = Boolean.parseBoolean(document.getField("even").stringValue()); + boolean isEven = Booleans.parseBoolean(document.getField("even").stringValue()); if (isEven) { assertTrue(collect.contains(IdFieldMapper.NAME)); assertThat(collect.contains("extra_source"), equalTo(syntheticRecoverySource == false)); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/CompletionFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/CompletionFieldMapperTests.java index a8d99dafd96b5..995127e2b3593 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/CompletionFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/CompletionFieldMapperTests.java @@ -32,6 +32,7 @@ import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.common.util.BigArrays; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.IndexVersions; @@ -242,8 +243,8 @@ public void testTypeParsing() throws Exception { Map configMap = (Map) serializedMap.get("field"); assertThat(configMap.get("analyzer").toString(), is("simple")); assertThat(configMap.get("search_analyzer").toString(), is("standard")); - assertThat(Boolean.valueOf(configMap.get("preserve_separators").toString()), is(false)); - assertThat(Boolean.valueOf(configMap.get("preserve_position_increments").toString()), is(true)); + assertThat(Booleans.parseBoolean(configMap.get("preserve_separators").toString()), is(false)); + assertThat(Booleans.parseBoolean(configMap.get("preserve_position_increments").toString()), is(true)); assertThat(Integer.valueOf(configMap.get("max_input_length").toString()), is(14)); } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/XContentDataHelperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/XContentDataHelperTests.java index ecf59b611080b..7d66db422da61 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/XContentDataHelperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/XContentDataHelperTests.java @@ -14,6 +14,7 @@ import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentFactory; @@ -68,7 +69,7 @@ private String encodeAndDecodeCustom(XContentType type, Object value) throws IOE public void testBoolean() throws IOException { boolean b = randomBoolean(); - assertEquals(b, Boolean.parseBoolean(encodeAndDecode(b))); + assertEquals(b, Booleans.parseBoolean(encodeAndDecode(b))); } public void testString() throws IOException { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/blockloader/BooleanFieldBlockLoaderTests.java b/server/src/test/java/org/elasticsearch/index/mapper/blockloader/BooleanFieldBlockLoaderTests.java index 4d20576f23a33..2525509440713 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/blockloader/BooleanFieldBlockLoaderTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/blockloader/BooleanFieldBlockLoaderTests.java @@ -9,6 +9,7 @@ package org.elasticsearch.index.mapper.blockloader; +import org.elasticsearch.core.Booleans; import org.elasticsearch.datageneration.FieldType; import org.elasticsearch.index.mapper.BlockLoaderTestCase; @@ -26,7 +27,7 @@ public BooleanFieldBlockLoaderTests(Params params) { protected Object expected(Map fieldMapping, Object value, TestContext testContext) { var nullValue = switch (fieldMapping.get("null_value")) { case Boolean b -> b; - case String s -> Boolean.parseBoolean(s); + case String s -> Booleans.parseBoolean(s); case null -> null; default -> throw new IllegalStateException("Unexpected null_value format"); }; diff --git a/test/framework/src/main/java/org/elasticsearch/datageneration/matchers/source/FieldSpecificMatcher.java b/test/framework/src/main/java/org/elasticsearch/datageneration/matchers/source/FieldSpecificMatcher.java index aa7b1e203c89e..7adf98ef9d6ee 100644 --- a/test/framework/src/main/java/org/elasticsearch/datageneration/matchers/source/FieldSpecificMatcher.java +++ b/test/framework/src/main/java/org/elasticsearch/datageneration/matchers/source/FieldSpecificMatcher.java @@ -12,6 +12,7 @@ import org.apache.lucene.sandbox.document.HalfFloatPoint; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.datageneration.matchers.MatchResult; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.xcontent.XContentBuilder; @@ -389,7 +390,7 @@ class BooleanMatcher extends GenericMappingAwareMatcher { Object convert(Object value, Object nullValue) { Boolean nullValueBool = null; if (nullValue != null) { - nullValueBool = nullValue instanceof Boolean b ? b : Boolean.parseBoolean((String) nullValue); + nullValueBool = nullValue instanceof Boolean b ? b : Booleans.parseBoolean((String) nullValue); } if (value == null) { @@ -401,7 +402,7 @@ Object convert(Object value, Object nullValue) { } if (value instanceof String s) { try { - return Boolean.parseBoolean(s); + return Booleans.parseBoolean(s); } catch (Exception e) { // malformed return value; diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java index 884c1caf85488..dbf98c537a606 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESIntegTestCase.java @@ -114,6 +114,7 @@ import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.common.xcontent.ChunkedToXContent; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.FixForMultiProject; import org.elasticsearch.core.IOUtils; import org.elasticsearch.core.Nullable; @@ -2780,7 +2781,7 @@ public static String resolveCustomDataPath(String index) { } public static boolean inFipsJvm() { - return Boolean.parseBoolean(System.getProperty(FIPS_SYSPROP)); + return Booleans.parseBoolean(System.getProperty(FIPS_SYSPROP, "false")); } protected void restartNodesOnBrokenClusterState(ClusterState.Builder clusterStateBuilder) throws Exception { diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index ffc0e00909c81..6bbd7c4f72a26 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -2200,7 +2200,7 @@ private static boolean isUnusableLocale() { } public static boolean inFipsJvm() { - return Boolean.parseBoolean(System.getProperty(FIPS_SYSPROP)); + return Booleans.parseBoolean(System.getProperty(FIPS_SYSPROP, "false")); } /* diff --git a/test/framework/src/main/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java b/test/framework/src/main/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java index c187c9b822a86..dbe057427074b 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java +++ b/test/framework/src/main/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java @@ -14,6 +14,7 @@ import org.apache.logging.log4j.Logger; import org.apache.lucene.util.Constants; import org.elasticsearch.common.Strings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.ESTestCase; @@ -52,7 +53,7 @@ public void testFinished(Description description) throws Exception { * Are we in the integ test phase? */ static boolean inVerifyPhase() { - return Boolean.parseBoolean(System.getProperty("tests.verify.phase")); + return Booleans.parseBoolean(System.getProperty("tests.verify.phase", "false")); } @Override @@ -65,7 +66,7 @@ public void testFailure(Failure failure) throws Exception { final String gradlew = Constants.WINDOWS ? "gradlew" : "./gradlew"; final StringBuilder b = new StringBuilder("REPRODUCE WITH: " + gradlew + " "); String task = System.getProperty("tests.task"); - boolean isBwcTest = Boolean.parseBoolean(System.getProperty("tests.bwc", "false")) + boolean isBwcTest = Booleans.parseBoolean(System.getProperty("tests.bwc", "false")) || System.getProperty("tests.bwc.main.version") != null || System.getProperty("tests.bwc.refspec.main") != null; @@ -106,7 +107,7 @@ public void testFailure(Failure failure) throws Exception { } private static boolean isRestApiCompatibilityTest() { - return Boolean.parseBoolean(System.getProperty("tests.restCompat", "false")); + return Booleans.parseBoolean(System.getProperty("tests.restCompat", "false")); } @SuppressForbidden(reason = "printing repro info") @@ -183,7 +184,7 @@ private ReproduceErrorMessageBuilder appendESProperties() { if (System.getProperty("tests.jvm.argline") != null && System.getProperty("tests.jvm.argline").isEmpty() == false) { appendOpt("tests.jvm.argline", "\"" + System.getProperty("tests.jvm.argline") + "\""); } - if (Boolean.parseBoolean(System.getProperty("build.snapshot", "true")) == false) { + if (Booleans.parseBoolean(System.getProperty("build.snapshot", "true")) == false) { appendOpt("license.key", "x-pack/license-tools/src/test/resources/public.key"); } appendOpt("tests.locale", Locale.getDefault().toLanguageTag()); diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java index 04c2ff20627a7..0a7b4696ff457 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java @@ -61,6 +61,7 @@ import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.CharArrays; import org.elasticsearch.core.CheckedFunction; import org.elasticsearch.core.CheckedRunnable; @@ -369,7 +370,7 @@ public static void initializeProjectIds() { // The active project-id is slightly longer, and has a fixed prefix so that it's easier to pick in error messages etc. activeProject = "active00" + randomAlphaOfLength(8).toLowerCase(Locale.ROOT); extraProjects = randomSet(1, 3, () -> randomAlphaOfLength(12).toLowerCase(Locale.ROOT)); - multiProjectEnabled = Boolean.parseBoolean(System.getProperty("tests.multi_project.enabled")); + multiProjectEnabled = Booleans.parseBoolean(System.getProperty("tests.multi_project.enabled", "false")); } @Before diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestFeatureService.java b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestFeatureService.java index e2a24eac6f8ab..4c23c05ddda3c 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestFeatureService.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestFeatureService.java @@ -10,6 +10,7 @@ package org.elasticsearch.test.rest; import org.elasticsearch.Version; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.PathUtils; import org.elasticsearch.core.Strings; import org.elasticsearch.core.SuppressForbidden; @@ -109,7 +110,7 @@ public boolean clusterHasFeature(String featureId, boolean any) { } private static boolean isRestApiCompatibilityTest() { - return Boolean.parseBoolean(System.getProperty("tests.restCompat", "false")); + return Booleans.parseBoolean(System.getProperty("tests.restCompat", "false")); } public static boolean hasFeatureMetadata() { diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PredictionFieldType.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PredictionFieldType.java index 5a34efcc449ce..278693eff1c4b 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PredictionFieldType.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/PredictionFieldType.java @@ -11,6 +11,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; +import org.elasticsearch.core.Booleans; import java.io.IOException; import java.util.Locale; @@ -61,7 +62,7 @@ public Object transformPredictedValue(Double value, String stringRep) { // do nothing, allow fall through to final fromDouble } } else if (isBoolQuickCheck(stringRep)) { // if we start with t/f case insensitive, it indicates boolean string - return Boolean.parseBoolean(stringRep); + return Booleans.parseBooleanLenient(stringRep, false); } return fromDouble(value); case NUMBER: diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/GetApiKeyRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/GetApiKeyRequestTests.java index e9ec18f2d5349..07bce40a31e4c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/GetApiKeyRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/GetApiKeyRequestTests.java @@ -8,6 +8,7 @@ package org.elasticsearch.xpack.core.security.action.apikey; import org.elasticsearch.action.ActionRequestValidationException; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.ESTestCase; import java.io.IOException; @@ -83,7 +84,7 @@ public void testRequestValidationFailureScenarios() throws IOException { .userName(inputs[caseNo][1]) .apiKeyId(inputs[caseNo][2]) .apiKeyName(inputs[caseNo][3]) - .ownedByAuthenticatedUser(Boolean.parseBoolean(inputs[caseNo][4])) + .ownedByAuthenticatedUser(Booleans.parseBoolean(inputs[caseNo][4])) .withProfileUid(randomBoolean()) .build(); ActionRequestValidationException ve = request.validate(); diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/InvalidateApiKeyRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/InvalidateApiKeyRequestTests.java index adfbd49452dd9..752118af8f482 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/InvalidateApiKeyRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/apikey/InvalidateApiKeyRequestTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.io.stream.InputStreamStreamInput; import org.elasticsearch.common.io.stream.OutputStreamStreamOutput; import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.ESTestCase; import java.io.ByteArrayInputStream; @@ -105,7 +106,7 @@ class Dummy extends LegacyActionRequest { user = a[1]; apiKeyId = a[2]; apiKeyName = a[3]; - ownedByAuthenticatedUser = Boolean.parseBoolean(a[4]); + ownedByAuthenticatedUser = Booleans.parseBoolean(a[4]); } @Override diff --git a/x-pack/plugin/eql/qa/correctness/src/javaRestTest/java/org/elasticsearch/xpack/eql/EsEQLCorrectnessIT.java b/x-pack/plugin/eql/qa/correctness/src/javaRestTest/java/org/elasticsearch/xpack/eql/EsEQLCorrectnessIT.java index 478e2f93db25f..e46082797ecfd 100644 --- a/x-pack/plugin/eql/qa/correctness/src/javaRestTest/java/org/elasticsearch/xpack/eql/EsEQLCorrectnessIT.java +++ b/x-pack/plugin/eql/qa/correctness/src/javaRestTest/java/org/elasticsearch/xpack/eql/EsEQLCorrectnessIT.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.junit.annotations.TestLogging; import org.elasticsearch.test.rest.ESRestTestCase; import org.elasticsearch.test.rest.ObjectPath; @@ -133,7 +134,7 @@ public static Iterable parameters() throws Exception { // To enable test of subqueries (filtering) results: -Dtests.eql_correctness_debug=true @SuppressWarnings("unchecked") public void test() throws Exception { - boolean debugMode = Boolean.parseBoolean(System.getProperty("tests.eql_correctness_debug", "false")); + boolean debugMode = Booleans.parseBoolean(System.getProperty("tests.eql_correctness_debug", "false")); int queryNo = spec.queryNo(); if (debugMode) { diff --git a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java index 649c94b3ebf94..1321fbd172a50 100644 --- a/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java +++ b/x-pack/plugin/esql/compute/gen/src/main/java/org/elasticsearch/compute/gen/ConsumeProcessor.java @@ -23,7 +23,7 @@ import javax.lang.model.element.TypeElement; /** - * Consumes the "Nullable" and "Inject" annotations and does nothing with them + * Consumes the "Nullable", "Inject" and "SuppressForbidden" annotations and does nothing with them * to prevent warnings when running annotation processors. */ public class ConsumeProcessor implements Processor { @@ -38,6 +38,7 @@ public Set getSupportedAnnotationTypes() { "org.elasticsearch.xpack.esql.SupportsObservabilityTier", "org.elasticsearch.core.Nullable", "org.elasticsearch.injection.guice.Inject", + "org.elasticsearch.core.SuppressForbidden", "org.elasticsearch.xpack.esql.expression.function.FunctionInfo", "org.elasticsearch.xpack.esql.expression.function.Param", "org.elasticsearch.xpack.esql.expression.function.MapParam", diff --git a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java index 79ff6642a5ac3..2bd5cc95dd804 100644 --- a/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java +++ b/x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/lucene/read/ValueSourceReaderTypeConversionTests.java @@ -67,6 +67,7 @@ import org.elasticsearch.compute.test.TestBlockFactory; import org.elasticsearch.compute.test.TestDriverFactory; import org.elasticsearch.compute.test.TestResultPageSinkOperator; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.IOUtils; import org.elasticsearch.core.Releasables; import org.elasticsearch.core.TimeValue; @@ -1915,7 +1916,7 @@ void appendValue(Block.Builder builder, Boolean value) { @Override Boolean evalValue(BytesRefBlock container, int index, BytesRef scratchPad) { - return Boolean.parseBoolean(container.getBytesRef(index, scratchPad).utf8ToString()); + return Booleans.parseBoolean(container.getBytesRef(index, scratchPad).utf8ToString()); } } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java index 60df31b1ab715..fd5b57d3ca77a 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java @@ -17,6 +17,7 @@ import org.elasticsearch.common.logging.ESLogMessage; import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.TimeValue; import org.elasticsearch.xpack.esql.MockAppender; import org.elasticsearch.xpack.esql.VerificationException; @@ -195,7 +196,7 @@ private static void testAllLevels( assertThat(msg.get(ELASTICSEARCH_QUERYLOG_QUERY), is(query)); assertThat(appender.getLastEventAndReset().getLevel(), equalTo(logLevel.getKey())); - boolean success = Boolean.valueOf(msg.get(ELASTICSEARCH_QUERYLOG_SUCCESS)); + boolean success = Booleans.parseBoolean(msg.get(ELASTICSEARCH_QUERYLOG_SUCCESS)); assertThat(success, is(expectedException == null)); if (expectedErrorMsg == null) { assertThat(msg.get(ELASTICSEARCH_QUERYLOG_ERROR_MESSAGE), is(nullValue())); diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java index 18fa0861f5573..fe9e7d77c9078 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java @@ -21,6 +21,7 @@ import org.elasticsearch.compute.data.AggregateMetricDoubleBlockBuilder.Metric; import org.elasticsearch.compute.data.DoubleBlock; import org.elasticsearch.compute.data.IntBlock; +import org.elasticsearch.core.Booleans; import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.json.JsonXContent; @@ -600,7 +601,7 @@ public static BytesRef numericBooleanToString(Object field) { } public static boolean stringToBoolean(String field) { - return Boolean.parseBoolean(field); + return Booleans.parseBooleanLenient(field, false); } public static int stringToInt(String field) { diff --git a/x-pack/plugin/ilm/qa/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/ilm/TimeSeriesDataStreamsIT.java b/x-pack/plugin/ilm/qa/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/ilm/TimeSeriesDataStreamsIT.java index 2dff9c3bd0617..b0fe91effc7a3 100644 --- a/x-pack/plugin/ilm/qa/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/ilm/TimeSeriesDataStreamsIT.java +++ b/x-pack/plugin/ilm/qa/multi-node/src/javaRestTest/java/org/elasticsearch/xpack/ilm/TimeSeriesDataStreamsIT.java @@ -14,6 +14,7 @@ import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.Template; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.engine.EngineConfig; import org.elasticsearch.test.rest.ESRestTestCase; @@ -85,7 +86,7 @@ public void testRolloverAction() throws Exception { final var backingIndices = getDataStreamBackingIndexNames(dataStream); assertEquals(2, backingIndices.size()); try { - assertTrue(Boolean.parseBoolean((String) getIndexSettingsAsMap(backingIndices.getLast()).get("index.hidden"))); + assertTrue(Booleans.parseBoolean((String) getIndexSettingsAsMap(backingIndices.getLast()).get("index.hidden"))); assertEquals(PhaseCompleteStep.finalStep("hot").getKey(), getStepKeyForIndex(client(), backingIndices.getFirst())); } catch (ResponseException e) { // These API calls may hit different nodes and they might see slightly different versions of the cluster state, diff --git a/x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/ReindexDatastreamIndexTransportActionIT.java b/x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/ReindexDatastreamIndexTransportActionIT.java index f213551a51e12..d0ed7954d37f7 100644 --- a/x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/ReindexDatastreamIndexTransportActionIT.java +++ b/x-pack/plugin/migrate/src/internalClusterTest/java/org/elasticsearch/xpack/migrate/action/ReindexDatastreamIndexTransportActionIT.java @@ -37,6 +37,7 @@ import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.time.FormatNames; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.TimeValue; import org.elasticsearch.datastreams.DataStreamsPlugin; import org.elasticsearch.index.Index; @@ -72,7 +73,6 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import static java.lang.Boolean.parseBoolean; import static org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.DEFAULT_TIMESTAMP_FIELD; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount; @@ -376,9 +376,9 @@ public void testReadOnlyBlocksNotAddedBack() { ).getDestIndex(); var settingsResponse = safeGet(indicesAdmin().getSettings(new GetSettingsRequest(TEST_REQUEST_TIMEOUT).indices(destIndex))); - assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY))); - assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE))); - assertFalse(parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_BLOCKS_WRITE))); + assertFalse(Booleans.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY), false)); + assertFalse(Booleans.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_READ_ONLY_ALLOW_DELETE), false)); + assertFalse(Booleans.parseBoolean(settingsResponse.getSetting(destIndex, IndexMetadata.SETTING_BLOCKS_WRITE), false)); cleanupMetadataBlocks(destIndex); } diff --git a/x-pack/plugin/repositories-metering-api/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/repositories/metering/s3/S3RepositoriesMeteringIT.java b/x-pack/plugin/repositories-metering-api/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/repositories/metering/s3/S3RepositoriesMeteringIT.java index b3f1d9fb0b6cf..7c389473771c3 100644 --- a/x-pack/plugin/repositories-metering-api/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/repositories/metering/s3/S3RepositoriesMeteringIT.java +++ b/x-pack/plugin/repositories-metering-api/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/repositories/metering/s3/S3RepositoriesMeteringIT.java @@ -9,6 +9,7 @@ import fixture.s3.S3HttpFixture; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.distribution.DistributionType; import org.elasticsearch.xpack.repositories.metering.AbstractRepositoriesMeteringAPIRestTestCase; @@ -21,7 +22,7 @@ public class S3RepositoriesMeteringIT extends AbstractRepositoriesMeteringAPIRestTestCase { - static final boolean USE_FIXTURE = Boolean.parseBoolean(System.getProperty("tests.use.fixture", "true")); + static final boolean USE_FIXTURE = Booleans.parseBoolean(System.getProperty("tests.use.fixture", "true")); public static final S3HttpFixture s3Fixture = new S3HttpFixture(USE_FIXTURE); diff --git a/x-pack/plugin/searchable-snapshots/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/searchablesnapshots/s3/S3SearchableSnapshotsIT.java b/x-pack/plugin/searchable-snapshots/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/searchablesnapshots/s3/S3SearchableSnapshotsIT.java index 93ac3df92f47b..89d8e223964cc 100644 --- a/x-pack/plugin/searchable-snapshots/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/searchablesnapshots/s3/S3SearchableSnapshotsIT.java +++ b/x-pack/plugin/searchable-snapshots/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/searchablesnapshots/s3/S3SearchableSnapshotsIT.java @@ -9,6 +9,7 @@ import fixture.s3.S3HttpFixture; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.distribution.DistributionType; import org.elasticsearch.xpack.searchablesnapshots.AbstractSearchableSnapshotsRestTestCase; @@ -20,7 +21,7 @@ import static org.hamcrest.Matchers.not; public class S3SearchableSnapshotsIT extends AbstractSearchableSnapshotsRestTestCase { - static final boolean USE_FIXTURE = Boolean.parseBoolean(System.getProperty("tests.use.fixture", "true")); + static final boolean USE_FIXTURE = Booleans.parseBoolean(System.getProperty("tests.use.fixture", "true")); public static final S3HttpFixture s3Fixture = new S3HttpFixture(USE_FIXTURE); diff --git a/x-pack/plugin/security/qa/multi-cluster/src/javaRestTest/java/org/elasticsearch/xpack/remotecluster/RemoteClusterSecurityRestIT.java b/x-pack/plugin/security/qa/multi-cluster/src/javaRestTest/java/org/elasticsearch/xpack/remotecluster/RemoteClusterSecurityRestIT.java index 9c9a2f79d34ca..ecdf2c0f3767d 100644 --- a/x-pack/plugin/security/qa/multi-cluster/src/javaRestTest/java/org/elasticsearch/xpack/remotecluster/RemoteClusterSecurityRestIT.java +++ b/x-pack/plugin/security/qa/multi-cluster/src/javaRestTest/java/org/elasticsearch/xpack/remotecluster/RemoteClusterSecurityRestIT.java @@ -18,6 +18,7 @@ import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.Strings; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchResponseUtils; @@ -647,7 +648,7 @@ public void testNodesInfo() throws IOException { // remote cluster is not reported in transport profiles assertThat(ObjectPath.eval("transport.profiles", node), anEmptyMap()); - if (Boolean.parseBoolean(ObjectPath.eval("settings.remote_cluster_server.enabled", node))) { + if (Booleans.parseBoolean(ObjectPath.eval("settings.remote_cluster_server.enabled", node))) { numberOfRemoteClusterServerNodes += 1; final List boundAddresses = ObjectPath.eval("remote_cluster_server.bound_address", node); assertThat(boundAddresses, notNullValue()); diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/esnative/tool/SetupPasswordTool.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/esnative/tool/SetupPasswordTool.java index be7a997741372..63729a7675e2e 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/esnative/tool/SetupPasswordTool.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/esnative/tool/SetupPasswordTool.java @@ -453,8 +453,8 @@ private XPackSecurityFeatureConfig getXPackSecurityConfig(Terminal terminal) thr Map featureInfo = (Map) features.get("security"); if (featureInfo != null) { xPackSecurityFeatureConfig = new XPackSecurityFeatureConfig( - Boolean.parseBoolean(featureInfo.get("available").toString()), - Boolean.parseBoolean(featureInfo.get("enabled").toString()) + Booleans.parseBoolean(featureInfo.get("available").toString()), + Booleans.parseBoolean(featureInfo.get("enabled").toString()) ); return xPackSecurityFeatureConfig; } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/jwt/JwtRealmSettingsTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/jwt/JwtRealmSettingsTests.java index dd32c29ea51d1..4b74bf7c76110 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/jwt/JwtRealmSettingsTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/jwt/JwtRealmSettingsTests.java @@ -10,6 +10,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.Strings; import org.elasticsearch.core.TimeValue; import org.elasticsearch.xpack.core.security.authc.RealmConfig; @@ -233,7 +234,7 @@ public void testPopulateUserMetadata() { final Settings settings = Settings.builder().put(settingKey, acceptedValue).build(); final RealmConfig realmConfig = buildRealmConfig(JwtRealmSettings.TYPE, realmName, settings, 0); final Boolean actualValue = realmConfig.getSetting(setting); - assertThat(actualValue, equalTo(Boolean.valueOf(acceptedValue))); + assertThat(actualValue, equalTo(Booleans.parseBoolean(acceptedValue))); } } diff --git a/x-pack/plugin/shutdown/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java b/x-pack/plugin/shutdown/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java index 7de20fb95cd85..e991f7f6406d7 100644 --- a/x-pack/plugin/shutdown/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java +++ b/x-pack/plugin/shutdown/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java @@ -9,6 +9,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.rest.ESRestTestCase; import org.elasticsearch.xpack.test.SecuritySettingsSourceField; @@ -37,7 +38,7 @@ public static ClusterType parse(String value) { } protected static final ClusterType CLUSTER_TYPE = ClusterType.parse(System.getProperty("tests.rest.suite")); - protected static final boolean FIRST_MIXED_ROUND = Boolean.parseBoolean(System.getProperty("tests.first_round", "false")); + protected static final boolean FIRST_MIXED_ROUND = Booleans.parseBoolean(System.getProperty("tests.first_round", "false")); @Override protected Settings restClientSettings() { diff --git a/x-pack/plugin/slm/src/test/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTaskTests.java b/x-pack/plugin/slm/src/test/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTaskTests.java index 1fb24f59fcd81..6eadd23f4b63c 100644 --- a/x-pack/plugin/slm/src/test/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTaskTests.java +++ b/x-pack/plugin/slm/src/test/java/org/elasticsearch/xpack/slm/SnapshotLifecycleTaskTests.java @@ -29,6 +29,7 @@ import org.elasticsearch.common.settings.ClusterSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.set.Sets; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.Strings; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.shard.ShardId; @@ -206,7 +207,7 @@ public void testCreateSnapshotOnTrigger() throws Exception { assertThat(Arrays.asList(req.indices()), equalTo(policy.getConfig().get("indices"))); } boolean globalState = policy.getConfig().get("include_global_state") == null - || Boolean.parseBoolean((String) policy.getConfig().get("include_global_state")); + || Booleans.parseBoolean((String) policy.getConfig().get("include_global_state")); assertThat(req.includeGlobalState(), equalTo(globalState)); try { @@ -285,7 +286,7 @@ public void testPartialFailureSnapshot() throws Exception { assertThat(Arrays.asList(req.indices()), equalTo(policy.getConfig().get("indices"))); } boolean globalState = policy.getConfig().get("include_global_state") == null - || Boolean.parseBoolean((String) policy.getConfig().get("include_global_state")); + || Booleans.parseBoolean((String) policy.getConfig().get("include_global_state")); assertThat(req.includeGlobalState(), equalTo(globalState)); long startTime = randomNonNegativeLong(); diff --git a/x-pack/plugin/snapshot-based-recoveries/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/snapshotbasedrecoveries/recovery/S3SnapshotBasedRecoveryIT.java b/x-pack/plugin/snapshot-based-recoveries/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/snapshotbasedrecoveries/recovery/S3SnapshotBasedRecoveryIT.java index a19b39eec1619..8d4b540532aa8 100644 --- a/x-pack/plugin/snapshot-based-recoveries/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/snapshotbasedrecoveries/recovery/S3SnapshotBasedRecoveryIT.java +++ b/x-pack/plugin/snapshot-based-recoveries/qa/s3/src/javaRestTest/java/org/elasticsearch/xpack/snapshotbasedrecoveries/recovery/S3SnapshotBasedRecoveryIT.java @@ -10,6 +10,7 @@ import fixture.s3.S3HttpFixture; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.distribution.DistributionType; import org.junit.ClassRule; @@ -21,7 +22,7 @@ public class S3SnapshotBasedRecoveryIT extends AbstractSnapshotBasedRecoveryRestTestCase { - static final boolean USE_FIXTURE = Boolean.parseBoolean(System.getProperty("tests.use.fixture", "true")); + static final boolean USE_FIXTURE = Booleans.parseBoolean(System.getProperty("tests.use.fixture", "true")); public static final S3HttpFixture s3Fixture = new S3HttpFixture(USE_FIXTURE); diff --git a/x-pack/plugin/snapshot-repo-test-kit/qa/s3/src/javaRestTest/java/org/elasticsearch/repositories/blobstore/testkit/analyze/S3RepositoryAnalysisRestIT.java b/x-pack/plugin/snapshot-repo-test-kit/qa/s3/src/javaRestTest/java/org/elasticsearch/repositories/blobstore/testkit/analyze/S3RepositoryAnalysisRestIT.java index 27a49442eeca6..130c094050bc4 100644 --- a/x-pack/plugin/snapshot-repo-test-kit/qa/s3/src/javaRestTest/java/org/elasticsearch/repositories/blobstore/testkit/analyze/S3RepositoryAnalysisRestIT.java +++ b/x-pack/plugin/snapshot-repo-test-kit/qa/s3/src/javaRestTest/java/org/elasticsearch/repositories/blobstore/testkit/analyze/S3RepositoryAnalysisRestIT.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.regex.Regex; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.ByteSizeValue; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.cluster.local.distribution.DistributionType; import org.junit.ClassRule; @@ -30,7 +31,7 @@ public class S3RepositoryAnalysisRestIT extends AbstractRepositoryAnalysisRestTestCase { - static final boolean USE_FIXTURE = Boolean.parseBoolean(System.getProperty("tests.use.fixture", "true")); + static final boolean USE_FIXTURE = Booleans.parseBoolean(System.getProperty("tests.use.fixture", "true")); private static final Supplier regionSupplier = new DynamicRegionSupplier(); public static final S3HttpFixture s3Fixture = new S3HttpFixture( diff --git a/x-pack/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/TypeConverter.java b/x-pack/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/TypeConverter.java index 80645f963ea40..061773ef0d06a 100644 --- a/x-pack/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/TypeConverter.java +++ b/x-pack/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/TypeConverter.java @@ -7,6 +7,7 @@ package org.elasticsearch.xpack.sql.jdbc; import org.elasticsearch.xpack.sql.proto.StringUtils; +import org.elasticsearch.xpack.sql.proto.core.Booleans; import java.math.BigDecimal; import java.math.BigInteger; @@ -325,7 +326,7 @@ private static Boolean asBoolean(Object val, EsType columnType, String typeStrin return Boolean.valueOf(((Number) val).doubleValue() != 0); case KEYWORD: case TEXT: - return Boolean.valueOf((String) val); + return Booleans.parseBooleanLenient((String) val, false); default: return failConversion(val, columnType, typeString, Boolean.class); } diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/notification/email/attachment/ReportingAttachmentParser.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/notification/email/attachment/ReportingAttachmentParser.java index b43d462b71516..2d5f203034d49 100644 --- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/notification/email/attachment/ReportingAttachmentParser.java +++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/notification/email/attachment/ReportingAttachmentParser.java @@ -18,6 +18,7 @@ import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.core.TimeValue; import org.elasticsearch.xcontent.ObjectParser; import org.elasticsearch.xcontent.ParseField; @@ -251,7 +252,7 @@ public Attachment toAttachment(WatchExecutionContext context, Payload payload, R WARNINGS.forEach((warningKey, defaultWarning) -> { String[] text = response.header(warningKey); if (text != null && text.length > 0) { - if (Boolean.valueOf(text[0])) { + if (parseBoolean(text[0])) { String warning = String.format(Locale.ROOT, defaultWarning, attachment.id()); String customWarning = customWarnings.get(warningKey); if (Strings.isNullOrEmpty(customWarning) == false) { @@ -296,6 +297,13 @@ public Attachment toAttachment(WatchExecutionContext context, Payload payload, R ); } + @SuppressForbidden( + reason = "TODO Deprecate any lenient usage of Boolean#parseBoolean https://github.com/elastic/elasticsearch/issues/128993" + ) + private static boolean parseBoolean(String s) { + return Boolean.valueOf(s); + } + private static void sleep(long sleepMillis, WatchExecutionContext context, ReportingAttachment attachment) { try { Thread.sleep(sleepMillis); diff --git a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java index 0d7de8a1bc9d3..57d54a41d176b 100644 --- a/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java +++ b/x-pack/plugin/watcher/src/test/java/org/elasticsearch/xpack/watcher/rest/action/RestExecuteWatchActionTests.java @@ -8,6 +8,7 @@ import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.common.bytes.BytesArray; +import org.elasticsearch.core.Booleans; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.rest.FakeRestRequest; import org.elasticsearch.test.rest.FakeRestRequest.Builder; @@ -38,9 +39,9 @@ public void testThatFlagsCanBeSpecifiedViaParameters() throws Exception { ); assertThat(request.getId(), is(randomId)); - assertThat(request.isRecordExecution(), is(Boolean.parseBoolean(recordExecution))); - assertThat(request.isIgnoreCondition(), is(Boolean.parseBoolean(ignoreCondition))); - assertThat(request.isDebug(), is(Boolean.parseBoolean(debugCondition))); + assertThat(request.isRecordExecution(), is(Booleans.parseBoolean(recordExecution, false))); + assertThat(request.isIgnoreCondition(), is(Booleans.parseBoolean(ignoreCondition, false))); + assertThat(request.isDebug(), is(Booleans.parseBoolean(debugCondition, false))); } } } diff --git a/x-pack/qa/evil-tests/src/test/java/org/elasticsearch/xpack/security/authc/kerberos/SimpleKdcLdapServer.java b/x-pack/qa/evil-tests/src/test/java/org/elasticsearch/xpack/security/authc/kerberos/SimpleKdcLdapServer.java index 1fba6c90ea6ac..902791c6ec0c6 100644 --- a/x-pack/qa/evil-tests/src/test/java/org/elasticsearch/xpack/security/authc/kerberos/SimpleKdcLdapServer.java +++ b/x-pack/qa/evil-tests/src/test/java/org/elasticsearch/xpack/security/authc/kerberos/SimpleKdcLdapServer.java @@ -17,6 +17,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.elasticsearch.ExceptionsHelper; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.core.TimeValue; import org.elasticsearch.test.ESTestCase; @@ -85,7 +86,7 @@ public SimpleKdcLdapServer(final Path workDir, final String orgName, final Strin @Override @SuppressForbidden(reason = "set or clear system property krb5 debug in kerberos tests") public Boolean run() throws Exception { - boolean oldDebugSetting = Boolean.parseBoolean(System.getProperty("sun.security.krb5.debug")); + boolean oldDebugSetting = Booleans.parseBoolean(System.getProperty("sun.security.krb5.debug", "false")); System.setProperty("sun.security.krb5.debug", Boolean.TRUE.toString()); return oldDebugSetting; } diff --git a/x-pack/qa/kerberos-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authc/kerberos/KerberosAuthenticationIT.java b/x-pack/qa/kerberos-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authc/kerberos/KerberosAuthenticationIT.java index 3058905548c08..15b027c131663 100644 --- a/x-pack/qa/kerberos-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authc/kerberos/KerberosAuthenticationIT.java +++ b/x-pack/qa/kerberos-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authc/kerberos/KerberosAuthenticationIT.java @@ -19,6 +19,7 @@ import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.core.TimeValue; import org.elasticsearch.test.cluster.ElasticsearchCluster; @@ -141,7 +142,7 @@ public void setupRoleMapping() throws IOException { public void testLoginByKeytab() throws IOException, PrivilegedActionException { final String keytabPath = krb5Fixture.getKeytab().toString(); - final boolean enabledDebugLogs = Boolean.parseBoolean(ENABLE_KERBEROS_DEBUG_LOGS_KEY); + final boolean enabledDebugLogs = Booleans.parseBoolean(System.getProperty(ENABLE_KERBEROS_DEBUG_LOGS_KEY), false); final SpnegoHttpClientConfigCallbackHandler callbackHandler = new SpnegoHttpClientConfigCallbackHandler( krb5Fixture.getPrincipal(), keytabPath, @@ -153,7 +154,7 @@ public void testLoginByKeytab() throws IOException, PrivilegedActionException { public void testLoginByUsernamePassword() throws IOException, PrivilegedActionException { final String userPrincipalName = TEST_USER_WITH_PWD_KEY; final String password = TEST_USER_WITH_PWD_PASSWD_KEY; - final boolean enabledDebugLogs = Boolean.parseBoolean(System.getProperty(ENABLE_KERBEROS_DEBUG_LOGS_KEY)); + final boolean enabledDebugLogs = Booleans.parseBoolean(System.getProperty(ENABLE_KERBEROS_DEBUG_LOGS_KEY), false); final SpnegoHttpClientConfigCallbackHandler callbackHandler = new SpnegoHttpClientConfigCallbackHandler( userPrincipalName, new SecureString(password.toCharArray()), @@ -165,7 +166,7 @@ public void testLoginByUsernamePassword() throws IOException, PrivilegedActionEx public void testGetOauth2TokenInExchangeForKerberosTickets() throws PrivilegedActionException, GSSException, IOException { final String userPrincipalName = TEST_USER_WITH_PWD_KEY; final String password = TEST_USER_WITH_PWD_PASSWD_KEY; - final boolean enabledDebugLogs = Boolean.parseBoolean(System.getProperty(ENABLE_KERBEROS_DEBUG_LOGS_KEY)); + final boolean enabledDebugLogs = Booleans.parseBoolean(System.getProperty(ENABLE_KERBEROS_DEBUG_LOGS_KEY), false); final SpnegoHttpClientConfigCallbackHandler callbackHandler = new SpnegoHttpClientConfigCallbackHandler( userPrincipalName, new SecureString(password.toCharArray()), diff --git a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java index b17644cd1c2a9..60d3d69e3b3e9 100644 --- a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java +++ b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/AbstractUpgradeTestCase.java @@ -34,7 +34,7 @@ public abstract class AbstractUpgradeTestCase extends ESRestTestCase { ); protected static final String UPGRADE_FROM_VERSION = System.getProperty("tests.upgrade_from_version"); - protected static final boolean FIRST_MIXED_ROUND = Boolean.parseBoolean(System.getProperty("tests.first_round", "false")); + protected static final boolean FIRST_MIXED_ROUND = Booleans.parseBoolean(System.getProperty("tests.first_round", "false")); protected static final boolean SKIP_ML_TESTS = Booleans.parseBoolean(System.getProperty("tests.ml.skip", "false")); protected static boolean isOriginalCluster(String clusterVersion) { diff --git a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MlAssignmentPlannerUpgradeIT.java b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MlAssignmentPlannerUpgradeIT.java index 1f3db455c9ce7..07d9de3dea6ac 100644 --- a/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MlAssignmentPlannerUpgradeIT.java +++ b/x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/MlAssignmentPlannerUpgradeIT.java @@ -11,6 +11,7 @@ import org.elasticsearch.client.Response; import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.core.Booleans; import org.elasticsearch.core.RestApiVersion; import org.elasticsearch.core.Strings; import org.elasticsearch.logging.LogManager; @@ -31,7 +32,7 @@ public class MlAssignmentPlannerUpgradeIT extends AbstractUpgradeTestCase { - private static final boolean IS_SINGLE_PROCESSOR_TEST = Boolean.parseBoolean( + private static final boolean IS_SINGLE_PROCESSOR_TEST = Booleans.parseBoolean( System.getProperty("tests.configure_test_clusters_with_one_processor", "false") );