/*
* 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.SecuredObject;
import com.smartitengineering.user.client.api.SecuredObjectResource;
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 SecuredObjectResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements
SecuredObjectResource {
public static final String REL_SECUREDOBJECT = "securedobject";
public static final String REL_ALT = "alternate";
public SecuredObjectResourceImpl(ResourceLink securedObjectLink, Resource referrer) {
super(referrer, securedObjectLink);
final ResourceLink altLink = getRelatedResourceUris().getFirst(Link.REL_ALTERNATE);
addNestedResource(REL_SECUREDOBJECT,
new SimpleResourceImpl<com.smartitengineering.user.client.impl.domain.SecuredObject>(this, altLink.
getUri(), altLink.getMimeType(), com.smartitengineering.user.client.impl.domain.SecuredObject.class, null, false,
null, null));
}
@Override
public SecuredObject getSecuredObjcet() {
return getSecuredObject(false);
}
@Override
public OrganizationResource getOrganizationResource() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void update() {
put(MediaType.APPLICATION_JSON, getSecuredObjcet(), ClientResponse.Status.OK, ClientResponse.Status.SEE_OTHER,
ClientResponse.Status.FOUND);
}
@Override
protected void processClientConfig(ClientConfig clientConfig) {
}
@Override
protected Resource<? extends Feed> instantiatePageableResource(ResourceLink link) {
return null;
}
private SecuredObject getSecuredObject(boolean reload) {
Resource<SecuredObject> securedObject = super.<SecuredObject>getNestedResource(REL_SECUREDOBJECT);
if(reload){
return securedObject.get();
}
else{
return securedObject.getLastReadStateOfEntity();
}
}
}