diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d03649f54..6cf58c087 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: contents: read strategy: matrix: - java: ['8', '11','17','21'] + java: ['11','17','21'] name: Java ${{ matrix.java }} steps: - name: Azure login diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8c0cc20f9..b7a157918 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,7 +36,7 @@ jobs: environment: build strategy: matrix: - java: [ '8' ] + java: [ '11' ] name: Java ${{ matrix.java }} steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index b500450f7..b4d47a6ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [8.0.0] - 2026-01-07 + +### Changed +- **[BREAKING] Minimum Java version requirement updated to Java 11.** Previous versions supported Java 8. + Starting with version 8.0.0, Java 11 or later is required to use this SDK. + ## [7.0.5] - 2025-12-24 ### Fixed diff --git a/data/pom.xml b/data/pom.xml index 375371066..42f4bb66d 100644 --- a/data/pom.xml +++ b/data/pom.xml @@ -37,8 +37,7 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - ${java.version} - ${java.version} + ${java.version} diff --git a/data/src/main/java/com/microsoft/azure/kusto/data/UriUtils.java b/data/src/main/java/com/microsoft/azure/kusto/data/UriUtils.java index 97cdaa57b..8c531ed38 100644 --- a/data/src/main/java/com/microsoft/azure/kusto/data/UriUtils.java +++ b/data/src/main/java/com/microsoft/azure/kusto/data/UriUtils.java @@ -3,7 +3,7 @@ import java.io.File; import java.net.URI; import java.net.URISyntaxException; -import java.nio.file.Paths; +import java.nio.file.Path; import java.util.Objects; public class UriUtils { @@ -115,7 +115,7 @@ public static String stripFileNameFromCommandLine(String cmdLine) { String processNameForTracing = cmdLine; if (processNameForTracing != null) { - processNameForTracing = Paths.get(processNameForTracing.trim().split(" ")[0]).getFileName().toString(); + processNameForTracing = Path.of(processNameForTracing.trim().split(" ")[0]).getFileName().toString(); } return processNameForTracing; diff --git a/data/src/test/java/com/microsoft/azure/kusto/data/ConnectionStringBuilderTest.java b/data/src/test/java/com/microsoft/azure/kusto/data/ConnectionStringBuilderTest.java index 45f92d8ed..75dd2656a 100644 --- a/data/src/test/java/com/microsoft/azure/kusto/data/ConnectionStringBuilderTest.java +++ b/data/src/test/java/com/microsoft/azure/kusto/data/ConnectionStringBuilderTest.java @@ -12,7 +12,7 @@ import java.io.IOException; import java.net.URISyntaxException; -import java.nio.file.Paths; +import java.nio.file.Path; import java.security.PrivateKey; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; @@ -64,8 +64,8 @@ void createWithUserPrompt() { void createWithAadApplicationCertificate() throws CertificateException, OperatorCreationException, PKCSException, IOException { - String certFilePath = Paths.get("src", "test", "resources", "cert.cer").toString(); - String privateKeyPath = Paths.get("src", "test", "resources", "key.pem").toString(); + String certFilePath = Path.of("src", "test", "resources", "cert.cer").toString(); + String privateKeyPath = Path.of("src", "test", "resources", "key.pem").toString(); X509Certificate x509Certificate = readPem(certFilePath, "basic").getCertificate(); PrivateKey privateKey = readPem(privateKeyPath, "basic").getKey(); diff --git a/data/src/test/java/com/microsoft/azure/kusto/data/UtilitiesTest.java b/data/src/test/java/com/microsoft/azure/kusto/data/UtilitiesTest.java index 7e61ee507..dbd93c681 100644 --- a/data/src/test/java/com/microsoft/azure/kusto/data/UtilitiesTest.java +++ b/data/src/test/java/com/microsoft/azure/kusto/data/UtilitiesTest.java @@ -22,7 +22,7 @@ import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; -import java.nio.file.Paths; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -150,7 +150,7 @@ void removeExtensionFromFileName() { @Test @DisplayName("Assert file name extracted from some cmd line") void extractFileNameFromCommandLine() { - String cmdLine = Paths.get(" home", "user", "someFile.jar") + " -arg1 val"; + String cmdLine = Path.of(" home", "user", "someFile.jar") + " -arg1 val"; Assertions.assertEquals(UriUtils.stripFileNameFromCommandLine(cmdLine), "someFile.jar"); } diff --git a/data/src/test/java/com/microsoft/azure/kusto/data/auth/AadAuthenticationHelperTest.java b/data/src/test/java/com/microsoft/azure/kusto/data/auth/AadAuthenticationHelperTest.java index 153a38d9d..5683934d1 100644 --- a/data/src/test/java/com/microsoft/azure/kusto/data/auth/AadAuthenticationHelperTest.java +++ b/data/src/test/java/com/microsoft/azure/kusto/data/auth/AadAuthenticationHelperTest.java @@ -11,7 +11,7 @@ import java.io.IOException; import java.lang.reflect.Field; import java.net.URISyntaxException; -import java.nio.file.Paths; +import java.nio.file.Path; import java.security.PrivateKey; import java.security.Security; import java.security.cert.CertificateException; @@ -59,8 +59,8 @@ public static void setUp() throws URISyntaxException { @DisplayName("validate auth with certificate throws exception when missing or invalid parameters") void acquireWithClientCertificateNullKey() throws CertificateException, OperatorCreationException, PKCSException, IOException, URISyntaxException { - String certFilePath = Paths.get("src", "test", "resources", "cert.cer").toString(); - String privateKeyPath = Paths.get("src", "test", "resources", "key.pem").toString(); + String certFilePath = Path.of("src", "test", "resources", "cert.cer").toString(); + String privateKeyPath = Path.of("src", "test", "resources", "key.pem").toString(); X509Certificate x509Certificate = readPem(certFilePath, "basic").getCertificate(); PrivateKey privateKey = readPem(privateKeyPath, "basic").getKey(); @@ -114,8 +114,8 @@ public static KeyCert readPem(String path, String password) @DisplayName("validate cached token. Refresh if needed. Call regularly if no refresh token") void useCachedTokenAndRefreshWhenNeeded() throws IOException, DataServiceException, URISyntaxException, CertificateException, OperatorCreationException, PKCSException, DataClientException { - String certFilePath = Paths.get("src", "test", "resources", "cert.cer").toString(); - String privateKeyPath = Paths.get("src", "test", "resources", "key.pem").toString(); + String certFilePath = Path.of("src", "test", "resources", "cert.cer").toString(); + String privateKeyPath = Path.of("src", "test", "resources", "key.pem").toString(); X509Certificate x509Certificate = readPem(certFilePath, "basic").getCertificate(); PrivateKey privateKey = readPem(privateKeyPath, "basic").getKey(); diff --git a/ingest/pom.xml b/ingest/pom.xml index 6d24a5da7..88681863f 100644 --- a/ingest/pom.xml +++ b/ingest/pom.xml @@ -37,8 +37,7 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - ${java.version} - ${java.version} + ${java.version} diff --git a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/AzureStorageClientTest.java b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/AzureStorageClientTest.java index 27a727fd9..bfeaa1324 100644 --- a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/AzureStorageClientTest.java +++ b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/AzureStorageClientTest.java @@ -21,7 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import static com.microsoft.azure.kusto.ingest.IngestClientBase.shouldCompress; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -38,9 +38,9 @@ class AzureStorageClientTest { @BeforeAll static void setUp() { - testFilePath = Paths.get("src", "test", "resources", "testdata.json").toString(); + testFilePath = Path.of("src", "test", "resources", "testdata.json").toString(); testFile = new File(testFilePath); - String testFilePathCompressed = Paths.get("src", "test", "resources", "testdata.json.gz").toString(); + String testFilePathCompressed = Path.of("src", "test", "resources", "testdata.json.gz").toString(); testFileCompressed = new File(testFilePathCompressed); blob = TestUtils.containerWithSasFromContainerName("storageUrl").getAsyncContainer().getBlobAsyncClient("bloby"); } @@ -145,7 +145,7 @@ void uploadLocalFileToBlob_FileDoesNotExist_IOException() { @Test void uploadStreamToBlob_NotCompressMode_UploadStreamIsCalled() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { doAnswer(answer -> Mono.just(10)) .when(azureStorageClientSpy) .uploadStream(any(InputStream.class), any(BlobAsyncClient.class)); @@ -158,7 +158,7 @@ void uploadStreamToBlob_NotCompressMode_UploadStreamIsCalled() throws IOExceptio @Test void uploadStreamToBlob_CompressMode_CompressAndUploadStreamIsCalled() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { doAnswer(answer -> Mono.just(10)) .when(azureStorageClientSpy) .compressAndUploadStream(any(InputStream.class), any(BlobAsyncClient.class)); @@ -179,7 +179,7 @@ void UploadStreamToBlob_NullInputStream_IllegalArgumentException() { @Test void uploadStreamToBlob_NullBlobName_IllegalArgumentException() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { BlobContainerAsyncClient storageUrl = new BlobContainerClientBuilder().endpoint("https://blobPath.blob.core.windows.net/container/blob") .buildAsyncClient(); assertThrows( @@ -190,7 +190,7 @@ void uploadStreamToBlob_NullBlobName_IllegalArgumentException() throws IOExcepti @Test void uploadStreamToBlob_NullStorageUri_IllegalArgumentException() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { assertThrows( IllegalArgumentException.class, () -> azureStorageClient.uploadStreamToBlob(stream, "blobName", null, false)); @@ -235,7 +235,7 @@ void uploadStream_NullInputStream_IllegalArgumentException() { @Test void uploadStream_NullBlob_IllegalArgumentException() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { assertThrows( IllegalArgumentException.class, () -> azureStorageClient.uploadStream(stream, null)); @@ -252,7 +252,7 @@ void compressAndStream_NullStream_IllegalArgumentException() { @Test void compressAndStream_NullBlob_IllegalArgumentException() throws IOException { - try (InputStream stream = Files.newInputStream(Paths.get(testFilePath))) { + try (InputStream stream = Files.newInputStream(Path.of(testFilePath))) { assertThrows( IllegalArgumentException.class, () -> azureStorageClient.compressAndUploadStream(stream, null)); diff --git a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/E2ETest.java b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/E2ETest.java index 8c0ea0b86..766e9d28f 100644 --- a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/E2ETest.java +++ b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/E2ETest.java @@ -23,7 +23,7 @@ import java.io.InputStreamReader; import java.net.URISyntaxException; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.security.GeneralSecurityException; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -194,9 +194,9 @@ private static void createTableAndMapping() { Assertions.fail("Failed to drop and create new table", ex); } - resourcesPath = Paths.get(System.getProperty("user.dir"), "src", "test", "resources").toString(); + resourcesPath = Path.of(System.getProperty("user.dir"), "src", "test", "resources").toString(); try { - String mappingAsString = new String(Files.readAllBytes(Paths.get(resourcesPath, "dataset_mapping.json"))); + String mappingAsString = new String(Files.readAllBytes(Path.of(resourcesPath, "dataset_mapping.json"))); queryClient.executeToJsonResult(DB_NAME, String.format(".create table %s ingestion json mapping '%s' '%s'", tableName, mappingReference, mappingAsString), null); } catch (Exception ex) { diff --git a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/QueuedIngestClientTest.java b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/QueuedIngestClientTest.java index 81e90593f..d09cbfb88 100644 --- a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/QueuedIngestClientTest.java +++ b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/QueuedIngestClientTest.java @@ -33,7 +33,7 @@ import java.io.InputStream; import java.net.URISyntaxException; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -70,7 +70,7 @@ class QueuedIngestClientTest { @BeforeAll static void setUp() throws Exception { - testFilePath = Paths.get("src", "test", "resources", "testdata.csv").toString(); + testFilePath = Path.of("src", "test", "resources", "testdata.csv").toString(); when(resourceManagerMock.getShuffledContainers()) .thenReturn(Collections.singletonList(TestUtils.containerWithSasFromAccountNameAndContainerName(ACCOUNT_NAME, "someStorage"))); when(resourceManagerMock.getShuffledQueues()) @@ -222,7 +222,7 @@ void ingestFromFileAsync_FileDoesNotExist_IngestionClientException() { @Test void ingestFromStream_UploadStreamToBlobIsCalled() throws Exception { - InputStream stream = Files.newInputStream(Paths.get(testFilePath)); + InputStream stream = Files.newInputStream(Path.of(testFilePath)); StreamSourceInfo streamSourceInfo = new StreamSourceInfo(stream, false); try { queuedIngestClient.ingestFromStream(streamSourceInfo, ingestionProperties); diff --git a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/StreamingIngestClientTest.java b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/StreamingIngestClientTest.java index 84ea09263..ecfcc0365 100644 --- a/ingest/src/test/java/com/microsoft/azure/kusto/ingest/StreamingIngestClientTest.java +++ b/ingest/src/test/java/com/microsoft/azure/kusto/ingest/StreamingIngestClientTest.java @@ -40,7 +40,7 @@ import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.stream.Stream; @@ -329,7 +329,7 @@ void ingestFromFile_Csv() throws Exception { void ingestFromFile_Json() throws Exception { String path = resourcesDirectory + "testdata.json"; FileSourceInfo fileSourceInfo = new FileSourceInfo(path); - String contents = new String(Files.readAllBytes(Paths.get(path)), StandardCharsets.UTF_8).trim(); + String contents = new String(Files.readAllBytes(Path.of(path)), StandardCharsets.UTF_8).trim(); ingestionProperties.setDataFormat(IngestionProperties.DataFormat.JSON); ingestionProperties.setIngestionMapping("JsonMapping", IngestionMapping.IngestionMappingKind.JSON); diff --git a/pom.xml b/pom.xml index f8682ab21..705519246 100644 --- a/pom.xml +++ b/pom.xml @@ -32,9 +32,9 @@ - 7.0.5 + 8.0.0 UTF-8 - 1.8 + 11 1.2.28 @@ -63,18 +63,6 @@ 5.11.0 0.8.11 - - - - java8 - - [1.8,11) - - - 4.5.1 - - - ingest diff --git a/quickstart/pom.xml b/quickstart/pom.xml index d07613199..5c9e5913e 100644 --- a/quickstart/pom.xml +++ b/quickstart/pom.xml @@ -34,7 +34,7 @@ 7.0.5 - 1.8 + 11 3.2.0 3.8.1 3.3.0 @@ -49,8 +49,7 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - ${java.version} - ${java.version} + ${java.version} diff --git a/samples/pom.xml b/samples/pom.xml index be03ffdc6..ba994b702 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -19,8 +19,7 @@ maven-compiler-plugin ${maven-compiler-plugin.version} - ${java.version} - ${java.version} + ${java.version}