Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)

124903 gjames: RA-850 Purge Deleted Node


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126599 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2016-05-10 11:44:54 +00:00
parent f86365ae50
commit b97308da93
4 changed files with 52 additions and 8 deletions

View File

@@ -34,4 +34,5 @@ public interface DeletedNodes
CollectionWithPagingInfo<Node> listDeleted(Parameters parameters);
Node getDeletedNode(String originalId, Parameters parameters);
Node restoreArchivedNode(String archivedId);
void purgeArchivedNode(String archivedId);
}

View File

@@ -160,4 +160,12 @@ public class DeletedNodesImpl implements DeletedNodes
throw new ApiException("Unable to restore node "+archivedId);
}
}
@Override
public void purgeArchivedNode(String archivedId)
{
//First check the node is valid and has been archived.
NodeRef validatedNodeRef = nodes.validateNode(StoreRef.STORE_REF_ARCHIVE_SPACESSTORE, archivedId);
nodeArchiveService.purgeArchivedNode(validatedNodeRef);
}
}

View File

@@ -50,7 +50,7 @@ import java.util.List;
*/
@EntityResource(name="deleted-nodes", title = "Deleted Nodes")
public class TrashcanEntityResource implements
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>, EntityResourceAction.Delete
{
private DeletedNodes deletedNodes;
@@ -66,9 +66,9 @@ public class TrashcanEntityResource implements
}
@Override
public Node readById(String id, Parameters parameters) throws EntityNotFoundException
public Node readById(String nodeId, Parameters parameters) throws EntityNotFoundException
{
return deletedNodes.getDeletedNode(id, parameters);
return deletedNodes.getDeletedNode(nodeId, parameters);
}
@Operation("restore")
@@ -77,4 +77,10 @@ public class TrashcanEntityResource implements
{
return deletedNodes.restoreArchivedNode(nodeId);
}
@Override
public void delete(String nodeId, Parameters parameters)
{
deletedNodes.purgeArchivedNode(nodeId);
}
}

View File

@@ -155,24 +155,53 @@ public class DeletedNodesTest extends AbstractSingleNetworkSiteTest
Document documentSameName = createDocument(createdFolder, "restoreme.txt");
//Can't restore a node of the same name
HttpResponse response = post("deleted-nodes/"+document.getId()+"/restore", u1.getId(), null, null, Status.STATUS_CONFLICT);
HttpResponse response = post(URL_DELETED_NODES+"/"+document.getId()+"/restore", u1.getId(), null, null, Status.STATUS_CONFLICT);
delete(URL_NODES, u1.getId(), documentSameName.getId(), 204);
//Now we can restore it.
response = post("deleted-nodes/"+document.getId()+"/restore", u1.getId(), null, null, 201);
response = post(URL_DELETED_NODES+"/"+document.getId()+"/restore", u1.getId(), null, null, 201);
delete(URL_NODES, u1.getId(), createdFolder.getId(), 204);
//We deleted the parent folder so lets see if we can restore a child doc, hopefully not.
response = post("deleted-nodes/"+documentSameName.getId()+"/restore", u1.getId(), null, null, Status.STATUS_NOT_FOUND);
response = post(URL_DELETED_NODES+"/"+documentSameName.getId()+"/restore", u1.getId(), null, null, Status.STATUS_NOT_FOUND);
//Can't delete "nonsense" noderef
response = post("deleted-nodes/nonsense/restore", u1.getId(), null, null, Status.STATUS_NOT_FOUND);
//User 2 can't restore it but user 1 can.
response = post("deleted-nodes/"+createdFolder.getId()+"/restore", u2.getId(), null, null, Status.STATUS_FORBIDDEN);
response = post("deleted-nodes/"+createdFolder.getId()+"/restore", u1.getId(), null, null, 201);
response = post(URL_DELETED_NODES+"/"+createdFolder.getId()+"/restore", u2.getId(), null, null, Status.STATUS_FORBIDDEN);
response = post(URL_DELETED_NODES+"/"+createdFolder.getId()+"/restore", u1.getId(), null, null, 201);
}
@Test
public void testCreateAndPurge() throws Exception
{
publicApiClient.setRequestContext(new RequestContext(u1.getId()));
Date now = new Date();
String folder1 = "folder" + now.getTime() + "_1";
Folder createdFolder = createFolder(u1.getId(), docLibNodeRef.getId(), folder1, null);
assertNotNull(createdFolder);
delete(URL_NODES, u1.getId(), createdFolder.getId(), 204);
HttpResponse response = getSingle(URL_DELETED_NODES, u1.getId(), createdFolder.getId(), 200);
Folder fNode = jacksonUtil.parseEntry(response.getJsonResponse(), Folder.class);
assertNotNull(fNode);
//try purging "nonsense"
delete(URL_DELETED_NODES, u1.getId(), "nonsense", 404);
//User 2 can't do it
delete(URL_DELETED_NODES, u2.getId(), createdFolder.getId(), Status.STATUS_FORBIDDEN);
//Now purge the folder
delete(URL_DELETED_NODES, u1.getId(), createdFolder.getId(), 204);
//This time we can't find it.
response = getSingle(URL_DELETED_NODES, u1.getId(), createdFolder.getId(), 404);
}
protected void checkDeletedNodes(Date now, Folder createdFolder, Folder createdFolderNonSite, Document document, List<Node> nodes)