diff --git a/basics/README.adoc b/basics/README.adoc index 3da2745..ae1feb1 100644 --- a/basics/README.adoc +++ b/basics/README.adoc @@ -89,16 +89,16 @@ IMPORTANT: Spring HATEOAS's `EntityModel` and `Link` classes are *vendor neutral default media type, but these classes can be used to render any media type. A common convention is to create a factory used to convert `Employee` objects into `EntityModel` objects. Spring -HATEOAS provides `SimpleIdentifiableResourceAssembler` as the simplest mechanism to perform these conversions. +HATEOAS provides `SimpleIdentifiableRepresentationModelAssembler` as the simplest mechanism to perform these conversions. [source,java] ---- @Component -class EmployeeResourceAssembler extends SimpleIdentifiableResourceAssembler { +class EmployeeResourceAssembler extends SimpleIdentifiableRepresentationModelAssembler { /** * Link the {@link Employee} domain type to the {@link EmployeeController} using this - * {@link SimpleIdentifiableResourceAssembler} in order to generate both {@link org.springframework.hateoas.EntityModel} + * {@link SimpleIdentifiableRepresentationModelAssembler} in order to generate both {@link org.springframework.hateoas.EntityModel} * and {@link org.springframework.hateoas.CollectionModel}. */ EmployeeResourceAssembler() { @@ -146,7 +146,7 @@ class EmployeeController { This piece of code shows how the Spring MVC controller is wired with a copy of the `EmployeeRepository` as well as a `EmployeeResourceAssembler` and marked as a *REST controller* thanks to the `@RestController` annotation. -To support `SimpleIdentifiableResourceAssembler`, the controller needs two things: +To support `SimpleIdentifiableRepresentationModelAssembler`, the controller needs two things: * A route to the collection. By default, it assumes a pluralized, lowercased name (`Employee` -> `/employees`). * A route to a single entity. By default it assumes the collection's URI + `/{id}`. diff --git a/hypermedia/README.adoc b/hypermedia/README.adoc index 14e84d2..ac6b0e7 100644 --- a/hypermedia/README.adoc +++ b/hypermedia/README.adoc @@ -112,7 +112,7 @@ With these changes in place, you can now define a `ResourceAssembler` for the `M [source,java] ---- @Component -class ManagerResourceAssembler extends SimpleIdentifiableResourceAssembler { +class ManagerResourceAssembler extends SimpleIdentifiableRepresentationModelAssembler { ManagerResourceAssembler() { super(ManagerController.class); @@ -120,7 +120,7 @@ class ManagerResourceAssembler extends SimpleIdentifiableResourceAssembler { +class ManagerResourceAssembler extends SimpleIdentifiableRepresentationModelAssembler { ... /** - * Retain default links provided by {@link SimpleIdentifiableResourceAssembler}, but add extra ones to each {@link Manager}. + * Retain default links provided by {@link SimpleIdentifiableRepresentationModelAssembler}, but add extra ones to each {@link Manager}. * * @param resource */ @@ -252,11 +252,11 @@ class ManagerResourceAssembler extends SimpleIdentifiableResourceAssembler { +class EmployeeWithManagerResourceAssembler extends SimpleRepresentationModelAssembler { /** * Define links to add to every individual {@link Resource}. @@ -377,8 +377,8 @@ class EmployeeWithManagerResourceAssembler extends SimpleResourceAssembler`. - So instead, you want to fall back to `SimpleResourceAssembler`, in which NO links are defined out of the box. +* Since the routes are different than traditional */employees* and */employees/{id}*, it makes no sense to use `SimpleIdentifiableRepresentationModelAssembler`. + So instead, you want to fall back to `SimpleRepresentationModelAssembler`, in which NO links are defined out of the box. * Because there are no defined routes, you are in full control. ** `addLinks(EntityModel resource)` defines links for single items ** `addLinks(CollectionModel> resources)` defines links for collections @@ -430,21 +430,21 @@ In order to "start at the top" and hop, you must include a `RootController`: [source,java] ---- @RestController +@RestController class RootController { @GetMapping("/") - ResponseEntity root() { + ResponseEntity root() { - ResourceSupport resourceSupport = new ResourceSupport(); + RepresentationModel model = new RepresentationModel(); - resourceSupport.add(linkTo(methodOn(RootController.class).root()).withSelfRel()); - resourceSupport.add(linkTo(methodOn(EmployeeController.class).findAll()).withRel("employees")); - resourceSupport.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); - resourceSupport.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); + model.add(linkTo(methodOn(RootController.class).root()).withSelfRel()); + model.add(linkTo(methodOn(EmployeeController.class).findAll()).withRel("employees")); + model.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); + model.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); - return ResponseEntity.ok(resourceSupport); + return ResponseEntity.ok(model); } - } ---- diff --git a/hypermedia/src/main/java/org/springframework/hateoas/examples/RootController.java b/hypermedia/src/main/java/org/springframework/hateoas/examples/RootController.java index 1f8daaf..7dcc1c3 100644 --- a/hypermedia/src/main/java/org/springframework/hateoas/examples/RootController.java +++ b/hypermedia/src/main/java/org/springframework/hateoas/examples/RootController.java @@ -31,15 +31,13 @@ class RootController { @GetMapping("/") ResponseEntity root() { - RepresentationModel resourceSupport = new RepresentationModel(); + RepresentationModel model = new RepresentationModel(); - resourceSupport.add(linkTo(methodOn(RootController.class).root()).withSelfRel()); - resourceSupport.add(linkTo(methodOn(EmployeeController.class).findAll()).withRel("employees")); - resourceSupport - .add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); - resourceSupport.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); + model.add(linkTo(methodOn(RootController.class).root()).withSelfRel()); + model.add(linkTo(methodOn(EmployeeController.class).findAll()).withRel("employees")); + model.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); + model.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); - return ResponseEntity.ok(resourceSupport); + return ResponseEntity.ok(model); } - }