package org.jvalue.ods.rest;
import org.jvalue.commons.auth.AbstractUserDescription;
import org.jvalue.commons.auth.BasicAuthUtils;
import org.jvalue.commons.auth.BasicAuthenticator;
import org.jvalue.commons.auth.OAuthUtils;
import org.jvalue.commons.auth.RestrictedTo;
import org.jvalue.commons.auth.Role;
import org.jvalue.commons.auth.User;
import org.jvalue.commons.auth.UserManager;
import java.util.List;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* Empty class which calls super for every single method. Its solve purpose is to allow JaxRs2Retrofit to
* create client code (yes, it's unfortunately a hack ...).
*/
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public final class UserApi extends org.jvalue.commons.auth.rest.UserApi {
@Inject
UserApi(UserManager userManager, BasicAuthenticator basicAuthenticator, BasicAuthUtils basicAuthUtils, OAuthUtils oAuthUtils) {
super(userManager, basicAuthenticator, basicAuthUtils, oAuthUtils);
}
@Override
@GET
public List<User> getAllUsers(@RestrictedTo(Role.ADMIN) User user) {
return super.getAllUsers(user);
}
@Override
@POST
public User addUser(@RestrictedTo(value = Role.ADMIN, isOptional = true) User user, AbstractUserDescription userDescription) {
return super.addUser(user, userDescription);
}
@Override
@GET
@Path("/{userId}")
public User getUser(@RestrictedTo(Role.PUBLIC) User user, @PathParam("userId") String userId) {
return super.getUser(user, userId);
}
@Override
@GET
@Path("/me")
public User getUser(@RestrictedTo(Role.PUBLIC) User user) {
return super.getUser(user);
}
@Override
@DELETE
@Path("/{userId}")
public void removeUser(@RestrictedTo(Role.PUBLIC) User user, @PathParam("userId") String userId) {
super.removeUser(user, userId);
}
}