Polishing

This commit is contained in:
Greg Turnquist
2017-05-25 13:44:43 -05:00
parent 4a5b3d92fa
commit 9680a908a1
6 changed files with 16 additions and 13 deletions

View File

@@ -25,7 +25,7 @@ import org.springframework.stereotype.Component;
* @author Greg Turnquist
*/
@Component
public class DatabaseLoader {
class DatabaseLoader {
/**
* Use Spring to inject a {@link EmployeeRepository} that can then load data. Since this will run

View File

@@ -48,7 +48,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Employee implements Identifiable<Long> {
class Employee implements Identifiable<Long> {
@Id @GeneratedValue
private Long id;

View File

@@ -32,13 +32,12 @@ import org.springframework.web.bind.annotation.RestController;
* @author Greg Turnquist
*/
@RestController
public class EmployeeController {
class EmployeeController {
private final EmployeeRepository repository;
private final EmployeeResourceAssembler assembler;
public EmployeeController(EmployeeRepository repository,
EmployeeResourceAssembler assembler) {
EmployeeController(EmployeeRepository repository, EmployeeResourceAssembler assembler) {
this.repository = repository;
this.assembler = assembler;
@@ -61,18 +60,18 @@ public class EmployeeController {
}
/**
* Look up a single {@link Employee} and transform into a REST resource using
* Look up a single {@link Employee} and transform it into a REST resource using
* {@link EmployeeResourceAssembler#toResource(Object)}. Then return it through
* Spring Web's {@link ResponseEntity} fluent API.
*
* See {@link #findAll()} to explain "produces".
* See {@link #findAll()} to explain {@link GetMapping}'s "produces" argument.
*
* @param id
*/
@GetMapping(value = "/employees/{id}", produces = MediaTypes.HAL_JSON_VALUE)
public ResponseEntity<Resource<Employee>> findOne(@PathVariable String id) {
public ResponseEntity<Resource<Employee>> findOne(@PathVariable long id) {
return ResponseEntity.ok(
assembler.toResource(repository.findOne(Long.valueOf(id))));
assembler.toResource(repository.findOne(id)));
}
}

View File

@@ -18,7 +18,9 @@ package org.springframework.hateoas.examples;
import org.springframework.data.repository.CrudRepository;
/**
* A simple Spring Data {@link CrudRepository} for storing {@link Employee}s.
*
* @author Greg Turnquist
*/
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
interface EmployeeRepository extends CrudRepository<Employee, Long> {
}

View File

@@ -22,14 +22,14 @@ import org.springframework.stereotype.Component;
* @author Greg Turnquist
*/
@Component
public class EmployeeResourceAssembler extends SimpleIdentifiableResourceAssembler<Employee> {
class EmployeeResourceAssembler extends SimpleIdentifiableResourceAssembler<Employee> {
/**
* Link the {@link Employee} domain type to the {@link EmployeeController} using this
* {@link SimpleIdentifiableResourceAssembler} in order to generate both {@link org.springframework.hateoas.Resource}
* and {@link org.springframework.hateoas.Resources}.
*/
public EmployeeResourceAssembler() {
EmployeeResourceAssembler() {
super(EmployeeController.class);
}
}

View File

@@ -36,6 +36,8 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
/**
* How to test the hypermedia-based {@link EmployeeController} with everything else mocked out.
*
* @author Greg Turnquist
*/
@RunWith(SpringRunner.class)
@@ -50,7 +52,7 @@ public class EmployeeControllerTests {
private EmployeeRepository repository;
@Test
public void noop() throws Exception {
public void getShouldFetchAHalDocument() throws Exception {
given(repository.findAll()).willReturn(
Arrays.asList(