package org.hyperic.hq.authz.server.session;
import org.hyperic.hq.bizapp.server.session.ResourceCleanupEventListener;
import org.hyperic.hq.common.VetoException;
public interface ResourceRemover {
/**
* Removes edges involving the specified {@link Resource} as either the "to"
* or "from"
* @param resource The resource
* @param relation The relationship type to remove
*/
void removeEdges(Resource resource, ResourceRelation relation);
/**
* Completely removes a {@link Resource}
* @param subject The user executing the delete
* @param resource The {@link Resource} to delete
* @throws VetoException
*/
void removeResource(AuthzSubject subject, Resource resource) throws VetoException;
/**
* Either completely removes a Resource (if nullResourceType is false) or
* marks a Resource for deletion by nulling out its resourceType. If the
* Resource type is nulled, also deletes all {@link ResourceEdge}s involving
* the Resource
* @param subject The user executing the delete
* @param resource The {@link Resource} to delete or mark for deletion
* @param nullResourceType true if Resource is to be marked for deletion
* later by {@link ResourceCleanupEventListener}, false if delete now
*/
void removeResource(AuthzSubject subject, Resource resource, boolean nullResourceType);
}