/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.smartitengineering.user.client.impl; import com.smartitengineering.user.client.api.AuthorizationResource; import com.smartitengineering.user.client.api.LoginResource; import com.smartitengineering.user.client.api.OrganizationResource; import com.smartitengineering.user.client.api.OrganizationsResource; import com.smartitengineering.user.client.api.RolesResource; import com.smartitengineering.user.client.api.UserLinkResource; import com.smartitengineering.user.client.api.UserResource; import com.smartitengineering.util.rest.atom.AbstractFeedClientResource; import com.smartitengineering.util.rest.client.Resource; import com.smartitengineering.util.rest.client.ResourceLink; import com.sun.jersey.api.client.config.ClientConfig; import java.net.URI; import java.net.URISyntaxException; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriBuilderException; import org.apache.abdera.model.Feed; /** * * @author russel */ class LoginResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements LoginResource { private static final String REL_ORGS = "Organizations"; private static final String REL_ORG = "Organization"; private static final String REL_USERS = "Users"; private static final String REL_USER = "User"; private static final String REL_ROLES = "Roles"; private static final String REL_ACL_AUTH = "aclAuth"; private static final String REL_ROLE_AUTH = "roleAuth"; private static final String REL_USER_GETTER_LINK = "userGetter"; private String userName; private String password; public LoginResourceImpl(String userName, String password, ResourceLink loginLink, Resource referrer) throws URISyntaxException { super(referrer, getSelfUri(loginLink, userName)); this.userName = userName; this.password = password; } @Override public OrganizationsResource getOrganizationsResource() { return new OrganizationsResourceImpl(getRelatedResourceUris().getFirst(REL_ORGS), this); } @Override public UserResource getUserResource() { return new UserResourceImpl(getRelatedResourceUris().getFirst(REL_USER), this); } @Override public OrganizationResource getOrganizationResource() { return new OrganizationResourceImpl(getRelatedResourceUris().getFirst(REL_ORG), this); } @Override public AuthorizationResource getAclAuthorizationResource(String username, String organizationName, String oid, Integer permission) { return new AuthorizationResourceImpl(username, organizationName, oid, permission, getRelatedResourceUris().getFirst( REL_ACL_AUTH), this); } @Override public AuthorizationResource getRoleAuthorizationResource(String username, String organizationName, String configAttribute) { return new AuthorizationResourceImpl(username, organizationName, configAttribute, getRelatedResourceUris().getFirst( REL_ROLE_AUTH), this); } protected static URI getSelfUri(ResourceLink loginLink, String username) throws IllegalArgumentException, UriBuilderException { URI loginResourceUri = UriBuilder.fromUri(loginLink.getUri().toString()).queryParam("username", username). build(); return loginResourceUri; } @Override protected void processClientConfig(ClientConfig clientConfig) { } @Override protected Resource<? extends Feed> instantiatePageableResource(ResourceLink link) { return null; } @Override public RolesResource getRolesResource() { return new RolesResourceImpl(getRelatedResourceUris().getFirst(REL_ROLES), this); } @Override public UserLinkResource getUserLinkResource(String username) { return new UserLinkResourceImpl(getRelatedResourceUris().getFirst(REL_USER_GETTER_LINK), username, this); } }