Last active
March 14, 2022 09:43
-
-
Save susimsek/4350c96adb616a80a7f777cf5579d2c8 to your computer and use it in GitHub Desktop.
Hateoas Assembler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Component | |
@FieldDefaults(level = AccessLevel.PRIVATE) | |
@RequiredArgsConstructor | |
public class CapabilityModelAssembler implements RepresentationModelAssembler<Capability, CapabilityDto> { | |
final PagedResourcesAssembler<Capability> pagedResourcesAssembler; | |
final CapabilityMapper capabilityMapper; | |
@Override | |
public CapabilityDto toModel(Capability entity) { | |
CapabilityDto resource = capabilityMapper.toDto(entity); | |
addLinks(resource); | |
return resource; | |
} | |
@Override | |
public CollectionModel<CapabilityDto> toCollectionModel(Iterable<? extends Capability> entities) { | |
CollectionModel<CapabilityDto> resources = RepresentationModelAssembler.super.toCollectionModel(entities); | |
addLinks(resources); | |
return resources; | |
} | |
public PagedModel<CapabilityDto> toPagedModel(Page<Capability> page) { | |
PagedModel<CapabilityDto> resources = pagedResourcesAssembler.toModel(page, this); | |
addLinks(resources); | |
return resources; | |
} | |
public void addLinks(CapabilityDto resource) { | |
resource.add(linkTo(methodOn(CapabilityController.class).getCapability(resource.getId())).withSelfRel()); | |
resource.add(linkTo(methodOn(CapabilityController.class).getAllCapabilities()).withRel(CAPABILITIES)); | |
} | |
public void addLinks(CollectionModel<CapabilityDto> resources) { | |
resources.add(linkTo(methodOn(CapabilityController.class).getAllCapabilities()).withRel(CAPABILITIES)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment