/*
* 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.Role;
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 modhu7
*/
public class RoleResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements com.smartitengineering.user.client.api.RoleResource{
public static final String REL_ROLE = "role";
public RoleResourceImpl(ResourceLink roleLink, Resource referrer) {
super(referrer, roleLink);
final ResourceLink altLink = getRelatedResourceUris().getFirst(Link.REL_ALTERNATE);
addNestedResource(REL_ROLE, new SimpleResourceImpl<com.smartitengineering.user.client.impl.domain.Role>(
this, altLink.getUri(), altLink.getMimeType(), com.smartitengineering.user.client.impl.domain.Role.class,
null, false, null, null));
}
@Override
protected void processClientConfig(ClientConfig clientConfig) {
}
@Override
protected Resource<? extends Feed> instantiatePageableResource(ResourceLink link) {
return null;
}
@Override
public Role getRole() {
return getRole(false);
}
@Override
public void update() {
put(MediaType.APPLICATION_JSON, getRole(), ClientResponse.Status.OK, ClientResponse.Status.SEE_OTHER,
ClientResponse.Status.FOUND);
}
private Role getRole(boolean reload) {
Resource<Role> role = super.<Role>getNestedResource(REL_ROLE);
if(reload){
return role.get();
}
else{
return role.getLastReadStateOfEntity();
}
}
}