package it.demo.twitterlike.server.web.api.support; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn; import it.demo.twitterlike.server.domain.User; import it.demo.twitterlike.server.web.api.UserRestController; import it.demo.twitterlike.server.web.api.domain.UserResource; import org.springframework.hateoas.ResourceAssembler; import org.springframework.stereotype.Component; /** * This Resource Assembler Map a Person to PersonResource. * @author Christian Simonelli * */ @Component public class UserResourceAssembler implements ResourceAssembler<User, UserResource> { @Override public UserResource toResource(User person) { UserResource resource = new UserResource(person); resource.add(linkTo( methodOn(UserRestController.class).getUserById(person.getLogin())) .withSelfRel()); resource.add(linkTo( methodOn(UserRestController.class).getUserFollowers(person.getLogin(), null, null)) .withRel(UserResource.LINK_NAME_FOLLOWERS)); resource.add(linkTo( methodOn(UserRestController.class).getUserFollowing(person.getLogin(), null ,null)) .withRel(UserResource.LINK_NAME_FOLLOWING)); resource.add(linkTo( methodOn(UserRestController.class).getUserMessages(person.getLogin(), null ,null)) .withRel(UserResource.LINK_NAME_MESSAGES)); return resource; } }