From 21a51e8c825da7a89fd29612979ad1be626a7eaa Mon Sep 17 00:00:00 2001 From: AdemZarrouki Date: Thu, 30 Apr 2026 12:25:20 +0200 Subject: [PATCH 1/3] #1881: Add CdkUrlUpdater for AWS CDK --- .../tools/ide/url/tool/cdk/CdkUrlUpdater.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 url-updater/src/main/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdater.java diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdater.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdater.java new file mode 100644 index 0000000000..5fce188c61 --- /dev/null +++ b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdater.java @@ -0,0 +1,29 @@ +package com.devonfw.tools.ide.url.tool.cdk; + +import com.devonfw.tools.ide.url.updater.NpmBasedUrlUpdater; + +/** + * {@link NpmBasedUrlUpdater} for nest. + */ +public class CdkUrlUpdater extends NpmBasedUrlUpdater { + + @Override + public String getTool() { + return "cdk"; + } + + @Override + protected String getPackageName() { + return "aws-cdk"; + } + + @Override + public String getCpeVendor() { + return "cdk"; + } + + @Override + public String getCpeProduct() { + return "cdk"; + } +} From a05620f1afa98ae8910c5b537acae1b5052e472e Mon Sep 17 00:00:00 2001 From: AdemZarrouki Date: Thu, 30 Apr 2026 12:26:19 +0200 Subject: [PATCH 2/3] #1881: Add mock and tests for CdkUrlUpdater integration --- .../ide/url/tool/cdk/CdkUrlUpdaterMock.java | 22 +++++++ .../ide/url/tool/cdk/CdkUrlUpdaterTest.java | 57 +++++++++++++++++++ .../CdkUrlUpdater/cdk-version.json | 10 ++++ 3 files changed, 89 insertions(+) create mode 100644 url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterMock.java create mode 100644 url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterTest.java create mode 100644 url-updater/src/test/resources/integrationtest/CdkUrlUpdater/cdk-version.json diff --git a/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterMock.java b/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterMock.java new file mode 100644 index 0000000000..fe3400fa9a --- /dev/null +++ b/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterMock.java @@ -0,0 +1,22 @@ +package com.devonfw.tools.ide.url.tool.cdk; + +import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; + +/** + * Mock of {@link CdkUrlUpdater} to allow integration testing with wiremock. + */ +public class CdkUrlUpdaterMock extends CdkUrlUpdater { + + private final String baseUrl; + + CdkUrlUpdaterMock(WireMockRuntimeInfo wireMockRuntimeInfo) { + super(); + this.baseUrl = wireMockRuntimeInfo.getHttpBaseUrl() + "/"; + } + + @Override + protected String getDownloadBaseUrl() { + + return this.baseUrl; + } +} diff --git a/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterTest.java b/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterTest.java new file mode 100644 index 0000000000..3fb82d5643 --- /dev/null +++ b/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/cdk/CdkUrlUpdaterTest.java @@ -0,0 +1,57 @@ +package com.devonfw.tools.ide.url.tool.cdk; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.any; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import com.devonfw.tools.ide.url.model.folder.UrlRepository; +import com.devonfw.tools.ide.url.updater.AbstractUrlUpdaterTest; +import com.devonfw.tools.ide.url.updater.JsonUrlUpdater; +import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; +import com.github.tomakehurst.wiremock.junit5.WireMockTest; + + +/** + * Test of {@link CdkUrlUpdater} + */ +@WireMockTest +class CdkUrlUpdaterTest extends AbstractUrlUpdaterTest { + + /** + * Test of {@link JsonUrlUpdater} for the creation of {@link CdkUrlUpdater} download URLs and checksums. + * + * @param tempDir Path to a temporary directory + * @param wmRuntimeInfo the {@link WireMockRuntimeInfo}. + * @throws IOException test fails + */ + @Test + void testCdkJsonUrlUpdaterCreatesDownloadUrlsAndChecksums(@TempDir Path tempDir, WireMockRuntimeInfo wmRuntimeInfo) throws IOException { + + // arrange + stubFor(get(urlMatching("/aws-cdk")).willReturn( + aResponse().withStatus(200).withBody(getJsonBody(wmRuntimeInfo)))); + + stubFor(any(urlMatching("/aws-cdk/-/aws-cdk-[0-9.].*.tgz")).willReturn(aResponse().withStatus(200).withBody(DOWNLOAD_CONTENT))); + + UrlRepository urlRepository = UrlRepository.load(tempDir); + CdkUrlUpdaterMock updater = new CdkUrlUpdaterMock(wmRuntimeInfo); + + // act + updater.update(urlRepository); + + // assert + assertUrlVersionAgnostic(tempDir.resolve("cdk").resolve("cdk").resolve("2.1120.0")); + } + + private static String getJsonBody(WireMockRuntimeInfo wmRuntimeInfo) throws IOException { + return readAndResolve(PATH_INTEGRATION_TEST.resolve("CdkUrlUpdater").resolve("cdk-version.json"), wmRuntimeInfo); + } +} diff --git a/url-updater/src/test/resources/integrationtest/CdkUrlUpdater/cdk-version.json b/url-updater/src/test/resources/integrationtest/CdkUrlUpdater/cdk-version.json new file mode 100644 index 0000000000..2fe0521f3a --- /dev/null +++ b/url-updater/src/test/resources/integrationtest/CdkUrlUpdater/cdk-version.json @@ -0,0 +1,10 @@ +{ + "versions": { + "2.1120.0": { + "version": "2.1120.0", + "dist": { + "tarball": "${testbaseurl}/aws-cdk/-/aws-cdk-2.1120.0.tgz" + } + } + } +} From 790bf3fb648567826c9db3760afda6f380a46fa4 Mon Sep 17 00:00:00 2001 From: AdemZarrouki Date: Thu, 30 Apr 2026 12:26:43 +0200 Subject: [PATCH 3/3] #1881: Add CdkUrlUpdater to UpdateManager --- .../devonfw/tools/ide/url/updater/UpdateManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java index 5dc08f8e7a..fd19f81d50 100644 --- a/url-updater/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java +++ b/url-updater/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java @@ -4,8 +4,6 @@ import java.time.Instant; import java.util.List; -import com.devonfw.tools.ide.url.tool.java.JavaAzulUrlUpdater; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +12,7 @@ import com.devonfw.tools.ide.url.tool.androidstudio.AndroidStudioUrlUpdater; import com.devonfw.tools.ide.url.tool.aws.AwsUrlUpdater; import com.devonfw.tools.ide.url.tool.az.AzureUrlUpdater; +import com.devonfw.tools.ide.url.tool.cdk.CdkUrlUpdater; import com.devonfw.tools.ide.url.tool.copilot.CopilotUrlUpdater; import com.devonfw.tools.ide.url.tool.corepack.CorepackUrlUpdater; import com.devonfw.tools.ide.url.tool.docker.DockerDesktopUrlUpdater; @@ -32,6 +31,7 @@ import com.devonfw.tools.ide.url.tool.helm.HelmUrlUpdater; import com.devonfw.tools.ide.url.tool.intellij.IntellijUrlUpdater; import com.devonfw.tools.ide.url.tool.jasypt.JasyptUrlUpdater; +import com.devonfw.tools.ide.url.tool.java.JavaAzulUrlUpdater; import com.devonfw.tools.ide.url.tool.java.JavaUrlUpdater; import com.devonfw.tools.ide.url.tool.jenkins.JenkinsUrlUpdater; import com.devonfw.tools.ide.url.tool.jmc.JmcUrlUpdater; @@ -69,7 +69,8 @@ public class UpdateManager extends AbstractProcessorWithTimeout { private final UrlFinalReport urlFinalReport; private final List updaters = List.of( - new AndroidStudioUrlUpdater(), new AwsUrlUpdater(), new AzureUrlUpdater(), new CopilotUrlUpdater(), new CorepackUrlUpdater(), new DockerDesktopUrlUpdater(), + new AndroidStudioUrlUpdater(), new AwsUrlUpdater(), new AzureUrlUpdater(), new CdkUrlUpdater(), new CopilotUrlUpdater(), new CorepackUrlUpdater(), + new DockerDesktopUrlUpdater(), new DotNetUrlUpdater(), new EclipseCppUrlUpdater(), new EclipseJeeUrlUpdater(), new EclipseJavaUrlUpdater(), new GCloudUrlUpdater(), new GcViewerUrlUpdater(), new GhUrlUpdater(), new GoUrlUpdater(), new GraalVmCommunityUpdater(), new GraalVmOracleUrlUpdater(), @@ -77,7 +78,8 @@ public class UpdateManager extends AbstractProcessorWithTimeout { new JavaUrlUpdater(), new JavaAzulUrlUpdater(), new JenkinsUrlUpdater(), new JmcUrlUpdater(), new KotlincUrlUpdater(), new KotlincNativeUrlUpdater(), new LazyDockerUrlUpdater(), new MvnUrlUpdater(), new NgUrlUpdater(), new NodeUrlUpdater(), new NpmUrlUpdater(), new OcUrlUpdater(), new PgAdminUrlUpdater(), new PipUrlUpdater(), new PycharmUrlUpdater(), - new PythonUrlUpdater(), new QuarkusUrlUpdater(), new RustUrlUpdater(), new DockerRancherDesktopUrlUpdater(), new SonarUrlUpdater(), new SquirrelSqlUrlUpdater(), + new PythonUrlUpdater(), new QuarkusUrlUpdater(), new RustUrlUpdater(), new DockerRancherDesktopUrlUpdater(), new SonarUrlUpdater(), + new SquirrelSqlUrlUpdater(), new TerraformUrlUpdater(), new TomcatUrlUpdater(), new UvUrlUpdater(), new VsCodeUrlUpdater()); /**