diff --git a/src/main/java/org/eclipsefoundation/downloads/api/DrupalAPI.java b/src/main/java/org/eclipsefoundation/downloads/api/DrupalAPI.java index 091de37372560a97b3ae0bdc01ce1cc385d1484e..3eb7da93929909a4d09041e7b25338459251b6a8 100644 --- a/src/main/java/org/eclipsefoundation/downloads/api/DrupalAPI.java +++ b/src/main/java/org/eclipsefoundation/downloads/api/DrupalAPI.java @@ -11,8 +11,10 @@ */ package org.eclipsefoundation.downloads.api; +import java.util.Map; + import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; -import org.eclipsefoundation.downloads.models.ReleaseVersionPackages.ReleaseTrackerPackages; +import org.eclipsefoundation.downloads.models.ReleaseVersionPackages.ReleaseTrackerPackage; import org.eclipsefoundation.downloads.models.TrackedReleases; import jakarta.ws.rs.GET; @@ -43,5 +45,5 @@ public interface DrupalAPI { */ @GET @Path("downloads/packages/admin/release_tracker/json/{releaseName}%20{version}/all") - ReleaseTrackerPackages get(@PathParam("releaseName") String releaseName, @PathParam("version") String version); + Map<String, ReleaseTrackerPackage> get(@PathParam("releaseName") String releaseName, @PathParam("version") String version); } diff --git a/src/main/java/org/eclipsefoundation/downloads/models/ReleaseVersionPackages.java b/src/main/java/org/eclipsefoundation/downloads/models/ReleaseVersionPackages.java index 1995448522161d37afed5c6b29e4e4e68c6907e7..b970419ba7e380de14891240912274e8b6bf36cd 100644 --- a/src/main/java/org/eclipsefoundation/downloads/models/ReleaseVersionPackages.java +++ b/src/main/java/org/eclipsefoundation/downloads/models/ReleaseVersionPackages.java @@ -12,16 +12,15 @@ package org.eclipsefoundation.downloads.models; import java.util.List; +import java.util.Map; -import jakarta.annotation.Nullable; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import com.google.auto.value.AutoValue; +import jakarta.annotation.Nullable; + /** * Serialization for input/output of the release version packages. * @@ -35,7 +34,7 @@ public abstract class ReleaseVersionPackages { public abstract String getReleaseVersion(); - public abstract ReleaseTrackerPackages getPackages(); + public abstract Map<String, ReleaseTrackerPackage> getPackages(); public static Builder builder() { return new AutoValue_ReleaseVersionPackages.Builder(); @@ -48,103 +47,11 @@ public abstract class ReleaseVersionPackages { public abstract Builder setReleaseVersion(String releaseVersion); - public abstract Builder setPackages(ReleaseTrackerPackages packages); + public abstract Builder setPackages(Map<String, ReleaseTrackerPackage> packages); public abstract ReleaseVersionPackages build(); } - @AutoValue - @JsonDeserialize(builder = AutoValue_ReleaseVersionPackages_ReleaseTrackerPackages.Builder.class) - public abstract static class ReleaseTrackerPackages { - @Nullable - @JsonProperty("java-package") - public abstract ReleaseTrackerPackage getJavaPackage(); - - @Nullable - @JsonProperty("jee-package") - public abstract ReleaseTrackerPackage getJEEPackage(); - - @Nullable - @JsonProperty("cpp-package") - public abstract ReleaseTrackerPackage getCPPPackage(); - - @Nullable - @JsonProperty("committers-package") - public abstract ReleaseTrackerPackage getCommittersPackage(); - - @Nullable - @JsonProperty("php-package") - public abstract ReleaseTrackerPackage getPHPPackage(); - - @Nullable - @JsonProperty("dsl-package") - public abstract ReleaseTrackerPackage getDSLPackage(); - - @Nullable - @JsonProperty("embedcpp-package") - public abstract ReleaseTrackerPackage getEmbeddedCPPPackage(); - - @Nullable - @JsonProperty("modeling-package") - public abstract ReleaseTrackerPackage getModelingPackage(); - - @Nullable - @JsonProperty("rcp-package") - public abstract ReleaseTrackerPackage getRCPPackage(); - - @JsonInclude(Include.NON_NULL) - @Nullable - @JsonProperty("parallel-package") - public abstract ReleaseTrackerPackage getParallelPackage(); - - @Nullable - @JsonProperty("scout-package") - public abstract ReleaseTrackerPackage getScoutPackage(); - - public static Builder builder() { - return new AutoValue_ReleaseVersionPackages_ReleaseTrackerPackages.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - @JsonProperty("java-package") - public abstract Builder setJavaPackage(@Nullable ReleaseTrackerPackage javaPackage); - - @JsonProperty("jee-package") - public abstract Builder setJEEPackage(@Nullable ReleaseTrackerPackage jeePackage); - - @JsonProperty("cpp-package") - public abstract Builder setCPPPackage(@Nullable ReleaseTrackerPackage cppPackage); - - @JsonProperty("committers-package") - public abstract Builder setCommittersPackage(@Nullable ReleaseTrackerPackage committersPackage); - - @JsonProperty("php-package") - public abstract Builder setPHPPackage(@Nullable ReleaseTrackerPackage phpPackage); - - @JsonProperty("dsl-package") - public abstract Builder setDSLPackage(@Nullable ReleaseTrackerPackage dslPackage); - - @JsonProperty("embedcpp-package") - public abstract Builder setEmbeddedCPPPackage(@Nullable ReleaseTrackerPackage embeddedCPPPackage); - - @JsonProperty("modeling-package") - public abstract Builder setModelingPackage(@Nullable ReleaseTrackerPackage modelingPackage); - - @JsonProperty("rcp-package") - public abstract Builder setRCPPackage(@Nullable ReleaseTrackerPackage rcpPackage); - - @JsonProperty("parallel-package") - public abstract Builder setParallelPackage(@Nullable ReleaseTrackerPackage parallelPackage); - - @JsonProperty("scout-package") - public abstract Builder setScoutPackage(@Nullable ReleaseTrackerPackage scoutPackage); - - public abstract ReleaseTrackerPackages build(); - } - } - @AutoValue @JsonDeserialize(builder = AutoValue_ReleaseVersionPackages_ReleaseTrackerPackage.Builder.class) public abstract static class ReleaseTrackerPackage { diff --git a/src/main/java/org/eclipsefoundation/downloads/resources/DownloadsResource.java b/src/main/java/org/eclipsefoundation/downloads/resources/DownloadsResource.java index 58cd6f0382e1adbca0c00a785596866f9d9afd3a..ee6ae7a60644b7a983b2b017bd55d32b75b43f77 100644 --- a/src/main/java/org/eclipsefoundation/downloads/resources/DownloadsResource.java +++ b/src/main/java/org/eclipsefoundation/downloads/resources/DownloadsResource.java @@ -13,6 +13,7 @@ package org.eclipsefoundation.downloads.resources; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.function.Predicate; import java.util.function.Supplier; @@ -24,7 +25,7 @@ import org.eclipsefoundation.caching.service.CachingService; import org.eclipsefoundation.downloads.api.DrupalAPI; import org.eclipsefoundation.downloads.dto.DownloadFileIndex; import org.eclipsefoundation.downloads.models.ReleaseVersionPackages; -import org.eclipsefoundation.downloads.models.ReleaseVersionPackages.ReleaseTrackerPackages; +import org.eclipsefoundation.downloads.models.ReleaseVersionPackages.ReleaseTrackerPackage; import org.eclipsefoundation.downloads.models.TrackedReleases.Release; import org.eclipsefoundation.downloads.models.TrackedReleases.ReleaseVersion; import org.eclipsefoundation.downloads.namespaces.DownloadsUrlParameterNames; @@ -244,7 +245,7 @@ public class DownloadsResource { } // get the release package from the Drupal API - Optional<ReleaseTrackerPackages> rtp = getVersionPackages(releaseName, releaseVersion); + Optional<Map<String, ReleaseTrackerPackage>> rtp = getVersionPackages(releaseName, releaseVersion); if (rtp.isEmpty()) { String message = String .format("Could not find package definitions for release '%s', version '%s'", releaseName, releaseVersion); @@ -307,9 +308,9 @@ public class DownloadsResource { * @param version the version name of the specific release * @return */ - private Optional<ReleaseTrackerPackages> getVersionPackages(String releaseName, String releaseVersion) { + private Optional<Map<String, ReleaseTrackerPackage>> getVersionPackages(String releaseName, String releaseVersion) { return cache - .get(releaseName + releaseVersion, new MultivaluedHashMap<>(), ReleaseTrackerPackages.class, + .get(releaseName + releaseVersion, new MultivaluedHashMap<>(), Map.class, () -> api.get(releaseName, releaseVersion)) .data(); }