Update for Spring Boot 2.0

This commit is contained in:
Greg Turnquist
2017-11-24 22:18:49 -06:00
parent a76e708613
commit a8306629cc
17 changed files with 138 additions and 58 deletions

View File

@@ -15,20 +15,23 @@
*/
package org.springframework.hateoas.examples;
import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Optional;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.hateoas.Identifiable;
/**
* @author Greg Turnquist
*/
@Data
@NoArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Entity
class Employee implements Identifiable<Long> {
@@ -42,4 +45,8 @@ class Employee implements Identifiable<Long> {
this.name = name;
this.role = role;
}
public Optional<Long> getId() {
return Optional.ofNullable(this.id);
}
}

View File

@@ -66,13 +66,17 @@ class EmployeeController {
Employee savedEmployee = repository.save(employee);
return ResponseEntity
.created(linkTo(methodOn(EmployeeController.class).findOne(savedEmployee.getId())).toUri())
.created(savedEmployee.getId()
.map(id -> linkTo(methodOn(EmployeeController.class).findOne(id)).toUri())
.orElseThrow(() -> new RuntimeException("Failed to create for some reason")))
.body(assembler.toResource(savedEmployee));
}
@GetMapping(value = "/employees/{id}", produces = MediaTypes.HAL_JSON_VALUE)
public Resource<Employee> findOne(@PathVariable Long id) {
return assembler.toResource(repository.findOne(id));
return repository.findById(id)
.map(assembler::toResource)
.orElseThrow(() -> new RuntimeException("No employee '" + id + "' found"));
}
}