mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD (5.2) to 5.2.N (5.2.1)
126599 jkaabimofrad: 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/BRANCHES/DEV/5.2.N/root@126944 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -34,4 +34,5 @@ public interface DeletedNodes
|
|||||||
CollectionWithPagingInfo<Node> listDeleted(Parameters parameters);
|
CollectionWithPagingInfo<Node> listDeleted(Parameters parameters);
|
||||||
Node getDeletedNode(String originalId, Parameters parameters);
|
Node getDeletedNode(String originalId, Parameters parameters);
|
||||||
Node restoreArchivedNode(String archivedId);
|
Node restoreArchivedNode(String archivedId);
|
||||||
|
void purgeArchivedNode(String archivedId);
|
||||||
}
|
}
|
||||||
|
@@ -160,4 +160,12 @@ public class DeletedNodesImpl implements DeletedNodes
|
|||||||
throw new ApiException("Unable to restore node "+archivedId);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@EntityResource(name="deleted-nodes", title = "Deleted Nodes")
|
@EntityResource(name="deleted-nodes", title = "Deleted Nodes")
|
||||||
public class TrashcanEntityResource implements
|
public class TrashcanEntityResource implements
|
||||||
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>
|
EntityResourceAction.ReadById<Node>, EntityResourceAction.Read<Node>, EntityResourceAction.Delete
|
||||||
{
|
{
|
||||||
private DeletedNodes deletedNodes;
|
private DeletedNodes deletedNodes;
|
||||||
|
|
||||||
@@ -66,9 +66,9 @@ public class TrashcanEntityResource implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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")
|
@Operation("restore")
|
||||||
@@ -77,4 +77,10 @@ public class TrashcanEntityResource implements
|
|||||||
{
|
{
|
||||||
return deletedNodes.restoreArchivedNode(nodeId);
|
return deletedNodes.restoreArchivedNode(nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(String nodeId, Parameters parameters)
|
||||||
|
{
|
||||||
|
deletedNodes.purgeArchivedNode(nodeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -155,24 +155,53 @@ public class DeletedNodesTest extends AbstractSingleNetworkSiteTest
|
|||||||
Document documentSameName = createDocument(createdFolder, "restoreme.txt");
|
Document documentSameName = createDocument(createdFolder, "restoreme.txt");
|
||||||
|
|
||||||
//Can't restore a node of the same name
|
//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);
|
delete(URL_NODES, u1.getId(), documentSameName.getId(), 204);
|
||||||
|
|
||||||
//Now we can restore it.
|
//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);
|
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.
|
//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
|
//Can't delete "nonsense" noderef
|
||||||
response = post("deleted-nodes/nonsense/restore", u1.getId(), null, null, Status.STATUS_NOT_FOUND);
|
response = post("deleted-nodes/nonsense/restore", u1.getId(), null, null, Status.STATUS_NOT_FOUND);
|
||||||
|
|
||||||
//User 2 can't restore it but user 1 can.
|
//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(URL_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", 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)
|
protected void checkDeletedNodes(Date now, Folder createdFolder, Folder createdFolderNonSite, Document document, List<Node> nodes)
|
||||||
|
Reference in New Issue
Block a user