diff --git a/.github/workflows/test-jdk8-compat-unit.yml b/.github/workflows/test-jdk8-compat-unit.yml new file mode 100644 index 0000000000..b0695a4a86 --- /dev/null +++ b/.github/workflows/test-jdk8-compat-unit.yml @@ -0,0 +1,30 @@ +name: Unit + +on: [push, pull_request] + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - name: Checkout Java Client + uses: actions/checkout@v3 + + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: 8 + distribution: 'temurin' + cache: 'gradle' + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: 11 + distribution: 'temurin' + cache: 'gradle' + + - name: Run Unit Test + run: ./gradlew clean unitTest -Pcheck-jdk8-compatibility=true diff --git a/java-client/build.gradle.kts b/java-client/build.gradle.kts index 8d0522d4d0..fad6b558eb 100644 --- a/java-client/build.gradle.kts +++ b/java-client/build.gradle.kts @@ -32,6 +32,7 @@ import com.github.jk1.license.ProjectData import com.github.jk1.license.render.ReportRenderer +import org.gradle.api.tasks.testing.Test import java.io.FileWriter buildscript { @@ -337,7 +338,9 @@ publishing { } } -if (JavaVersion.current() >= JavaVersion.VERSION_11) { +// Use `-Pcheck-jdk8-compatibility=true` to +val jdk8compatibility = (project.findProperty("check-jdk8-compatibility") as String?).toBoolean() +if (JavaVersion.current() >= JavaVersion.VERSION_11 && jdk8compatibility == false) { val java11: SourceSet = sourceSets.create("java11") { java { compileClasspath += sourceSets.main.get().output + sourceSets.test.get().output @@ -369,5 +372,17 @@ if (JavaVersion.current() >= JavaVersion.VERSION_11) { testClassesDirs += java11.output.classesDirs classpath = sourceSets["java11"].runtimeClasspath } - -} +} else if (jdk8compatibility == true) { + java { + toolchain { + languageVersion = JavaLanguageVersion.of(8) + vendor = JvmVendorSpec.ADOPTIUM + } + } + + tasks.register("tests-jdk8") { + javaLauncher = javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(8) + } + } +} \ No newline at end of file diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/PutIndexTemplateRequestTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutIndexTemplateRequestTest.java index eb95320333..6de5b06252 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/core/PutIndexTemplateRequestTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/PutIndexTemplateRequestTest.java @@ -2,8 +2,10 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.json.stream.JsonParser; import java.io.StringReader; -import java.util.List; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Test; @@ -16,15 +18,19 @@ public class PutIndexTemplateRequestTest extends Assert { @Test public void deserialize_validFieldsIncluded_RequestIsBuilt() throws JsonProcessingException { final JsonpMapper mapper = new JsonbJsonpMapper(); - final Map indexTemplateMap = Map.of("name", "test", "index_patterns", "*", "create", true, "priority", 1); + final Map indexTemplateMap = new HashMap<>(); + indexTemplateMap.put("name", "test"); + indexTemplateMap.put("index_patterns", "*"); + indexTemplateMap.put("create", true); + indexTemplateMap.put("priority", 1); final String indexTemplate = new ObjectMapper().writeValueAsString(indexTemplateMap); - final var parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate)); + final JsonParser parser = mapper.jsonProvider().createParser(new StringReader(indexTemplate)); final PutIndexTemplateRequest putIndexTemplateRequest = PutIndexTemplateRequest._DESERIALIZER.deserialize(parser, mapper); assertEquals(putIndexTemplateRequest.name(), "test"); - assertEquals(putIndexTemplateRequest.indexPatterns(), List.of("*")); + assertEquals(putIndexTemplateRequest.indexPatterns(), Collections.singletonList("*")); assertEquals((int) putIndexTemplateRequest.priority(), 1); } diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/search/InnerHitsTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/search/InnerHitsTest.java index 1269ebb0df..b9b4cdfa71 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/core/search/InnerHitsTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/search/InnerHitsTest.java @@ -9,7 +9,7 @@ import jakarta.json.stream.JsonParser; import java.io.StringReader; import java.io.StringWriter; -import java.util.List; +import java.util.Arrays; import org.junit.Test; import org.opensearch.client.json.JsonpMapper; import org.opensearch.client.json.JsonpSerializable; @@ -26,7 +26,7 @@ public class InnerHitsTest { */ @Test public void testInnerHitStoredFields() { - InnerHits hits = InnerHits.of((it) -> it.storedFields(List.of("field1", "field2"))); + InnerHits hits = InnerHits.of((it) -> it.storedFields(Arrays.asList("field1", "field2"))); assertTrue(toJson(hits).contains("stored_fields")); } diff --git a/settings.gradle.kts b/settings.gradle.kts index 6d462291d4..ad0c8fa422 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -30,6 +30,10 @@ * GitHub history for details. */ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0") +} + rootProject.name = "opensearch-java" include("java-client") include("samples") \ No newline at end of file