From cf6353dcbf3540f7ed85ee954e22021ce324f953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 28 May 2018 14:31:43 +0200 Subject: [PATCH] Function get all --- .../resources/AbstractManagerResource.java | 16 ++------ .../api/rest/resources/UserNewResource.java | 39 ++++++++++++++++--- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java index 7b0678c422..3436d5ffa1 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AbstractManagerResource.java @@ -37,10 +37,8 @@ package sonia.scm.api.rest.resources; import org.apache.commons.beanutils.BeanComparator; import org.apache.shiro.authz.AuthorizationException; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.LastModifiedAware; import sonia.scm.Manager; import sonia.scm.ModelObject; @@ -49,19 +47,13 @@ import sonia.scm.util.AssertUtil; import sonia.scm.util.HttpUtil; import sonia.scm.util.Util; -//~--- JDK imports ------------------------------------------------------------ - +import javax.ws.rs.core.*; +import javax.ws.rs.core.Response.Status; import java.util.Collection; import java.util.Comparator; import java.util.Date; -import javax.ws.rs.core.CacheControl; -import javax.ws.rs.core.EntityTag; -import javax.ws.rs.core.GenericEntity; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; +//~--- JDK imports ------------------------------------------------------------ /** * @@ -567,7 +559,7 @@ public abstract class AbstractManagerResource fetchItems(String sortby, boolean desc, int start, + Collection fetchItems(String sortby, boolean desc, int start, int limit) { AssertUtil.assertPositive(start); diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserNewResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserNewResource.java index 66a0100105..dcf3c97fee 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserNewResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserNewResource.java @@ -11,12 +11,10 @@ import sonia.scm.user.User; import sonia.scm.user.UserException; import sonia.scm.user.UserManager; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; +import javax.ws.rs.*; import javax.ws.rs.core.*; import java.util.Collection; +import java.util.stream.Collectors; @Singleton @Path("usersnew") @@ -68,4 +66,35 @@ public class UserNewResource extends AbstractManagerResourceNote: This method requires admin privileges. + * + * @param request the current request + * @param start the start value for paging + * @param limit the limit value for paging + * @param sortby sort parameter + * @param desc sort direction desc or aesc + * + * @return + */ + @GET + @TypeHint(User[].class) + @StatusCodes({ + @ResponseCode(code = 200, condition = "success"), + @ResponseCode(code = 403, condition = "forbidden, the current user has no admin privileges"), + @ResponseCode(code = 500, condition = "internal server error") + }) + @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + public Response getAll(@Context Request request, @Context UriInfo uriInfo, @DefaultValue("0") + @QueryParam("start") int start, @DefaultValue("-1") + @QueryParam("limit") int limit, @QueryParam("sortby") String sortby, + @DefaultValue("false") + @QueryParam("desc") boolean desc) + { + Collection items = fetchItems(sortby, desc, start, limit); + items.stream().map(user -> UserMapper.INSTANCE.userToUserDto(user, uriInfo)).collect(Collectors.toList()); + return Response.ok(new GenericEntity>(items) {}).build(); + } +}