package com.alexshabanov.springrestapi.rest.client; import com.alexshabanov.springrestapi.domain.User; import com.alexshabanov.springrestapi.rest.common.InlineInt; import com.alexshabanov.springrestapi.rest.common.InlineString; import com.alexshabanov.springrestapi.rest.common.RestConstants; import com.alexshabanov.springrestapi.service.UserService; import org.springframework.web.client.RestOperations; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * Communicates with the exposed UserService. */ public final class UserRestClientService extends AbstractRestClientService implements UserService { public UserRestClientService(String baseUrl, RestOperations restOperations) { super(baseUrl, restOperations); } @Override public int register(String name) { return getRestOperations().postForObject( getMethodUri(RestConstants.REGISTER_USER_URI), new InlineString(name), InlineInt.class).getValue(); } @Override public User findById(int id) { return getRestOperations().getForObject(getMethodUri(RestConstants.FIND_USER_BY_ID_URI), User.class, id); } @Override public List<User> findAll() { return Collections.unmodifiableList(Arrays.asList( getRestOperations().getForObject(getMethodUri(RestConstants.FIND_ALL_USERS_URI), User[].class))); } }