public String getManager() { return this.employee.getManager().getName(); }
public String getName() { return this.employee.getName(); }
public String getRole() { return this.employee.getRole(); }
@GetMapping(value = "/employees", produces = MediaTypes.HAL_JSON_VALUE) public Resources<Resource<Employee>> findAll() { return assembler.toResources(repository.findAll()); }
@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 individual {@link Resource}. * * @param resource */ @Override protected void addLinks(Resource<EmployeeWithManager> resource) { resource.add(linkTo(methodOn(EmployeeController.class).findDetailedEmployee(resource.getContent().getId())).withSelfRel()); resource.add(linkTo(methodOn(EmployeeController.class).findOne(resource.getContent().getId())).withRel("summary")); resource.add(linkTo(methodOn(EmployeeController.class).findAllDetailedEmployees()).withRel("detailedEmployees")); }
/** * Find an {@link Employee}'s {@link Manager} based upon employee id. Turn it into a context-based link. * * @param id * @return */ @GetMapping(value = "/managers/{id}/employees", produces = MediaTypes.HAL_JSON_VALUE) public ResponseEntity<Resources<Resource<Employee>>> findEmployees(@PathVariable long id) { return ResponseEntity.ok( assembler.toResources(repository.findByManagerId(id))); }
public List<String> getEmployees() { return manager.getEmployees().stream() .map(employee -> employee.getName() + "::" + employee.getRole()) .collect(Collectors.toList()); } }
/** * 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")); } }
/** * Find an {@link Employee}'s {@link Manager} based upon employee id. Turn it into a context-based link. * * @param id * @return */ @GetMapping(value = "/employees/{id}/manager", produces = MediaTypes.HAL_JSON_VALUE) ResponseEntity<Resource<Manager>> findManager(@PathVariable long id) { return ResponseEntity.ok( assembler.toResource(repository.findByEmployeesId(id))); } }
public String getName() { return this.manager.getName(); }
/** * Assume any {@link ObjectMapper} starts with {@literal _hal} and ends with {@literal Mapper}. */ @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof ObjectMapper && beanName.startsWith("_hal") && beanName.endsWith("Mapper")) { postProcessHalObjectMapper((ObjectMapper) bean); } return bean; }
@GetMapping(value = "/employees", produces = MediaTypes.HAL_JSON_VALUE) public Resources<Resource<Employee>> findAll() { return assembler.toResources(repository.findAll()); }
/** * 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")); } }
/** * Use Spring to inject a {@link EmployeeRepository} that can then load data. Since this will run * only after the app is operational, the database will be up. * * @param repository */ @Bean CommandLineRunner init(EmployeeRepository repository) { return args -> { repository.save(new Employee("Frodo", "Baggins", "ring bearer")); repository.save(new Employee("Bilbo", "Baggins", "burglar")); }; }
/** * Look up all employees, and transform them into a REST collection resource using * {@link EmployeeResourceAssembler#toResources(Iterable)}. Then return them through * Spring Web's {@link ResponseEntity} fluent API. * * NOTE: cURL will fetch things as HAL JSON directly, but browsers issue a different * default accept header, which allows XML to get requested first, so "produces" * forces it to HAL JSON for all clients. */ @GetMapping(value = "/employees", produces = MediaTypes.HAL_JSON_VALUE) public ResponseEntity<Resources<Resource<Employee>>> findAll() { return ResponseEntity.ok( assembler.toResources(repository.findAll())); }
/** * Use Spring to inject a {@link EmployeeRepository} that can then load data. Since this will run * only after the app is operational, the database will be up. * * @param repository */ @Bean CommandLineRunner init(EmployeeRepository repository) { return args -> { repository.save(new Employee("Frodo", "Baggins", "ring bearer")); repository.save(new Employee("Bilbo", "Baggins", "burglar")); }; }
/** * Use Spring to inject a {@link EmployeeRepository} that can then load data. Since this will run * only after the app is operational, the database will be up. * * @param repository */ @Bean CommandLineRunner init(EmployeeRepository repository) { return args -> { repository.save(new Employee("Frodo", "Baggins", "ring bearer")); repository.save(new Employee("Bilbo", "Baggins", "burglar")); }; }