From 6539711acbd2c55878444242cf0b0f5151392db7 Mon Sep 17 00:00:00 2001 From: Martin Lowe Date: Wed, 2 Mar 2022 11:09:37 -0500 Subject: [PATCH] Fix issue with singular organization not being queryable --- docker-compose.yml | 2 +- .../java/org/eclipsefoundation/api/ComplexAPI.java | 4 +++- .../impl/FoundationDBOrganizationService.java | 12 +++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 79679e18..1d205286 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -79,7 +79,7 @@ services: - mariadb - keycloak foundationdb: - image: eclipsefdn/foundationdb-api:staging-cf0112a-13 + image: eclipsefdn/foundationdb-api:staging-c329279-21 ports: - '8095:8095' environment: diff --git a/portal/src/main/java/org/eclipsefoundation/api/ComplexAPI.java b/portal/src/main/java/org/eclipsefoundation/api/ComplexAPI.java index 7877a24e..b1d235fe 100644 --- a/portal/src/main/java/org/eclipsefoundation/api/ComplexAPI.java +++ b/portal/src/main/java/org/eclipsefoundation/api/ComplexAPI.java @@ -1,5 +1,7 @@ package org.eclipsefoundation.api; +import java.util.List; + import javax.ws.rs.BeanParam; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -24,5 +26,5 @@ public interface ComplexAPI { @GET @Path("members") - public MemberOrganizationsData getMember(@QueryParam("id") String id); + public List getMember(@QueryParam("id") String id); } diff --git a/portal/src/main/java/org/eclipsefoundation/membership/portal/service/impl/FoundationDBOrganizationService.java b/portal/src/main/java/org/eclipsefoundation/membership/portal/service/impl/FoundationDBOrganizationService.java index 6fc1387d..949ca6b8 100644 --- a/portal/src/main/java/org/eclipsefoundation/membership/portal/service/impl/FoundationDBOrganizationService.java +++ b/portal/src/main/java/org/eclipsefoundation/membership/portal/service/impl/FoundationDBOrganizationService.java @@ -172,7 +172,8 @@ public class FoundationDBOrganizationService implements OrganizationsService { int pageMaxApprox = (int) Math.ceil(maxResults / maxPageSize); for (int i = 2; i < pageMaxApprox; i++) { wrap.setParam(DefaultUrlParameterNames.PAGE, Integer.toString(i)); - LOGGER.debug("Generating HA cache for organizations data: {}", BaseAPIParameters.buildFromWrapper(wrap)); + LOGGER.debug("Generating HA cache for organizations data: {}", + BaseAPIParameters.buildFromWrapper(wrap)); loadingCache.get( BaseAPIParameters.builder().setLimit(maxPageSize).setPage(i).setRequestWrapper(wrap).build()); } @@ -237,8 +238,13 @@ public class FoundationDBOrganizationService implements OrganizationsService { @Override public Optional getByID(String id) { try { - return cache.get(id, new MultivaluedMapImpl<>(), MemberOrganization.class, - () -> convertToMemberOrganization(complexAPI.getMember(id))); + return cache.get(id, new MultivaluedMapImpl<>(), MemberOrganization.class, () -> { + List orgs = complexAPI.getMember(id); + if (orgs.isEmpty()) { + return null; + } + return convertToMemberOrganization(orgs.get(0)); + }); } catch (Exception e) { LOGGER.error("Error retrieving member organization: ", e); } -- GitLab