From 3d8d7e5f6cc85e4a283e44acffe9198621816cc0 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Tue, 19 Aug 2025 22:24:04 +0200 Subject: [PATCH 1/2] Update Gradle wrapper to 9.0.0 (#132932) Updating to the latest Gradle GA version to keep our build uptodate * Rework RestCompatTestTransformTask to CC compatibility * Fix build integration tests due to api changes * Updating javaparser (cherry picked from commit 8e2c948d44f24999f7b70aa126cd0d6e9ede8c18) # Conflicts: # build-tools-internal/src/main/resources/minimumGradleVersion # gradle/build.versions.toml # gradle/verification-metadata.xml --- .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../AbstractRestResourcesFuncTest.groovy | 6 ++- ...tributionArchiveSetupPluginFuncTest.groovy | 11 ++--- ...lDistributionBwcSetupPluginFuncTest.groovy | 1 - .../SymbolicLinkPreservingTarFuncTest.groovy | 22 ++++++---- .../distribution/bwc/bugfix3/build.gradle | 0 .../distribution/bwc/bugfix4/build.gradle | 0 .../distribution/bwc/bugfix5/build.gradle | 0 .../distribution/bwc/staged2/build.gradle | 0 .../gradle/internal/AntTask.groovy | 9 ++-- .../gradle/internal/test/AntFixture.groovy | 2 + .../internal/SymbolicLinkPreservingTar.java | 2 +- .../gradle/internal/idea/IdeaXmlUtil.java | 2 +- .../compat/RestCompatTestTransformTask.java | 27 ++++++------ .../test/rest/transform/ReplaceByKey.java | 22 +++++++--- .../rest/transform/SerializableJsonNode.java | 44 +++++++++++++++++++ .../close_to/ReplaceValueInCloseTo.java | 8 ++-- .../length/ReplaceValueInLength.java | 10 ++--- .../test/rest/transform/match/AddMatch.java | 9 ++-- .../transform/match/ReplaceValueInMatch.java | 8 ++-- .../rest/transform/text/ReplaceIsFalse.java | 6 ++- .../rest/transform/text/ReplaceIsTrue.java | 6 ++- .../rest/transform/text/ReplaceTextual.java | 16 ++++--- .../src/main/resources/minimumGradleVersion | 2 +- .../release/UpdateVersionsTaskTests.java | 4 +- .../close_to/ReplaceValueInCloseToTests.java | 8 +--- .../length/ReplaceValueInLengthTests.java | 3 +- .../rest/transform/match/AddMatchTests.java | 5 ++- .../match/ReplaceValueInMatchTests.java | 3 +- .../transform/text/ReplaceTextualTests.java | 13 ++---- .../fixtures/AbstractGradleFuncTest.groovy | 3 +- build.gradle | 2 + gradle/build.versions.toml | 6 +-- gradle/verification-metadata.xml | 39 +++++++++++----- gradle/wrapper/gradle-wrapper.properties | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 4 +- 36 files changed, 199 insertions(+), 112 deletions(-) create mode 100644 build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix3/build.gradle create mode 100644 build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix4/build.gradle create mode 100644 build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix5/build.gradle create mode 100644 build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged2/build.gradle create mode 100644 build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/SerializableJsonNode.java diff --git a/build-tools-internal/gradle/wrapper/gradle-wrapper.properties b/build-tools-internal/gradle/wrapper/gradle-wrapper.properties index c4a852da571d7..01450089d2c6c 100644 --- a/build-tools-internal/gradle/wrapper/gradle-wrapper.properties +++ b/build-tools-internal/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=443c9c8ee2ac1ee0e11881a40f2376d79c66386264a44b24a9f8ca67e633375f -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip +distributionSha256Sum=f759b8dd5204e2e3fa4ca3e73f452f087153cf81bac9561eeb854229cc2c5365 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy index 150f2b1130159..13d826ceffeb6 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy @@ -53,8 +53,10 @@ abstract class AbstractRestResourcesFuncTest extends AbstractGradleFuncTest { } """ - subProject(":distribution:archives:integ-test-zip") << "configurations.create('extracted')\n" - subProject(":distribution:archives:integ-test-zip") << "configurations.create('default')\n" + subProject(":distribution:archives:integ-test-zip") << """ +apply plugin: 'base' +configurations.create('extracted') +""" } void setupRestResources(List apis, List tests = [], List xpackTests = []) { diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy index 43edd15a5dcf6..eba9001ea761c 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy @@ -80,11 +80,8 @@ class InternalDistributionArchiveSetupPluginFuncTest extends AbstractGradleFuncT def "registered distribution provides archives and directory variant"() { given: file('someFile.txt') << "some content" - - settingsFile << """ - include ':consumer' - include ':producer-tar' - """ + subProject("consumer") + subProject("producer-tar") buildFile << """ import org.gradle.api.artifacts.type.ArtifactTypeDefinition; @@ -154,9 +151,7 @@ class InternalDistributionArchiveSetupPluginFuncTest extends AbstractGradleFuncT def "builds extracted distribution via extractedAssemble"() { given: file('someFile.txt') << "some content" - settingsFile << """ - include ':producer-tar' - """ + subProject("producer-tar") buildFile << """ import org.gradle.api.artifacts.type.ArtifactTypeDefinition; diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy index bb100b6b23882..effcb8a54afb6 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy @@ -117,5 +117,4 @@ class InternalDistributionBwcSetupPluginFuncTest extends AbstractGitAwareGradleF result.output.contains("nested folder /distribution/bwc/minor/build/bwc/checkout-8.x/" + "distribution/archives/darwin-tar/build/install/elasticsearch-8.4.0-SNAPSHOT") } - } diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarFuncTest.groovy index 57ba6a7773d50..c85a3042acbd7 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarFuncTest.groovy @@ -9,7 +9,8 @@ package org.elasticsearch.gradle.internal -import spock.lang.Ignore + +import spock.lang.Unroll import org.apache.commons.compress.archivers.tar.TarArchiveEntry import org.apache.commons.compress.archivers.tar.TarArchiveInputStream @@ -17,7 +18,6 @@ import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.api.GradleException -import spock.lang.Unroll import java.nio.file.Files import java.nio.file.Path @@ -66,8 +66,12 @@ tasks.register("buildBZip2Tar", SymbolicLinkPreservingTar) { SymbolicLinkPreserv from fileTree("archiveRoot") into('config') { - dirMode 0750 - fileMode 0660 + dirPermissions { + unix(0750) + } + filePermissions { + unix(0660) + } from "real-folder2" } } @@ -118,8 +122,10 @@ tasks.register("buildTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTa preserverTimestamp << [true, false] } - private boolean assertTar(final File archive, final Function wrapper, boolean preserveFileTimestamps) - throws IOException { + private boolean assertTar(final File archive, + final Function wrapper, + boolean preserveFileTimestamps) + throws IOException { try (TarArchiveInputStream tar = new TarArchiveInputStream(wrapper.apply(new FileInputStream(archive)))) { TarArchiveEntry entry = tar.getNextTarEntry(); boolean realFolderEntry = false; @@ -132,7 +138,7 @@ tasks.register("buildTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTa if (entry.getName().equals("real-folder/")) { assert entry.isDirectory() realFolderEntry = true - } else if (entry.getName().equals("real-folder/file")) { + } else if (entry.getName().equals("real-folder/file")) { assert entry.isFile() fileEntry = true } else if (entry.getName().equals("real-folder/link-to-file")) { @@ -145,7 +151,7 @@ tasks.register("buildTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTa } else if (entry.getName().equals("config/sub/")) { assert entry.isDirectory() assert entry.getMode() == 16872 - }else if (entry.getName().equals("link-in-folder/")) { + } else if (entry.getName().equals("link-in-folder/")) { assert entry.isDirectory() linkInFolderEntry = true } else if (entry.getName().equals("link-in-folder/link-to-file")) { diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix3/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix3/build.gradle new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix4/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix4/build.gradle new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix5/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix5/build.gradle new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged2/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged2/build.gradle new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy index 01a3bdaee2337..df4fa43aad3e7 100644 --- a/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy +++ b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy @@ -9,18 +9,18 @@ package org.elasticsearch.gradle.internal +import groovy.ant.AntBuilder + import org.apache.tools.ant.BuildListener import org.apache.tools.ant.BuildLogger import org.apache.tools.ant.DefaultLogger import org.apache.tools.ant.Project import org.gradle.api.DefaultTask -import org.gradle.api.GradleException import org.gradle.api.file.FileSystemOperations -import org.gradle.api.tasks.Input import org.gradle.api.tasks.TaskAction -import javax.inject.Inject import java.nio.charset.Charset +import javax.inject.Inject /** * A task which will run ant commands. @@ -83,7 +83,8 @@ public abstract class AntTask extends DefaultTask { return new DefaultLogger( errorPrintStream: stream, outputPrintStream: stream, - messageOutputLevel: outputLevel) + messageOutputLevel: outputLevel + ) } /** diff --git a/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy index 88a68f1194858..c09c372800af8 100644 --- a/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy +++ b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy @@ -9,6 +9,8 @@ package org.elasticsearch.gradle.internal.test +import groovy.ant.AntBuilder + import org.elasticsearch.gradle.OS import org.elasticsearch.gradle.internal.AntFixtureStop diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java index ec4b1fea9e962..b5a19dbdffd0a 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java @@ -41,7 +41,7 @@ * * This task is necessary because the built-in task {@link org.gradle.api.tasks.bundling.Tar} does not preserve symbolic links. */ -public class SymbolicLinkPreservingTar extends Tar { +public abstract class SymbolicLinkPreservingTar extends Tar { @Override protected CopyAction createCopyAction() { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/idea/IdeaXmlUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/idea/IdeaXmlUtil.java index b7cc2862a0af1..7fbc9c341603b 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/idea/IdeaXmlUtil.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/idea/IdeaXmlUtil.java @@ -10,8 +10,8 @@ package org.elasticsearch.gradle.internal.idea; import groovy.util.Node; -import groovy.util.XmlParser; import groovy.xml.XmlNodePrinter; +import groovy.xml.XmlParser; import org.gradle.api.Action; import org.xml.sax.SAXException; diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/RestCompatTestTransformTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/RestCompatTestTransformTask.java index 6d6590429feb1..31d4947b064f2 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/RestCompatTestTransformTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/RestCompatTestTransformTask.java @@ -26,6 +26,7 @@ import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.test.rest.transform.RestTestTransform; import org.elasticsearch.gradle.internal.test.rest.transform.RestTestTransformer; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.close_to.ReplaceValueInCloseTo; import org.elasticsearch.gradle.internal.test.rest.transform.do_.ReplaceKeyInDo; import org.elasticsearch.gradle.internal.test.rest.transform.headers.InjectHeaders; @@ -169,7 +170,7 @@ public void skipTestsByFilePattern(String filePattern, String reason) { * @param value the value used in the replacement. For example "bar" */ public void replaceValueInMatch(String subKey, Object value) { - getTransformations().add(new ReplaceValueInMatch(subKey, MAPPER.convertValue(value, JsonNode.class))); + getTransformations().add(new ReplaceValueInMatch(subKey, SerializableJsonNode.of(value, JsonNode.class))); } /** @@ -180,7 +181,7 @@ public void replaceValueInMatch(String subKey, Object value) { * @param testName the testName to apply replacement */ public void replaceValueInMatch(String subKey, Object value, String testName) { - getTransformations().add(new ReplaceValueInMatch(subKey, MAPPER.convertValue(value, JsonNode.class), testName)); + getTransformations().add(new ReplaceValueInMatch(subKey, SerializableJsonNode.of(value, JsonNode.class), testName)); } /** @@ -225,7 +226,7 @@ public void replaceKeyInLength(String oldKeyName, String newKeyName) { * @param value the value used in the replacement. For example 99 */ public void replaceValueInLength(String subKey, int value) { - getTransformations().add(new ReplaceValueInLength(subKey, MAPPER.convertValue(value, NumericNode.class))); + getTransformations().add(new ReplaceValueInLength(subKey, SerializableJsonNode.of(value, NumericNode.class))); } /** @@ -237,7 +238,7 @@ public void replaceValueInLength(String subKey, int value) { * @param testName the testName to apply replacement */ public void replaceValueInLength(String subKey, int value, String testName) { - getTransformations().add(new ReplaceValueInLength(subKey, MAPPER.convertValue(value, NumericNode.class), testName)); + getTransformations().add(new ReplaceValueInLength(subKey, SerializableJsonNode.of(value, NumericNode.class), testName)); } /** @@ -260,7 +261,7 @@ public void replaceKeyInMatch(String oldKeyName, String newKeyName) { * @param testName the testName to apply replacement */ public void replaceValueInCloseTo(String subKey, double newValue, String testName) { - getTransformations().add(new ReplaceValueInCloseTo(subKey, MAPPER.convertValue(newValue, NumericNode.class), testName)); + getTransformations().add(new ReplaceValueInCloseTo(subKey, SerializableJsonNode.of(newValue, NumericNode.class), testName)); } /** @@ -271,7 +272,7 @@ public void replaceValueInCloseTo(String subKey, double newValue, String testNam * @param newValue the value used in the replacement. For example 9.5 */ public void replaceValueInCloseTo(String subKey, double newValue) { - getTransformations().add(new ReplaceValueInCloseTo(subKey, MAPPER.convertValue(newValue, NumericNode.class))); + getTransformations().add(new ReplaceValueInCloseTo(subKey, SerializableJsonNode.of(newValue, NumericNode.class))); } /** @@ -282,7 +283,7 @@ public void replaceValueInCloseTo(String subKey, double newValue) { * @param newValue the value used in the replacement */ public void replaceIsTrue(String oldValue, Object newValue) { - getTransformations().add(new ReplaceIsTrue(oldValue, MAPPER.convertValue(newValue, TextNode.class))); + getTransformations().add(new ReplaceIsTrue(oldValue, SerializableJsonNode.of(newValue, TextNode.class))); } /** @@ -294,7 +295,7 @@ public void replaceIsTrue(String oldValue, Object newValue) { * @param testName the testName to apply replacement */ public void replaceIsTrue(String oldValue, Object newValue, String testName) { - getTransformations().add(new ReplaceIsTrue(oldValue, MAPPER.convertValue(newValue, TextNode.class), testName)); + getTransformations().add(new ReplaceIsTrue(oldValue, SerializableJsonNode.of(newValue, TextNode.class), testName)); } /** @@ -305,7 +306,7 @@ public void replaceIsTrue(String oldValue, Object newValue, String testName) { * @param newValue the value used in the replacement */ public void replaceIsFalse(String oldValue, Object newValue) { - getTransformations().add(new ReplaceIsFalse(oldValue, MAPPER.convertValue(newValue, TextNode.class))); + getTransformations().add(new ReplaceIsFalse(oldValue, SerializableJsonNode.of(newValue, TextNode.class))); } /** @@ -317,7 +318,7 @@ public void replaceIsFalse(String oldValue, Object newValue) { * @param testName the testName to apply replacement */ public void replaceIsFalse(String oldValue, Object newValue, String testName) { - getTransformations().add(new ReplaceIsFalse(oldValue, MAPPER.convertValue(newValue, TextNode.class), testName)); + getTransformations().add(new ReplaceIsFalse(oldValue, SerializableJsonNode.of(newValue, TextNode.class), testName)); } /** @@ -329,7 +330,7 @@ public void replaceIsFalse(String oldValue, Object newValue, String testName) { * @param newValue the value used in the replacement */ public void replaceValueTextByKeyValue(String key, String oldValue, Object newValue) { - getTransformations().add(new ReplaceTextual(key, oldValue, MAPPER.convertValue(newValue, TextNode.class))); + getTransformations().add(new ReplaceTextual(key, oldValue, SerializableJsonNode.of(newValue, TextNode.class))); } /** @@ -342,7 +343,7 @@ public void replaceValueTextByKeyValue(String key, String oldValue, Object newVa * @param testName the testName to apply replacement */ public void replaceValueTextByKeyValue(String key, String oldValue, Object newValue, String testName) { - getTransformations().add(new ReplaceTextual(key, oldValue, MAPPER.convertValue(newValue, TextNode.class), testName)); + getTransformations().add(new ReplaceTextual(key, oldValue, SerializableJsonNode.of(newValue, TextNode.class), testName)); } /** @@ -376,7 +377,7 @@ public void removeMatch(String subKey, String testName) { * @param testName the testName to apply addition */ public void addMatch(String subKey, Object value, String testName) { - getTransformations().add(new AddMatch(subKey, MAPPER.convertValue(value, JsonNode.class), testName)); + getTransformations().add(new AddMatch(subKey, SerializableJsonNode.of(value, JsonNode.class), testName)); } /** diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java index 17d50a1a95db1..3cf542b12398b 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java @@ -10,6 +10,7 @@ package org.elasticsearch.gradle.internal.test.rest.transform; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Optional; @@ -25,18 +26,23 @@ public abstract class ReplaceByKey implements RestTestTransformByParentObject { private final String requiredChildKey; private final String newChildKey; - private final JsonNode replacementNode; + private final SerializableJsonNode replacementNode; private final String testName; - public ReplaceByKey(String requiredChildKey, JsonNode replacementNode) { + public ReplaceByKey(String requiredChildKey, SerializableJsonNode replacementNode) { this(requiredChildKey, replacementNode, null); } - public ReplaceByKey(String requiredChildKey, JsonNode replacementNode, String testName) { + public ReplaceByKey(String requiredChildKey, SerializableJsonNode replacementNode, String testName) { this(requiredChildKey, requiredChildKey, replacementNode, testName); } - public ReplaceByKey(String requiredChildKey, String newChildKey, JsonNode replacementNode, String testName) { + public ReplaceByKey( + String requiredChildKey, + String newChildKey, + SerializableJsonNode replacementNode, + String testName + ) { this.requiredChildKey = requiredChildKey; this.newChildKey = newChildKey; this.replacementNode = replacementNode; @@ -60,7 +66,7 @@ public boolean shouldApply(RestTestContext testContext) { @Input @Optional - public JsonNode getReplacementNode() { + public SerializableJsonNode getReplacementNode() { return replacementNode; } @@ -69,4 +75,10 @@ public JsonNode getReplacementNode() { public String getTestName() { return testName; } + + protected void updateReplacement(ObjectNode matchNode) { + matchNode.remove(requiredChildKey()); + matchNode.set(getNewChildKey(), replacementNode.toJsonNode()); + } + } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/SerializableJsonNode.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/SerializableJsonNode.java new file mode 100644 index 0000000000000..1078084daea0a --- /dev/null +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/SerializableJsonNode.java @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.gradle.internal.test.rest.transform; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +import java.io.Serializable; + +/** + * A serializable wrapper for a JsonNode that can be used as Gradle task inputs. + * This is necessary because JsonNode serialization is not supported by Gradle configuration cache + * as it relies on DataInput.readFully which is unsupported by Gradle. + * + * @param The type of JsonNode this wrapper will hold. + */ +public class SerializableJsonNode implements Serializable { + + private Object value; + private Class type; + + SerializableJsonNode(Object value, Class type) { + this.value = value; + this.type = type; + } + + public static SerializableJsonNode of(Object value, Class type) { + return new SerializableJsonNode(value, type); + } + + public T toJsonNode() { + YAMLFactory YAML_FACTORY = new YAMLFactory(); + ObjectMapper MAPPER = new ObjectMapper(YAML_FACTORY); + return (T) MAPPER.convertValue(value, type); + } +} diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseTo.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseTo.java index 96561c3cf5444..0c3ac908fe224 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseTo.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseTo.java @@ -13,6 +13,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.elasticsearch.gradle.internal.test.rest.transform.ReplaceByKey; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.gradle.api.tasks.Internal; /** @@ -22,11 +23,11 @@ */ public class ReplaceValueInCloseTo extends ReplaceByKey { - public ReplaceValueInCloseTo(String replaceKey, NumericNode replacementNode) { + public ReplaceValueInCloseTo(String replaceKey, SerializableJsonNode replacementNode) { this(replaceKey, replacementNode, null); } - public ReplaceValueInCloseTo(String replaceKey, NumericNode replacementNode, String testName) { + public ReplaceValueInCloseTo(String replaceKey, SerializableJsonNode replacementNode, String testName) { super(replaceKey, replaceKey, replacementNode, testName); } @@ -41,6 +42,7 @@ public void transformTest(ObjectNode matchParent) { ObjectNode closeToNode = (ObjectNode) matchParent.get(getKeyToFind()); ObjectNode subNode = (ObjectNode) closeToNode.get(requiredChildKey()); subNode.remove("value"); - subNode.set("value", getReplacementNode()); + subNode.set("value", getReplacementNode().toJsonNode()); } + } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLength.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLength.java index 936deea70703d..50a6493049bcf 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLength.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLength.java @@ -9,10 +9,10 @@ package org.elasticsearch.gradle.internal.test.rest.transform.length; -import com.fasterxml.jackson.databind.node.NumericNode; import com.fasterxml.jackson.databind.node.ObjectNode; import org.elasticsearch.gradle.internal.test.rest.transform.ReplaceByKey; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.gradle.api.tasks.Internal; /** @@ -21,11 +21,11 @@ */ public class ReplaceValueInLength extends ReplaceByKey { - public ReplaceValueInLength(String replaceKey, NumericNode replacementNode) { + public ReplaceValueInLength(String replaceKey, SerializableJsonNode replacementNode) { this(replaceKey, replacementNode, null); } - public ReplaceValueInLength(String replaceKey, NumericNode replacementNode, String testName) { + public ReplaceValueInLength(String replaceKey, SerializableJsonNode replacementNode, String testName) { super(replaceKey, replaceKey, replacementNode, testName); } @@ -38,7 +38,7 @@ public String getKeyToFind() { @Override public void transformTest(ObjectNode matchParent) { ObjectNode matchNode = (ObjectNode) matchParent.get(getKeyToFind()); - matchNode.remove(requiredChildKey()); - matchNode.set(getNewChildKey(), getReplacementNode()); + updateReplacement(matchNode); } + } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java index ff8ec820d60c4..f5f7a7f55ce03 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java @@ -16,6 +16,7 @@ import org.elasticsearch.gradle.internal.test.rest.transform.RestTestContext; import org.elasticsearch.gradle.internal.test.rest.transform.RestTestTransformByParentArray; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; @@ -28,9 +29,9 @@ public class AddMatch implements RestTestTransformByParentArray { private static JsonNodeFactory jsonNodeFactory = JsonNodeFactory.withExactBigDecimals(false); private final String matchKey; private final String testName; - private final JsonNode matchValue; + private final SerializableJsonNode matchValue; - public AddMatch(String matchKey, JsonNode matchValue, String testName) { + public AddMatch(String matchKey, SerializableJsonNode matchValue, String testName) { this.matchKey = matchKey; this.matchValue = matchValue; this.testName = Objects.requireNonNull(testName, "adding matches is only supported for named tests"); @@ -45,7 +46,7 @@ public boolean shouldApply(RestTestContext testContext) { public void transformTest(ArrayNode matchParent) { ObjectNode matchObject = new ObjectNode(jsonNodeFactory); ObjectNode matchContent = new ObjectNode(jsonNodeFactory); - matchContent.set(matchKey, matchValue); + matchContent.set(matchKey, matchValue.toJsonNode()); matchObject.set("match", matchContent); matchParent.add(matchObject); } @@ -70,6 +71,6 @@ public String getTestName() { @Input public JsonNode getMatchValue() { - return matchValue; + return matchValue.toJsonNode(); } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java index 5e46934c8ba4a..f52558dbd2f2e 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java @@ -13,6 +13,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.elasticsearch.gradle.internal.test.rest.transform.ReplaceByKey; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.gradle.api.tasks.Internal; /** @@ -20,11 +21,11 @@ */ public class ReplaceValueInMatch extends ReplaceByKey { - public ReplaceValueInMatch(String replaceKey, JsonNode replacementNode) { + public ReplaceValueInMatch(String replaceKey, SerializableJsonNode replacementNode) { this(replaceKey, replacementNode, null); } - public ReplaceValueInMatch(String replaceKey, JsonNode replacementNode, String testName) { + public ReplaceValueInMatch(String replaceKey, SerializableJsonNode replacementNode, String testName) { super(replaceKey, replaceKey, replacementNode, testName); } @@ -37,7 +38,6 @@ public String getKeyToFind() { @Override public void transformTest(ObjectNode matchParent) { ObjectNode matchNode = (ObjectNode) matchParent.get(getKeyToFind()); - matchNode.remove(requiredChildKey()); - matchNode.set(getNewChildKey(), getReplacementNode()); + updateReplacement(matchNode); } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java index 53a35b09dd087..72e225918e187 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java @@ -11,12 +11,14 @@ import com.fasterxml.jackson.databind.node.TextNode; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; + public class ReplaceIsFalse extends ReplaceTextual { - public ReplaceIsFalse(String valueToBeReplaced, TextNode replacementNode) { + public ReplaceIsFalse(String valueToBeReplaced, SerializableJsonNode replacementNode) { super("is_false", valueToBeReplaced, replacementNode); } - public ReplaceIsFalse(String valueToBeReplaced, TextNode replacementNode, String testName) { + public ReplaceIsFalse(String valueToBeReplaced, SerializableJsonNode replacementNode, String testName) { super("is_false", valueToBeReplaced, replacementNode, testName); } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java index 51db9c88774b7..c5bc8fb6e0d79 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java @@ -11,12 +11,14 @@ import com.fasterxml.jackson.databind.node.TextNode; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; + public class ReplaceIsTrue extends ReplaceTextual { - public ReplaceIsTrue(String valueToBeReplaced, TextNode replacementNode) { + public ReplaceIsTrue(String valueToBeReplaced, SerializableJsonNode replacementNode) { super("is_true", valueToBeReplaced, replacementNode); } - public ReplaceIsTrue(String valueToBeReplaced, TextNode replacementNode, String testName) { + public ReplaceIsTrue(String valueToBeReplaced, SerializableJsonNode replacementNode, String testName) { super("is_true", valueToBeReplaced, replacementNode, testName); } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java index 6397e938f091c..ae9cc43dae2ed 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java @@ -15,6 +15,7 @@ import org.elasticsearch.gradle.internal.test.rest.transform.RestTestContext; import org.elasticsearch.gradle.internal.test.rest.transform.RestTestTransformByParentObject; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.Optional; @@ -25,17 +26,22 @@ public class ReplaceTextual implements RestTestTransformByParentObject { private final String keyToReplaceName; private final String valueToBeReplaced; - private final TextNode replacementNode; + private final SerializableJsonNode replacementNode; private final String testName; - public ReplaceTextual(String keyToReplaceName, String valueToBeReplaced, TextNode replacementNode) { + public ReplaceTextual(String keyToReplaceName, String valueToBeReplaced, SerializableJsonNode replacementNode) { this.keyToReplaceName = keyToReplaceName; this.valueToBeReplaced = valueToBeReplaced; this.replacementNode = replacementNode; this.testName = null; } - public ReplaceTextual(String keyToReplaceName, String valueToBeReplaced, TextNode replacementNode, String testName) { + public ReplaceTextual( + String keyToReplaceName, + String valueToBeReplaced, + SerializableJsonNode replacementNode, + String testName + ) { this.keyToReplaceName = keyToReplaceName; this.valueToBeReplaced = valueToBeReplaced; this.replacementNode = replacementNode; @@ -60,7 +66,7 @@ public boolean shouldApply(RestTestContext testContext) { @Override public void transformTest(ObjectNode matchParent) { - matchParent.set(getKeyToFind(), replacementNode); + matchParent.set(getKeyToFind(), replacementNode.toJsonNode()); } @Input @@ -69,7 +75,7 @@ public String getValueToBeReplaced() { } @Input - public JsonNode getReplacementNode() { + public SerializableJsonNode getReplacementNode() { return replacementNode; } diff --git a/build-tools-internal/src/main/resources/minimumGradleVersion b/build-tools-internal/src/main/resources/minimumGradleVersion index 12800750c1b9a..f7ee06693c17a 100644 --- a/build-tools-internal/src/main/resources/minimumGradleVersion +++ b/build-tools-internal/src/main/resources/minimumGradleVersion @@ -1 +1 @@ -8.14.2 +9.0.0 diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/release/UpdateVersionsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/release/UpdateVersionsTaskTests.java index d5060a2e62365..41d46929aaed4 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/release/UpdateVersionsTaskTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/release/UpdateVersionsTaskTests.java @@ -189,7 +189,7 @@ public void updateVersionFile_addsCorrectly() throws Exception { // write out & parse back in again StringWriter writer = new StringWriter(); - LexicalPreservingPrinter.print(unit, writer); + writer.append(LexicalPreservingPrinter.print(unit)); unit = StaticJavaParser.parse(writer.toString()); // a field has been added @@ -229,7 +229,7 @@ public void updateVersionFile_removesCorrectly() throws Exception { // write out & parse back in again StringWriter writer = new StringWriter(); - LexicalPreservingPrinter.print(unit, writer); + writer.append(LexicalPreservingPrinter.print(unit)); unit = StaticJavaParser.parse(writer.toString()); // a field has been removed diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseToTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseToTests.java index 27f7895f278e5..8756040bc2ecb 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseToTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/close_to/ReplaceValueInCloseToTests.java @@ -9,12 +9,11 @@ package org.elasticsearch.gradle.internal.test.rest.transform.close_to; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.NumericNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.elasticsearch.gradle.internal.test.rest.transform.AssertObjectNodes; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.TransformTests; import org.junit.Test; @@ -23,9 +22,6 @@ public class ReplaceValueInCloseToTests extends TransformTests { - private static final YAMLFactory YAML_FACTORY = new YAMLFactory(); - private static final ObjectMapper MAPPER = new ObjectMapper(YAML_FACTORY); - @Test public void testReplaceValue() throws Exception { String test_original = "/rest/transform/close_to/close_to_replace_original.yml"; @@ -34,7 +30,7 @@ public void testReplaceValue() throws Exception { String test_transformed = "/rest/transform/close_to/close_to_replace_transformed_value.yml"; List expectedTransformation = getTests(test_transformed); - NumericNode replacementNode = MAPPER.convertValue(99.99, NumericNode.class); + var replacementNode = SerializableJsonNode.of(99.99, NumericNode.class); List transformedTests = transformTests( tests, diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLengthTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLengthTests.java index 17d7bb1c65f3e..e033c9f2a1640 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLengthTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceValueInLengthTests.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.elasticsearch.gradle.internal.test.rest.transform.AssertObjectNodes; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.TransformTests; import org.junit.Test; @@ -34,7 +35,7 @@ public void testReplaceMatch() throws Exception { String test_transformed = "/rest/transform/length/length_replace_transformed_value.yml"; List expectedTransformation = getTests(test_transformed); - NumericNode replacementNode = MAPPER.convertValue(99, NumericNode.class); + var replacementNode = SerializableJsonNode.of(99, NumericNode.class); List transformedTests = transformTests( tests, diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java index 21dce6f6c95d6..ba684e389a2d6 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.TransformTests; import org.hamcrest.CoreMatchers; import org.junit.Test; @@ -38,7 +39,7 @@ public class AddMatchTests extends TransformTests { public void testAddAllNotSupported() throws Exception { String testName = "/rest/transform/match/match_original.yml"; List tests = getTests(testName); - JsonNode addNode = MAPPER.convertValue("_doc", JsonNode.class); + var addNode = SerializableJsonNode.of("_doc", JsonNode.class); assertEquals( "adding matches is only supported for named tests", assertThrows( @@ -52,7 +53,7 @@ public void testAddAllNotSupported() throws Exception { public void testAddByTest() throws Exception { String testName = "/rest/transform/match/match_original.yml"; List tests = getTests(testName); - JsonNode addNode = MAPPER.convertValue(123456789, JsonNode.class); + var addNode = SerializableJsonNode.of(123456789, JsonNode.class); validateTest(tests, true); List transformedTests = transformTests( tests, diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java index f1ed68f1f3d64..c2752e4840917 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.elasticsearch.gradle.internal.test.rest.transform.AssertObjectNodes; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.TransformTests; import org.junit.Test; @@ -33,7 +34,7 @@ public void testReplaceMatch() throws Exception { String test_transformed = "/rest/transform/match/match_transformed.yml"; List expectedTransformation = getTests(test_transformed); - JsonNode replacementNode = MAPPER.convertValue("_replaced_type", JsonNode.class); + SerializableJsonNode replacementNode = SerializableJsonNode.of("_replaced_type", JsonNode.class); List transformedTests = transformTests( tests, List.of( diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java index 0fcbd0a94b333..c321c7661bfe6 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java @@ -9,22 +9,17 @@ package org.elasticsearch.gradle.internal.test.rest.transform.text; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.elasticsearch.gradle.internal.test.rest.transform.AssertObjectNodes; +import org.elasticsearch.gradle.internal.test.rest.transform.SerializableJsonNode; import org.elasticsearch.gradle.internal.test.rest.transform.TransformTests; import org.junit.Test; import java.util.List; public class ReplaceTextualTests extends TransformTests { - - private static final YAMLFactory YAML_FACTORY = new YAMLFactory(); - private static final ObjectMapper MAPPER = new ObjectMapper(YAML_FACTORY); - @Test public void testReplaceAll() throws Exception { String test_original = "/rest/transform/text/text_replace_original.yml"; @@ -36,9 +31,9 @@ public void testReplaceAll() throws Exception { List transformedTests = transformTests( tests, List.of( - new ReplaceTextual("key_to_replace", "value_to_replace", MAPPER.convertValue("_replaced_value", TextNode.class), null), - new ReplaceIsTrue("is_true_to_replace", MAPPER.convertValue("is_true_replaced", TextNode.class)), - new ReplaceIsFalse("is_false_to_replace", MAPPER.convertValue("is_false_replaced", TextNode.class)) + new ReplaceTextual("key_to_replace", "value_to_replace", SerializableJsonNode.of("_replaced_value", TextNode.class), null), + new ReplaceIsTrue("is_true_to_replace", SerializableJsonNode.of("is_true_replaced", TextNode.class)), + new ReplaceIsFalse("is_false_to_replace", SerializableJsonNode.of("is_false_replaced", TextNode.class)) ) ); diff --git a/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy index d52b7d321c729..aa9b9d07c4461 100644 --- a/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy +++ b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy @@ -83,7 +83,8 @@ abstract class AbstractGradleFuncTest extends Specification { if (subProjectBuild.exists() == false) { settingsFile << "include \"${subProjectPath}\"\n" } - subProjectBuild + subProjectBuild.parentFile.mkdirs() + return subProjectBuild } File subProject(String subProjectPath, Closure configAction) { diff --git a/build.gradle b/build.gradle index 87098d4f97300..8d32042a9dc6f 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,8 @@ import org.elasticsearch.gradle.internal.ResolveAllDependencies import org.elasticsearch.gradle.util.GradleUtils import org.gradle.plugins.ide.eclipse.model.AccessRule +import groovy.xml.XmlParser; +import groovy.xml.XmlNodePrinter; import java.nio.file.Files import static java.nio.file.StandardCopyOption.REPLACE_EXISTING diff --git a/gradle/build.versions.toml b/gradle/build.versions.toml index 7ab3966d5f680..8550f5124f01d 100644 --- a/gradle/build.versions.toml +++ b/gradle/build.versions.toml @@ -1,8 +1,8 @@ [versions] asm = "9.7.1" jackson = "2.15.0" -junit5 = "5.8.1" -spock = "2.1-groovy-3.0" +junit5 = "5.12.1" +spock = "2.3-groovy-4.0" nmcp = "0.1.5" [libraries] @@ -22,7 +22,7 @@ hamcrest = "org.hamcrest:hamcrest:2.1" httpcore5 = "org.apache.httpcomponents.core5:httpcore5:5.3.3" httpclient5 = "org.apache.httpcomponents.client5:httpclient5:5.4.2" idea-ext = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.1.4" -javaparser = "com.github.javaparser:javaparser-core:3.18.0" +javaparser = "com.github.javaparser:javaparser-core:3.27.0" json-schema-validator = "com.networknt:json-schema-validator:1.0.72" json-assert = "org.skyscreamer:jsonassert:1.5.0" jackson-core = { group = "com.fasterxml.jackson.core", name="jackson-core", version.ref="jackson" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 52688c856cb93..f1cfa4a82b8bf 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -480,6 +480,11 @@ + + + + + @@ -2275,6 +2280,11 @@ + + + + + @@ -4076,14 +4086,19 @@ - - - + + + + + + + + - - - + + + @@ -4646,14 +4661,14 @@ - - - + + + - - - + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c4a852da571d7..01450089d2c6c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=443c9c8ee2ac1ee0e11881a40f2376d79c66386264a44b24a9f8ca67e633375f -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip +distributionSha256Sum=f759b8dd5204e2e3fa4ca3e73f452f087153cf81bac9561eeb854229cc2c5365 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/plugins/examples/gradle/wrapper/gradle-wrapper.properties b/plugins/examples/gradle/wrapper/gradle-wrapper.properties index c4a852da571d7..01450089d2c6c 100644 --- a/plugins/examples/gradle/wrapper/gradle-wrapper.properties +++ b/plugins/examples/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=443c9c8ee2ac1ee0e11881a40f2376d79c66386264a44b24a9f8ca67e633375f -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip +distributionSha256Sum=f759b8dd5204e2e3fa4ca3e73f452f087153cf81bac9561eeb854229cc2c5365 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From b4692d9cd725ed91d521d039f12bfb7e6f00189a Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 20 Aug 2025 23:49:34 +0200 Subject: [PATCH 2/2] Fix verification data --- gradle/verification-metadata.xml | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index f1cfa4a82b8bf..1da8ef8ff80ea 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -4066,26 +4066,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4101,6 +4126,11 @@ + + + + + @@ -4111,6 +4141,11 @@ + + + + + @@ -4356,6 +4391,11 @@ + + + + +