diff --git a/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java b/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java deleted file mode 100644 index 4b0daa9cf56aca2598d116e4a1aebfb6df992c7c..0000000000000000000000000000000000000000 --- a/src/main/java/org/eclipsefoundation/adopters/api/WorkingGroupsAPI.java +++ /dev/null @@ -1,34 +0,0 @@ -/********************************************************************* -* Copyright (c) 2022 Eclipse Foundation. -* -* This program and the accompanying materials are made -* available under the terms of the Eclipse Public License 2.0 -* which is available at https://www.eclipse.org/legal/epl-2.0/ -* -* Author: Martin Lowe <martin.lowe@eclipse-foundation.org> -* -* SPDX-License-Identifier: EPL-2.0 -**********************************************************************/ -package org.eclipsefoundation.adopters.api; - -import java.util.List; - -import javax.ws.rs.BeanParam; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; -import org.eclipsefoundation.core.service.APIMiddleware.BaseAPIParameters; - -@Path("working-groups/") -@Produces(MediaType.APPLICATION_JSON) -@RegisterRestClient(configKey = "wg-api") -public interface WorkingGroupsAPI { - - @GET - public Response getAll(@BeanParam BaseAPIParameters baseParams, @QueryParam("status") List<String> statuses); -} diff --git a/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java b/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java deleted file mode 100644 index eb0ba1f3d9580ed2a244dd0f60dd3b5b1a4fbe83..0000000000000000000000000000000000000000 --- a/src/main/java/org/eclipsefoundation/adopters/api/models/WorkingGroup.java +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Copyright (c) 2021 Eclipse Foundation - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * Author: Martin Lowe <martin.lowe@eclipse-foundation.org> - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipsefoundation.adopters.api.models; - -import java.util.List; - -import javax.annotation.Nullable; - -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; - -/** - * JSON object for importing Working group JSON assets. - * - * @author Martin Lowe <martin.lowe@eclipse-foundation.org> - */ -@AutoValue -@JsonDeserialize(builder = AutoValue_WorkingGroup.Builder.class) -public abstract class WorkingGroup { - public abstract String getAlias(); - - public abstract String getTitle(); - - public abstract String getStatus(); - - public abstract String getLogo(); - - public abstract String getDescription(); - - public abstract String getParentOrganization(); - - public abstract WorkingGroupResources getResources(); - - public abstract List<WorkingGroupParticipationLevel> getLevels(); - - public static Builder builder() { - return new AutoValue_WorkingGroup.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - public abstract Builder setAlias(String alias); - - public abstract Builder setTitle(String title); - - public abstract Builder setStatus(String status); - - public abstract Builder setLogo(String logo); - - public abstract Builder setDescription(String description); - - public abstract Builder setParentOrganization(String parentOrganization); - - public abstract Builder setResources(WorkingGroupResources resources); - - public abstract Builder setLevels(List<WorkingGroupParticipationLevel> levels); - - public abstract WorkingGroup build(); - } - - @AutoValue - @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupResources.Builder.class) - public abstract static class WorkingGroupResources { - public abstract String getCharter(); - - @JsonProperty("participation_agreements") - public abstract WorkingGroupParticipationAgreements getParticipationAgreements(); - - public abstract String getWebsite(); - - public abstract String getMembers(); - - public abstract String getSponsorship(); - - public abstract String getContactForm(); - - public static Builder builder() { - return new AutoValue_WorkingGroup_WorkingGroupResources.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - public abstract Builder setCharter(String charter); - - public abstract Builder setParticipationAgreements( - WorkingGroupParticipationAgreements participationAgreements); - - public abstract Builder setWebsite(String website); - - public abstract Builder setMembers(String members); - - public abstract Builder setSponsorship(String sponsorship); - - public abstract Builder setContactForm(String contactForm); - - public abstract WorkingGroupResources build(); - } - } - - @AutoValue - @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationLevel.Builder.class) - public abstract static class WorkingGroupParticipationLevel { - public abstract String getRelation(); - - public abstract String getDescription(); - - public static Builder builder() { - return new AutoValue_WorkingGroup_WorkingGroupParticipationLevel.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - public abstract Builder setRelation(String relation); - - public abstract Builder setDescription(String description); - - public abstract WorkingGroupParticipationLevel build(); - } - } - - @AutoValue - @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationAgreement.Builder.class) - public abstract static class WorkingGroupParticipationAgreement { - @JsonProperty("document_id") - public abstract String getDocumentId(); - - public abstract String getPdf(); - - public static Builder builder() { - return new AutoValue_WorkingGroup_WorkingGroupParticipationAgreement.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - - public abstract Builder setDocumentId(String documentId); - - public abstract Builder setPdf(String pdf); - - public abstract WorkingGroupParticipationAgreement build(); - } - } - - @AutoValue - @JsonDeserialize(builder = AutoValue_WorkingGroup_WorkingGroupParticipationAgreements.Builder.class) - public abstract static class WorkingGroupParticipationAgreements { - @Nullable - public abstract WorkingGroupParticipationAgreement getIndividual(); - - @Nullable - public abstract WorkingGroupParticipationAgreement getOrganization(); - - public static Builder builder() { - return new AutoValue_WorkingGroup_WorkingGroupParticipationAgreements.Builder(); - } - - @AutoValue.Builder - @JsonPOJOBuilder(withPrefix = "set") - public abstract static class Builder { - - public abstract Builder setIndividual(@Nullable WorkingGroupParticipationAgreement individual); - - public abstract Builder setOrganization(@Nullable WorkingGroupParticipationAgreement organization); - - public abstract WorkingGroupParticipationAgreements build(); - } - } -} diff --git a/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java b/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java deleted file mode 100644 index ffe84fcdb42b9afbc07c709f9b2e03deca1ca111..0000000000000000000000000000000000000000 --- a/src/main/java/org/eclipsefoundation/adopters/precaches/WorkingGroupPrecacheProvider.java +++ /dev/null @@ -1,50 +0,0 @@ -/********************************************************************* -* Copyright (c) 2023 Eclipse Foundation. -* -* This program and the accompanying materials are made -* available under the terms of the Eclipse Public License 2.0 -* which is available at https://www.eclipse.org/legal/epl-2.0/ -* -* Author: Zachary Sabourin <zachary.sabourin@eclipse-foundation.org> -* -* SPDX-License-Identifier: EPL-2.0 -**********************************************************************/ -package org.eclipsefoundation.adopters.precaches; - -import java.util.List; - -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.inject.Named; - -import org.eclipse.microprofile.rest.client.inject.RestClient; -import org.eclipsefoundation.adopters.api.WorkingGroupsAPI; -import org.eclipsefoundation.adopters.api.models.WorkingGroup; -import org.eclipsefoundation.core.model.ParameterizedCacheKey; -import org.eclipsefoundation.core.service.APIMiddleware; -import org.eclipsefoundation.core.service.LoadingCacheManager.LoadingCacheProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Named("working-groups") -@ApplicationScoped -public class WorkingGroupPrecacheProvider implements LoadingCacheProvider<WorkingGroup> { - private static final Logger LOGGER = LoggerFactory.getLogger(WorkingGroupPrecacheProvider.class); - - @RestClient - WorkingGroupsAPI api; - - @Inject - APIMiddleware middleware; - - @Override - public List<WorkingGroup> fetchData(ParameterizedCacheKey k) { - LOGGER.debug("LOADING PROJECTS WITH KEY: {}", k); - return middleware.getAll(params -> api.getAll(params, null), WorkingGroup.class); - } - - @Override - public Class<WorkingGroup> getType() { - return WorkingGroup.class; - } -} diff --git a/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java b/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java index 97f59319ad12f95cc0b045ab0b6539717ad7a25b..38bdf29bd6f854f64b488697e63513d9a336209f 100644 --- a/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java +++ b/src/main/java/org/eclipsefoundation/adopters/resource/AdoptersResource.java @@ -14,6 +14,7 @@ package org.eclipsefoundation.adopters.resource; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import javax.inject.Inject; @@ -26,14 +27,14 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.eclipsefoundation.adopters.api.models.WorkingGroup; import org.eclipsefoundation.adopters.model.AdoptedProject; import org.eclipsefoundation.adopters.model.Breadcrumb; import org.eclipsefoundation.adopters.service.AdopterService; -import org.eclipsefoundation.adopters.service.WorkingGroupsService; import org.eclipsefoundation.core.service.CachingService; import org.eclipsefoundation.efservices.api.models.Project; +import org.eclipsefoundation.efservices.api.models.WorkingGroup; import org.eclipsefoundation.efservices.services.ProjectService; +import org.eclipsefoundation.efservices.services.WorkingGroupService; import io.quarkus.qute.Location; import io.quarkus.qute.Template; @@ -61,7 +62,7 @@ public class AdoptersResource { @Inject AdopterService adopterService; @Inject - WorkingGroupsService wgs; + WorkingGroupService wgs; @Location("pages/project-adopters-wg") Template adoptersWgTemplate; @@ -109,8 +110,8 @@ public class AdoptersResource { @Path("project-adopters/{alias}") public Response getWorkingGroupSubPage(@PathParam("alias") String workingGroupAlias) { // retrieve the corresponding working group, or return an error - WorkingGroup currentWg = wgs.getByName(workingGroupAlias); - if (currentWg == null) { + Optional<WorkingGroup> currentWg = wgs.getByName(workingGroupAlias); + if (currentWg.isEmpty()) { // a bit redundant, but attempt to get a cached error page or render a fresh copy return Response .ok(cache @@ -123,10 +124,10 @@ public class AdoptersResource { .ok(cache .get(workingGroupAlias, null, String.class, () -> adoptersWgTemplate - .data("wg", currentWg) + .data("wg", currentWg.get()) .data(BREADCRUMB_TEMPLATE_PROPERTY, new Breadcrumb("/adopters/project-adopters/" + workingGroupAlias, - currentWg.getTitle())) + currentWg.get().getTitle())) .render()) .orElseGet(errorTemplate::render)) .build(); diff --git a/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java b/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java deleted file mode 100644 index 4155939d8e69dda6abca7bb3c2fdd450306c06e1..0000000000000000000000000000000000000000 --- a/src/main/java/org/eclipsefoundation/adopters/service/WorkingGroupsService.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright (c) 2021 Eclipse Foundation - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * Author: Martin Lowe <martin.lowe@eclipse-foundation.org> - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipsefoundation.adopters.service; - -import java.util.List; - -import org.eclipsefoundation.adopters.api.models.WorkingGroup; - -/** - * Defines a service that will return available working group data. - * - * @author Martin Lowe - * - */ -public interface WorkingGroupsService { - - /** - * Returns all available working groups as a list. - * - * @return list of all working group definitions from the working group API - */ - public List<WorkingGroup> get(); - - /** - * Retrieves a single working group by its alias if available. - * - * @param name the alias of the working group to retrieve - * @return the working group with the given alias if available, or null. - */ - public WorkingGroup getByName(String name); -} diff --git a/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java b/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java deleted file mode 100644 index c309ab3c9b4898b8d900ae735e64338ee10af23b..0000000000000000000000000000000000000000 --- a/src/main/java/org/eclipsefoundation/adopters/service/impl/DefaultWorkingGroupsService.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2021 Eclipse Foundation - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * Author: Martin Lowe <martin.lowe@eclipse-foundation.org> - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipsefoundation.adopters.service.impl; - -import java.util.ArrayList; -import java.util.List; - -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; - -import org.eclipsefoundation.adopters.api.models.WorkingGroup; -import org.eclipsefoundation.adopters.service.WorkingGroupsService; -import org.eclipsefoundation.core.model.ParameterizedCacheKey; -import org.eclipsefoundation.core.service.LoadingCacheManager; - -/** - * Builds a list of working group definitions from an embedded list of working group definitions. This is an interim - * solution to accelerate this project and should be replaced with a call to the foundation API to retrieve this data. - * - * @author Martin Lowe - */ -@ApplicationScoped -public class DefaultWorkingGroupsService implements WorkingGroupsService { - - @Inject - LoadingCacheManager cache; - - @Override - public List<WorkingGroup> get() { - return new ArrayList<>( - cache.getList(ParameterizedCacheKey.builder().setId("all").setClazz(WorkingGroup.class).build())); - } - - @Override - public WorkingGroup getByName(String name) { - return get().stream().filter(wg -> wg.getAlias().equalsIgnoreCase(name)).findFirst().orElse(null); - } - -} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e8895397e5917b4722db3f44f67d88ce155a11e3..d507ac48ae3a8dd85ad1c4a33e6e207e2c28f519 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,6 +3,9 @@ quarkus.log.level=INFO ## CORS settings quarkus.http.cors=false +%dev.eclipse.core.secure-key.override-key=test +%dev.eclipse.optional-resources.enabled=true +%dev.eclipse.cache.resource.enabled=true ## OIDC settings quarkus.oidc.enabled=false