This commit is contained in:
Philipp Czora
2018-06-25 09:19:49 +02:00
22 changed files with 165 additions and 144 deletions

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.ResponseHeader;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
@@ -12,6 +11,7 @@ import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;

View File

@@ -11,13 +11,13 @@ import sonia.scm.group.GroupPermissions;
import javax.inject.Inject;
import java.util.EnumSet;
import java.util.List;
import java.util.stream.Collectors;
import static com.damnhandy.uri.template.UriTemplate.fromTemplate;
import static de.otto.edison.hal.Embedded.embeddedBuilder;
import static de.otto.edison.hal.Link.link;
import static de.otto.edison.hal.Links.linkingTo;
import static de.otto.edison.hal.paging.NumberedPaging.zeroBasedNumberedPaging;
import static java.util.stream.Collectors.toList;
import static sonia.scm.api.v2.resources.ResourceLinks.groupCollection;
public class GroupCollectionToDtoMapper {
@@ -32,8 +32,8 @@ public class GroupCollectionToDtoMapper {
}
public GroupCollectionDto map(int pageNumber, int pageSize, PageResult<Group> pageResult) {
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.hasMore());
List<GroupDto> dtos = pageResult.getEntities().stream().map(user -> groupToDtoMapper.map(user)).collect(Collectors.toList());
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.getOverallCount());
List<GroupDto> dtos = pageResult.getEntities().stream().map(groupToDtoMapper::map).collect(toList());
GroupCollectionDto groupCollectionDto = new GroupCollectionDto(
createLinks(paging),

View File

@@ -23,12 +23,12 @@ import javax.ws.rs.core.UriInfo;
import java.util.Collection;
@Produces(VndMediaType.GROUP)
public class GroupSubResource extends AbstractManagerResource<Group, GroupException> {
public class GroupResource extends AbstractManagerResource<Group, GroupException> {
private final GroupToGroupDtoMapper groupToGroupDtoMapper;
@Inject
public GroupSubResource(GroupManager manager, GroupToGroupDtoMapper groupToGroupDtoMapper) {
public GroupResource(GroupManager manager, GroupToGroupDtoMapper groupToGroupDtoMapper) {
super(manager);
this.groupToGroupDtoMapper = groupToGroupDtoMapper;
}

View File

@@ -0,0 +1,31 @@
package sonia.scm.api.v2.resources;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.ws.rs.Path;
@Path(GroupRootResource.GROUPS_PATH_V2)
public class GroupRootResource {
public static final String GROUPS_PATH_V2 = "v2/groups/";
private final Provider<GroupCollectionResource> groupCollectionResource;
private final Provider<GroupResource> groupResource;
@Inject
public GroupRootResource(Provider<GroupCollectionResource> groupCollectionResource,
Provider<GroupResource> groupResource) {
this.groupCollectionResource = groupCollectionResource;
this.groupResource = groupResource;
}
@Path("")
public GroupCollectionResource getGroupCollectionResource() {
return groupCollectionResource.get();
}
@Path("{id}")
public GroupResource getGroupResource() {
return groupResource.get();
}
}

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import de.otto.edison.hal.Links;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
@@ -8,6 +7,7 @@ import org.mapstruct.MappingTarget;
import sonia.scm.group.Group;
import sonia.scm.group.GroupPermissions;
import javax.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;

View File

@@ -1,30 +0,0 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import javax.ws.rs.Path;
@Path(GroupV2Resource.GROUPS_PATH_V2)
public class GroupV2Resource {
public static final String GROUPS_PATH_V2 = "v2/groups/";
private final GroupCollectionResource groupCollectionResource;
private final GroupSubResource groupSubResource;
@Inject
public GroupV2Resource(GroupCollectionResource groupCollectionResource, GroupSubResource groupSubResource) {
this.groupCollectionResource = groupCollectionResource;
this.groupSubResource = groupSubResource;
}
@Path("")
public GroupCollectionResource getGroupCollectionResource() {
return groupCollectionResource;
}
@Path("{id}")
public GroupSubResource getGroupSubResource() {
return groupSubResource;
}
}

View File

@@ -15,19 +15,19 @@ class ResourceLinks {
private final LinkBuilder groupLinkBuilder;
private GroupLinks(UriInfo uriInfo) {
groupLinkBuilder = new LinkBuilder(uriInfo, GroupV2Resource.class, GroupSubResource.class);
groupLinkBuilder = new LinkBuilder(uriInfo, GroupRootResource.class, GroupResource.class);
}
String self(String name) {
return groupLinkBuilder.method("getGroupSubResource").parameters(name).method("get").parameters().href();
return groupLinkBuilder.method("getGroupResource").parameters(name).method("get").parameters().href();
}
String delete(String name) {
return groupLinkBuilder.method("getGroupSubResource").parameters(name).method("delete").parameters().href();
return groupLinkBuilder.method("getGroupResource").parameters(name).method("delete").parameters().href();
}
String update(String name) {
return groupLinkBuilder.method("getGroupSubResource").parameters(name).method("update").parameters().href();
return groupLinkBuilder.method("getGroupResource").parameters(name).method("update").parameters().href();
}
}
@@ -39,7 +39,7 @@ class ResourceLinks {
private final LinkBuilder collectionLinkBuilder;
private GroupCollectionLinks(UriInfo uriInfo) {
collectionLinkBuilder = new LinkBuilder(uriInfo, GroupV2Resource.class, GroupCollectionResource.class);
collectionLinkBuilder = new LinkBuilder(uriInfo, GroupRootResource.class, GroupCollectionResource.class);
}
String self() {

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.ResponseHeader;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
@@ -12,6 +11,7 @@ import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;

View File

@@ -12,13 +12,13 @@ import javax.inject.Inject;
import javax.ws.rs.core.UriInfo;
import java.util.EnumSet;
import java.util.List;
import java.util.stream.Collectors;
import static com.damnhandy.uri.template.UriTemplate.fromTemplate;
import static de.otto.edison.hal.Embedded.embeddedBuilder;
import static de.otto.edison.hal.Link.link;
import static de.otto.edison.hal.Links.linkingTo;
import static de.otto.edison.hal.paging.NumberedPaging.zeroBasedNumberedPaging;
import static java.util.stream.Collectors.toList;
import static sonia.scm.api.v2.resources.ResourceLinks.userCollection;
public class UserCollectionToDtoMapper {
@@ -37,8 +37,8 @@ public class UserCollectionToDtoMapper {
}
public UserCollectionDto map(int pageNumber, int pageSize, PageResult<User> pageResult) {
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.hasMore());
List<UserDto> dtos = pageResult.getEntities().stream().map(userToDtoMapper::map).collect(Collectors.toList());
NumberedPaging paging = zeroBasedNumberedPaging(pageNumber, pageSize, pageResult.getOverallCount());
List<UserDto> dtos = pageResult.getEntities().stream().map(userToDtoMapper::map).collect(toList());
UserCollectionDto userCollectionDto = new UserCollectionDto(
createLinks(uriInfoStore.get(), paging),

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import org.apache.shiro.authc.credential.PasswordService;
import org.mapstruct.Context;
import org.mapstruct.Mapper;
@@ -9,6 +8,8 @@ import org.mapstruct.Mappings;
import org.mapstruct.Named;
import sonia.scm.user.User;
import javax.inject.Inject;
import static sonia.scm.api.rest.resources.UserResource.DUMMY_PASSWORT;
@Mapper

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import com.webcohesion.enunciate.metadata.rs.TypeHint;
@@ -10,6 +9,7 @@ import sonia.scm.user.UserException;
import sonia.scm.user.UserManager;
import sonia.scm.web.VndMediaType;
import javax.inject.Inject;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;

View File

@@ -1,7 +1,6 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.ws.rs.Path;

View File

@@ -1,6 +1,5 @@
package sonia.scm.api.v2.resources;
import com.google.inject.Inject;
import de.otto.edison.hal.Links;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
@@ -9,6 +8,8 @@ import sonia.scm.api.rest.resources.UserResource;
import sonia.scm.user.User;
import sonia.scm.user.UserPermissions;
import javax.inject.Inject;
import static de.otto.edison.hal.Link.link;
import static de.otto.edison.hal.Links.linkingTo;
import static sonia.scm.api.v2.resources.ResourceLinks.user;