@GetMapping(value = "/supervisors/{id}", produces = MediaTypes.HAL_JSON_VALUE) public ResponseEntity<Resource<Supervisor>> findOne(@PathVariable Long id) { Resource<Manager> managerResource = controller.findOne(id).getBody(); Resource<Supervisor> supervisorResource = new Resource<>( new Supervisor(managerResource.getContent()), managerResource.getLinks()); return ResponseEntity.ok(supervisorResource); } }
@GetMapping("/") ResponseEntity<ResourceSupport> root() { ResourceSupport resourceSupport = new ResourceSupport(); 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")); return ResponseEntity.ok(resourceSupport); }
/** * Define links to add to every {@link Resource}. * * @param resource */ @Override protected void addLinks(Resource<Employee> resource) { /** * Add some custom links to the default ones provided. * * NOTE: To replace default links, don't invoke {@literal super.addLinks()}. */ super.addLinks(resource); resource.getContent().getId() .ifPresent(id -> { // Add additional links resource.add(linkTo(methodOn(ManagerController.class).findManager(id)).withRel("manager")); resource.add(linkTo(methodOn(EmployeeController.class).findDetailedEmployee(id)).withRel("detailed")); // Maintain a legacy link to support older clients not yet adjusted to the switch from "supervisor" to "manager". resource.add(linkTo(methodOn(SupervisorController.class).findOne(id)).withRel("supervisor")); }); }
/** * Define links to add to {@link Resources} collection. * * @param resources */ @Override protected void addLinks(Resources<Resource<Employee>> resources) { super.addLinks(resources); resources.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); resources.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); resources.add(linkTo(methodOn(RootController.class).root()).withRel("root")); } }
/** * Define links to add to the {@link Resources} collection. * * @param resources */ @Override protected void addLinks(Resources<Resource<EmployeeWithManager>> resources) { resources.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withSelfRel()); resources.add(linkTo(methodOn(EmployeeController.class).findAll()).withRel("employees")); resources.add(linkTo(methodOn(ManagerController.class).findAll()).withRel("managers")); resources.add(linkTo(methodOn(RootController.class).root()).withRel("root")); } }