diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonFile.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonFile.java deleted file mode 100644 index 94de41abd9..0000000000 --- a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonFile.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.devonfw.tools.ide.url.tool.python; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Java object to represent the JSON of a single download file of a Python release. Mapping just the needed properties - */ -public class PythonFile { - - @JsonProperty("filename") - private String filename; - - @JsonProperty("arch") - private String arch; - - @JsonProperty("platform") - private String platform; - - @JsonProperty("download_url") - private String download_url; - - /** - * @return the filename of the download. - */ - public String getFilename() { - - return this.filename; - } - - /** - * @return the operating system of the download. - */ - public String getPlatform() { - - return this.platform; - } - - /** - * @return the system architecture of the download. - */ - public String getArch() { - - return this.arch; - } - - /** - * @return the URL of the download. - */ - public String getDownloadUrl() { - - return this.download_url; - } -} diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonJsonObject.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonJsonObject.java deleted file mode 100644 index 20971359c7..0000000000 --- a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonJsonObject.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.devonfw.tools.ide.url.tool.python; - -import java.util.List; - -import com.devonfw.tools.ide.json.JsonObject; - -/** - * Java object to represent the JSON of Python release information. This is the root {@link JsonObject}. - */ -public class PythonJsonObject implements JsonObject { - - private List releases; - - /** - * @param releases new list of {@link PythonRelease}s - */ - public void setReleases(List releases) { - - this.releases = releases; - } - - /** - * @return the {@link List} of {@link PythonRelease}s. - */ - public List getReleases() { - - return this.releases; - } -} diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonRelease.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonRelease.java deleted file mode 100644 index 31a0f47c27..0000000000 --- a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonRelease.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.devonfw.tools.ide.url.tool.python; - -import java.util.List; - -import com.devonfw.tools.ide.json.JsonVersionItem; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Java object to represent the JSON of a Python release. Mapping just the needed Properties - */ -public record PythonRelease(@JsonProperty("version") String version, @JsonProperty("files") List files) implements JsonVersionItem { - -} diff --git a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdater.java b/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdater.java deleted file mode 100644 index 6247f85a30..0000000000 --- a/url-updater/src/main/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdater.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.devonfw.tools.ide.url.tool.python; - -import java.util.Collection; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.devonfw.tools.ide.json.JsonMapping; -import com.devonfw.tools.ide.url.model.folder.UrlVersion; -import com.devonfw.tools.ide.url.updater.JsonUrlUpdater; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * The {@link JsonUrlUpdater} for Python. - */ -public class PythonUrlUpdater extends JsonUrlUpdater { - - private static final String DOWNLOAD_BASE_URL = "undefined-taken-from-JSON"; - private static final String VERSION_BASE_URL = "https://raw.githubusercontent.com"; - - private static final String VERSION_FILENAME = "actions/python-versions/main/versions-manifest.json"; - - private static final ObjectMapper MAPPER = JsonMapping.createWithReflectionSupportForUrlUpdaters(); - - private static final Logger logger = LoggerFactory.getLogger(PythonUrlUpdater.class); - - /** - * The Constructor. - */ - public PythonUrlUpdater() { - super(DOWNLOAD_BASE_URL, VERSION_BASE_URL); - } - - /** - * Package-private constructor used for testing {@link PythonUrlUpdater}. - * - * @param versionBaseUrl mock url used as version base. - */ - PythonUrlUpdater(String versionBaseUrl) { - super(DOWNLOAD_BASE_URL, versionBaseUrl); - } - - @Override - public String getTool() { - - return "python"; - } - - @Override - protected void addVersion(UrlVersion urlVersion, PythonRelease release) { - - String version = release.version(); - - try { - for (PythonFile download : release.files()) { - if (download.getPlatform().equals("win32") && download.getArch().equals("x64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), WINDOWS, X64); - } else if (download.getPlatform().equals("win32") && download.getArch().equals("arm64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), WINDOWS, ARM64); - } else if (download.getPlatform().equals("linux") && download.getArch().equals("x64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), LINUX, X64); - } else if (download.getPlatform().equals("linux") && download.getArch().equals("arm64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), LINUX, ARM64); - } else if (download.getPlatform().equals("darwin") && download.getArch().equals("x64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), MAC, X64); - } else if (download.getPlatform().equals("darwin") && download.getArch().equals("arm64")) { - doAddVersion(urlVersion, download.getDownloadUrl(), MAC, ARM64); - } else { - logger.info("Unknown architecture for tool {} version {} and download {}.", getToolWithEdition(), version, - download.getDownloadUrl()); - } - } - urlVersion.save(); - } catch (Exception exp) { - logger.error("For tool {} we failed to add version {}.", getToolWithEdition(), version, exp); - } - } - - @Override - protected String doGetVersionUrl() { - - return getVersionBaseUrl() + "/" + VERSION_FILENAME; - } - - - @Override - protected Class getJsonObjectType() { - - return PythonJsonObject.class; - } - - @Override - protected PythonJsonObject getJsonObjectFromResponse(String response, String edition) throws JsonProcessingException { - PythonRelease[] res = MAPPER.readValue(response, PythonRelease[].class); - PythonJsonObject jsonObj = new PythonJsonObject(); - jsonObj.setReleases(List.of(res)); - return jsonObj; - } - - @Override - protected Collection getVersionItems(PythonJsonObject jsonObject) { - - return jsonObject.getReleases(); - } - - @Override - public String getCpeVendor() { - return "python"; - } - - @Override - public String getCpeProduct() { - return "python"; - } -} 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 8667ac1cb1..bc7ac7e172 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 @@ -49,7 +49,6 @@ import com.devonfw.tools.ide.url.tool.pgadmin.PgAdminUrlUpdater; import com.devonfw.tools.ide.url.tool.pip.PipUrlUpdater; import com.devonfw.tools.ide.url.tool.pycharm.PycharmUrlUpdater; -import com.devonfw.tools.ide.url.tool.python.PythonUrlUpdater; import com.devonfw.tools.ide.url.tool.quarkus.QuarkusUrlUpdater; import com.devonfw.tools.ide.url.tool.ruby.RubyUrlUpdater; import com.devonfw.tools.ide.url.tool.rust.RustUrlUpdater; @@ -76,13 +75,15 @@ public class UpdateManager extends AbstractProcessorWithTimeout { private final List updaters = List.of( new AndroidStudioUrlUpdater(), new AwsUrlUpdater(), new AzureUrlUpdater(), new ClaudeUrlUpdater(), new CopilotUrlUpdater(), new CorepackUrlUpdater(), - new DockerDesktopUrlUpdater(), new DotNetUrlUpdater(), new EclipseCppUrlUpdater(), new EclipseJeeUrlUpdater(), new EclipseJavaUrlUpdater(), new GcLogAnalyzerUrlUpdater(), - new GCloudUrlUpdater(), new GcViewerUrlUpdater(), new GhUrlUpdater(), new GoUrlUpdater(), new GraalVmCommunityUpdater(), new GraalVmOracleUrlUpdater(), - new GradleUrlUpdater(), new HelmUrlUpdater(), new InsoUrlUpdater(), new IntellijUrlUpdater(), new JasyptUrlUpdater(), new JavaAzulUrlUpdater(), - new JavaUrlUpdater(), new JenkinsUrlUpdater(), new JmcUrlUpdater(), new KotlincUrlUpdater(), new KotlincNativeUrlUpdater(), new LazyDockerUrlUpdater(), new MvnUrlUpdater(), - new MvndUrlUpdater(), new NgUrlUpdater(), new NodeUrlUpdater(), new NpmUrlUpdater(), new OcUrlUpdater(), new PgAdminUrlUpdater(), new PipUrlUpdater(), new PycharmUrlUpdater(), - new PythonUrlUpdater(), new QuarkusUrlUpdater(), new RubyUrlUpdater(), new RustUrlUpdater(), new DockerRancherDesktopUrlUpdater(), new SonarUrlUpdater(), - new SquirrelSqlUrlUpdater(), new SoapUiUrlUpdater(), new TerraformUrlUpdater(), new TomcatUrlUpdater(), new UvUrlUpdater(), new VsCodeUrlUpdater(), new VsCodiumUrlUpdater()); + new DockerDesktopUrlUpdater(), new DotNetUrlUpdater(), new EclipseCppUrlUpdater(), new EclipseJeeUrlUpdater(), new EclipseJavaUrlUpdater(), + new GcLogAnalyzerUrlUpdater(), new GCloudUrlUpdater(), new GcViewerUrlUpdater(), new GhUrlUpdater(), new GoUrlUpdater(), new GraalVmCommunityUpdater(), + new GraalVmOracleUrlUpdater(), new GradleUrlUpdater(), new HelmUrlUpdater(), new InsoUrlUpdater(), new IntellijUrlUpdater(), new JasyptUrlUpdater(), + new JavaAzulUrlUpdater(), new JavaUrlUpdater(), new JenkinsUrlUpdater(), new JmcUrlUpdater(), new KotlincUrlUpdater(), new KotlincNativeUrlUpdater(), + new LazyDockerUrlUpdater(), new MvnUrlUpdater(), new MvndUrlUpdater(), new NgUrlUpdater(), new NodeUrlUpdater(), new NpmUrlUpdater(), new OcUrlUpdater(), + new PgAdminUrlUpdater(), new PipUrlUpdater(), new PycharmUrlUpdater(), new QuarkusUrlUpdater(), new RubyUrlUpdater(), new RustUrlUpdater(), + new DockerRancherDesktopUrlUpdater(), new SonarUrlUpdater(), new SquirrelSqlUrlUpdater(), new SoapUiUrlUpdater(), new TerraformUrlUpdater(), + new TomcatUrlUpdater(), new UvUrlUpdater(), new VsCodeUrlUpdater(), new VsCodiumUrlUpdater()); + /** * The constructor. diff --git a/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdaterTest.java b/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdaterTest.java deleted file mode 100644 index 95968110c0..0000000000 --- a/url-updater/src/test/java/com/devonfw/tools/ide/url/tool/python/PythonUrlUpdaterTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.devonfw.tools.ide.url.tool.python; - -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.BeforeAll; -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.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; -import com.github.tomakehurst.wiremock.junit5.WireMockTest; - -/** - * Test of {@link PythonUrlUpdater}. - */ -@WireMockTest -class PythonUrlUpdaterTest extends AbstractUrlUpdaterTest { - - private static String pythonVersionJson; - - /** - * Creates a python-version json file based on the given test resource in a temporary directory according to the http url and port of the - * {@link WireMockRuntimeInfo}. - * - * @param wmRuntimeInfo wireMock server on a random port - * @throws IOException - */ - @BeforeAll - static void setupTestVersionJson(WireMockRuntimeInfo wmRuntimeInfo) throws IOException { - //preparing test data with dynamic port - pythonVersionJson = readAndResolve(PATH_INTEGRATION_TEST.resolve("PythonUrlUpdater").resolve("python-version.json"), wmRuntimeInfo); - } - - - /** - * Test Python JsonUrlUpdater - * - * @param tempDir Path to a temporary directory - * @param wmRuntimeInfo wireMock server on a random port - */ - @Test - void testPythonURl(@TempDir Path tempDir, WireMockRuntimeInfo wmRuntimeInfo) { - - // given - stubFor(get(urlMatching("/actions/python-versions/main/.*")).willReturn(aResponse().withStatus(200).withBody(pythonVersionJson))); - - stubFor(any(urlMatching("/actions/python-versions/releases/download.*")).willReturn(aResponse().withStatus(200).withBody(DOWNLOAD_CONTENT))); - - UrlRepository urlRepository = UrlRepository.load(tempDir); - PythonUrlUpdater pythonUpdater = new PythonUrlUpdater(wmRuntimeInfo.getHttpBaseUrl()); - pythonUpdater.update(urlRepository); - Path pythonPath = tempDir.resolve("python").resolve("python").resolve("3.12.0"); - - assertUrlVersionOsDefArch(pythonPath); - } -} diff --git a/url-updater/src/test/resources/integrationtest/PythonUrlUpdater/python-version.json b/url-updater/src/test/resources/integrationtest/PythonUrlUpdater/python-version.json deleted file mode 100644 index 9b6cb097a5..0000000000 --- a/url-updater/src/test/resources/integrationtest/PythonUrlUpdater/python-version.json +++ /dev/null @@ -1,92 +0,0 @@ -[ - { - "version": "3.12.0", - "stable": true, - "release_url": "https://github.com/actions/python-versions/releases/tag/3.12.0-6381888192", - "files": [ - { - "filename": "python-3.12.0-darwin-arm64.tar.gz", - "arch": "arm64", - "platform": "darwin", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-darwin-arm64.tar.gz" - }, - { - "filename": "python-3.12.0-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-darwin-x64.tar.gz" - }, - { - "filename": "python-3.12.0-linux-20.04-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "platform_version": "20.04", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-linux-20.04-x64.tar.gz" - }, - { - "filename": "python-3.12.0-linux-22.04-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "platform_version": "22.04", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-linux-22.04-x64.tar.gz" - }, - { - "filename": "python-3.12.0-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-win32-x64.zip" - }, - { - "filename": "python-3.12.0-win32-x86.zip", - "arch": "x86", - "platform": "win32", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-6381888192/python-3.12.0-win32-x86.zip" - } - ] - }, - { - "version": "3.12.0-beta.1", - "stable": false, - "release_url": "http://github.com/actions/python-versions/releases/tag/3.12.0-beta.1-5076755295", - "files": [ - { - "filename": "python-3.12.0-beta.1-darwin-arm64.tar.gz", - "arch": "arm64", - "platform": "darwin", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-darwin-arm64.tar.gz" - }, - { - "filename": "python-3.12.0-beta.1-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-darwin-x64.tar.gz" - }, - { - "filename": "python-3.12.0-beta.1-linux-20.04-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "platform_version": "20.04", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-linux-20.04-x64.tar.gz" - }, - { - "filename": "python-3.12.0-beta.1-linux-22.04-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "platform_version": "22.04", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-linux-22.04-x64.tar.gz" - }, - { - "filename": "python-3.12.0-beta.1-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-win32-x64.zip" - }, - { - "filename": "python-3.12.0-beta.1-win32-x86.zip", - "arch": "x86", - "platform": "win32", - "download_url": "${testbaseurl}/actions/python-versions/releases/download/3.12.0-beta.1-5076755295/python-3.12.0-beta.1-win32-x86.zip" - } - ] - } -]