diff --git a/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java b/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java index 5429f9f76d9..f07109a51c8 100644 --- a/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java +++ b/api/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java @@ -47,6 +47,14 @@ public Response get(@QueryParam("filter") String filter, @Produces(MediaType.APPLICATION_JSON) public Response getDetails(@PathParam("localeId") String localeId); + /** + * Retrieve locale member list + */ + @GET + @Path("/locale/{localeId}/members") + @Produces(MediaType.APPLICATION_JSON) + public Response getMembers(@PathParam("localeId") String localeId); + /** * Retrieves a full list of localized locales for server. * diff --git a/server/zanata-war/src/main/java/org/zanata/rest/service/LocalesService.java b/server/zanata-war/src/main/java/org/zanata/rest/service/LocalesService.java index 1d1df44256d..9e1e63af490 100644 --- a/server/zanata-war/src/main/java/org/zanata/rest/service/LocalesService.java +++ b/server/zanata-war/src/main/java/org/zanata/rest/service/LocalesService.java @@ -22,6 +22,7 @@ import java.lang.reflect.Type; import java.util.List; +import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -40,6 +41,7 @@ import org.zanata.common.LocaleId; import org.zanata.dao.LocaleDAO; import org.zanata.model.HLocale; +import org.zanata.model.HLocaleMember; import org.zanata.rest.dto.LocaleDetails; import org.zanata.rest.editor.dto.LocaleSortField; import org.zanata.rest.editor.dto.LocalesResults; @@ -147,6 +149,20 @@ public Response getDetails(String localeId) { return Response.status(Response.Status.NOT_FOUND).build(); } + @Override + public Response getMembers(String localeId) { + if (StringUtils.isBlank(localeId)) { + return Response.status(Response.Status.BAD_REQUEST) + .entity("Locale \'" + localeId + "\' is required.").build(); + } + HLocale hLocale = localeServiceImpl.getByLocaleId(localeId); + if (hLocale != null) { + Set members = hLocale.getMembers(); + return Response.ok(details).build(); + } + return Response.status(Response.Status.NOT_FOUND).build(); + } + @Transactional(readOnly = true) @Override public Response getUITranslations() {