/* * 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.OrganizationResource; import com.smartitengineering.user.client.api.UserPerson; import com.smartitengineering.user.client.api.UserPrivilegesResource; import com.smartitengineering.user.client.api.UserResource; import com.smartitengineering.user.client.api.UserRolesResource; import com.smartitengineering.util.rest.atom.AbstractFeedClientResource; import com.smartitengineering.util.rest.client.Resource; import com.smartitengineering.util.rest.client.ResourceLink; import com.smartitengineering.util.rest.client.SimpleResourceImpl; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.config.ClientConfig; import javax.ws.rs.core.MediaType; import org.apache.abdera.model.Feed; import org.apache.abdera.model.Link; /** * * @author russel */ public class UserResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements UserResource{ public static final String REL_USER = "user"; public static final String REL_ALT = "alternate"; public static final String REL_USER_PRIVS = "privileges"; public static final String REL_USER_ROLES = "roles"; public static final String REL_ORGANIZATION = "organization"; public UserResourceImpl(ResourceLink userLink, Resource referrer) { super(referrer, userLink); final ResourceLink altLink = getRelatedResourceUris().getFirst(Link.REL_ALTERNATE); addNestedResource(REL_USER, new SimpleResourceImpl<com.smartitengineering.user.client.impl.domain.UserPerson>( this, altLink.getUri(), altLink.getMimeType(), com.smartitengineering.user.client.impl.domain.UserPerson.class, null, false, null, null)); } @Override protected void processClientConfig(ClientConfig clientConfig) { } @Override protected Resource<? extends Feed> instantiatePageableResource(ResourceLink link) { return null; } @Override public UserPrivilegesResource getPrivilegesResource() { return new UserPrivilegesResourceImpl(getRelatedResourceUris().getFirst(REL_USER_PRIVS), this); } @Override public UserRolesResource getRolesResource() { return new UserRolesResourceImpl(getRelatedResourceUris().getFirst(REL_USER_ROLES), this); } @Override public void update() { put(MediaType.APPLICATION_JSON, getUser(), ClientResponse.Status.OK, ClientResponse.Status.SEE_OTHER, ClientResponse.Status.FOUND); } @Override public UserPerson getUser() { return getUser(false); } @Override public UserPerson getUserReloaded() { return getUser(true); } protected UserPerson getUser(boolean reload) { Resource<UserPerson> user = super.<UserPerson>getNestedResource(REL_USER); if(reload){ return user.get(); } else{ return user.getLastReadStateOfEntity(); } } @Override public OrganizationResource getOrganizationResource() { return new OrganizationResourceImpl(getRelatedResourceUris().getFirst(REL_ORGANIZATION), this); } }