hateoas showcase
This commit is contained in:
parent
a17dac55e2
commit
5dc1392fac
@ -105,6 +105,8 @@ dependencies {
|
||||
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'
|
||||
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
|
||||
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
|
||||
compile group: 'org.springframework.boot', name: 'spring-boot-starter-hateoas', version: '2.2.1.RELEASE'
|
||||
|
||||
compile group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect'
|
||||
compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5'
|
||||
compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner'
|
||||
@ -132,4 +134,4 @@ dependencies {
|
||||
testCompile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.3.1'
|
||||
//testCompile group: 'com.google.guava', name: 'guava', version: '21.0'
|
||||
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package ru.ulstu.paper.controller;
|
||||
|
||||
import org.springframework.hateoas.Link;
|
||||
import org.springframework.hateoas.Resource;
|
||||
import org.springframework.hateoas.Resources;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@ -20,6 +23,8 @@ import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import static org.springframework.hateoas.core.DummyInvocationUtils.methodOn;
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||
import static ru.ulstu.paper.controller.PaperRestController.URL;
|
||||
|
||||
@RestController
|
||||
@ -38,6 +43,27 @@ public class PaperRestController {
|
||||
return new Response<>(paperService.findAllDto());
|
||||
}
|
||||
|
||||
@GetMapping("/with-resources")
|
||||
public Resources<List<PaperDto>> getPapersWithResources() {
|
||||
List<PaperDto> paperDtos = paperService.findAllDto();
|
||||
for (final PaperDto paperDto : paperDtos) {
|
||||
final Link selfLink = linkTo(
|
||||
methodOn(PaperRestController.class).getPaperWithResources(paperDto.getEntityId())).withSelfRel();
|
||||
paperDto.add(selfLink);
|
||||
}
|
||||
|
||||
Link link = linkTo(PaperRestController.class).withSelfRel();
|
||||
Resources<List<PaperDto>> result = new Resources(paperDtos, link);
|
||||
return result;
|
||||
}
|
||||
|
||||
@GetMapping("/with-resources/{paper-id}")
|
||||
public Resource<PaperDto> getPaperWithResources(@PathVariable("paper-id") Integer paperId) {
|
||||
Link link = linkTo(methodOn(PaperRestController.class).getPapersWithResources()).withSelfRel();
|
||||
Resource<PaperDto> result = new Resource(paperService.findById(paperId), link);
|
||||
return result;
|
||||
}
|
||||
|
||||
@GetMapping("/{paper-id}")
|
||||
public Response<PaperDto> getPaper(@PathVariable("paper-id") Integer paperId) {
|
||||
return new Response<>(paperService.findById(paperId));
|
||||
|
@ -3,6 +3,7 @@ package ru.ulstu.paper.model;
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.hateoas.ResourceSupport;
|
||||
import ru.ulstu.deadline.model.Deadline;
|
||||
import ru.ulstu.file.model.FileDataDto;
|
||||
import ru.ulstu.user.model.UserDto;
|
||||
@ -17,10 +18,10 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
||||
|
||||
public class PaperDto {
|
||||
public class PaperDto extends ResourceSupport {
|
||||
private final static int MAX_AUTHORS_LENGTH = 60;
|
||||
|
||||
private Integer id;
|
||||
private Integer entityId;
|
||||
@NotEmpty
|
||||
@Size(min = 3, max = 254)
|
||||
private String title;
|
||||
@ -46,7 +47,7 @@ public class PaperDto {
|
||||
}
|
||||
|
||||
@JsonCreator
|
||||
public PaperDto(@JsonProperty("id") Integer id,
|
||||
public PaperDto(@JsonProperty("entityId") Integer entityId,
|
||||
@JsonProperty("title") String title,
|
||||
@JsonProperty("status") Paper.PaperStatus status,
|
||||
@JsonProperty("type") Paper.PaperType type,
|
||||
@ -62,7 +63,7 @@ public class PaperDto {
|
||||
@JsonProperty("authors") Set<UserDto> authors,
|
||||
@JsonProperty("references") List<ReferenceDto> references,
|
||||
@JsonProperty("formatStandard") ReferenceDto.FormatStandard formatStandard) {
|
||||
this.id = id;
|
||||
this.entityId = entityId;
|
||||
this.title = title;
|
||||
this.status = status;
|
||||
this.type = type;
|
||||
@ -80,7 +81,7 @@ public class PaperDto {
|
||||
}
|
||||
|
||||
public PaperDto(Paper paper) {
|
||||
this.id = paper.getId();
|
||||
this.entityId = paper.getId();
|
||||
this.title = paper.getTitle();
|
||||
this.status = paper.getStatus();
|
||||
this.type = paper.getType();
|
||||
@ -97,12 +98,12 @@ public class PaperDto {
|
||||
this.references = convert(paper.getReferences(), ReferenceDto::new);
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
public Integer getEntityId() {
|
||||
return entityId;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
this.entityId = id;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
|
@ -176,7 +176,7 @@ public class PaperService {
|
||||
|
||||
@Transactional
|
||||
public Integer update(PaperDto paperDto) throws IOException {
|
||||
Paper paper = paperRepository.getOne(paperDto.getId());
|
||||
Paper paper = paperRepository.getOne(paperDto.getEntityId());
|
||||
Paper.PaperStatus oldStatus = paper.getStatus();
|
||||
Set<User> oldAuthors = new HashSet<>(paper.getAuthors());
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user