/*
* 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.Privilege;
import com.smartitengineering.user.client.api.PrivilegeFilter;
import com.smartitengineering.user.client.api.PrivilegeResource;
import com.smartitengineering.user.client.api.PrivilegesResource;
import com.smartitengineering.util.rest.atom.AbstractFeedClientResource;
import com.smartitengineering.util.rest.atom.AtomClientUtil;
import com.smartitengineering.util.rest.client.ClientUtil;
import com.smartitengineering.util.rest.client.Resource;
import com.smartitengineering.util.rest.client.ResourceLink;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.config.ClientConfig;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.apache.abdera.model.Entry;
/**
*
* @author russel
*/
public class PrivilegesResourceImpl extends AbstractFeedClientResource<PrivilegesResourceImpl> implements PrivilegesResource{
private static final String REL_PRIV = "Privilege";
private static final String REL_ALT = "alternate";
public PrivilegesResourceImpl(ResourceLink privsLink, Resource referrer){
super(referrer, privsLink);
}
@Override
public PrivilegesResource search(PrivilegeFilter filter) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
protected void processClientConfig(ClientConfig clientConfig) {
}
@Override
protected PrivilegesResourceImpl instantiatePageableResource(ResourceLink link) {
return new PrivilegesResourceImpl(link, this);
}
@Override
public List<PrivilegeResource> getPrivilegeResources() {
List<PrivilegeResource> privilegeResources = new ArrayList<PrivilegeResource>();
for (Entry entry : getLastReadStateOfEntity().getEntries()) {
privilegeResources.add(new PrivilegeResourceImpl(AtomClientUtil.convertFromAtomLinkToResourceLink(
entry.getLink(REL_ALT)), this));
}
return privilegeResources;
}
@Override
public PrivilegeResource create(Privilege privilege) {
ClientResponse response = post(MediaType.APPLICATION_JSON, privilege, ClientResponse.Status.CREATED);
final ResourceLink privLink = ClientUtil.createResourceLink(REL_PRIV, response.getLocation(),
MediaType.APPLICATION_ATOM_XML);
return new PrivilegeResourceImpl(privLink, this);
}
}