mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
[MNT-22015] REST api does not update the primary path on new version upload
This commit is contained in:
@@ -2348,6 +2348,11 @@ public class NodesImpl implements Nodes
|
|||||||
private void handleNodeRename(Map<QName, Serializable> props, NodeRef nodeRef)
|
private void handleNodeRename(Map<QName, Serializable> props, NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
Serializable nameProp = props.get(ContentModel.PROP_NAME);
|
Serializable nameProp = props.get(ContentModel.PROP_NAME);
|
||||||
|
handleNodeRename(nameProp, nodeRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleNodeRename(Serializable nameProp, NodeRef nodeRef)
|
||||||
|
{
|
||||||
if ((nameProp != null))
|
if ((nameProp != null))
|
||||||
{
|
{
|
||||||
String currentName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
String currentName = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||||
@@ -2722,6 +2727,7 @@ public class NodesImpl implements Nodes
|
|||||||
String fileName = parameters.getParameter(PARAM_NAME);
|
String fileName = parameters.getParameter(PARAM_NAME);
|
||||||
if (fileName != null)
|
if (fileName != null)
|
||||||
{
|
{
|
||||||
|
handleNodeRename(fileName, nodeRef);
|
||||||
// optionally rename, before updating the content
|
// optionally rename, before updating the content
|
||||||
nodeService.setProperty(nodeRef, ContentModel.PROP_NAME, fileName);
|
nodeService.setProperty(nodeRef, ContentModel.PROP_NAME, fileName);
|
||||||
}
|
}
|
||||||
|
@@ -5714,6 +5714,55 @@ public class NodeApiTest extends AbstractSingleNetworkSiteTest
|
|||||||
assertTrue(currentPath.equals(expectedPath));
|
assertTrue(currentPath.equals(expectedPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPrimaryPathVersion() throws Exception
|
||||||
|
{
|
||||||
|
setRequestContext(user1);
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
||||||
|
String myNodeId = getMyNodeId();
|
||||||
|
|
||||||
|
// /Company Home/User Homes/user<timestamp>/folder_A
|
||||||
|
String folderName = "folder_A";
|
||||||
|
Folder folder = createFolder(myNodeId, folderName);
|
||||||
|
NodeRef folderNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folder.getId());
|
||||||
|
|
||||||
|
// /Company Home/User Homes/user<timestamp>/folder_A/testDoc<GUID>
|
||||||
|
String docName = "testDoc" + GUID.generate();
|
||||||
|
Document doc = new Document();
|
||||||
|
doc.setName(docName);
|
||||||
|
doc.setNodeType(TYPE_CM_CONTENT);
|
||||||
|
HttpResponse response = post(getNodeChildrenUrl(folderNodeRef.getId()), toJsonAsStringNonNull(doc), 201);
|
||||||
|
Document docResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
NodeRef docNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, docResp.getId());
|
||||||
|
|
||||||
|
// Checks that current path and name match
|
||||||
|
String expectedPath1 = "/Company Home/User Homes/" + user1 + "/" + folderName + "/" + docName;
|
||||||
|
Path docPath1 = nodeService.getPath(docNodeRef);
|
||||||
|
Path.ChildAssocElement docPathLast1 = (Path.ChildAssocElement) docPath1.last();
|
||||||
|
String docLocalName1 = docPathLast1.getRef().getQName().getLocalName();
|
||||||
|
String currentPath1 = docPath1.toDisplayPath(nodeService, permissionService) + "/" + docLocalName1;
|
||||||
|
assertTrue(docName.equals(docLocalName1));
|
||||||
|
assertTrue(expectedPath1.equals(currentPath1));
|
||||||
|
|
||||||
|
// Upload document new content supplying a different name
|
||||||
|
String docName2 = "testDoc2" + GUID.generate();
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("name", docName2);
|
||||||
|
Document docResp2 = updateTextFileWithRandomContent(docNodeRef.getId(), 1024L, params);
|
||||||
|
NodeRef docNodeRef2 = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, docResp2.getId());
|
||||||
|
|
||||||
|
// Checks new path and name after new version upload
|
||||||
|
String expectedPath2 = "/Company Home/User Homes/" + user1 + "/" + folderName + "/" + docName2;
|
||||||
|
Path docPath2 = nodeService.getPath(docNodeRef2);
|
||||||
|
Path.ChildAssocElement docPathLast2 = (Path.ChildAssocElement) docPath2.last();
|
||||||
|
String docLocalName2 = docPathLast2.getRef().getQName().getLocalName();
|
||||||
|
String currentPath2 = docPath2.toDisplayPath(nodeService, permissionService) + "/" + docLocalName2;
|
||||||
|
assertFalse(docLocalName1.equals(docLocalName2));
|
||||||
|
assertTrue(docName2.equals(docLocalName2));
|
||||||
|
assertFalse(expectedPath1.equals(currentPath2));
|
||||||
|
assertTrue(expectedPath2.equals(currentPath2));
|
||||||
|
}
|
||||||
|
|
||||||
private String getDataDictionaryNodeId() throws Exception
|
private String getDataDictionaryNodeId() throws Exception
|
||||||
{
|
{
|
||||||
Map params = new HashMap<>();
|
Map params = new HashMap<>();
|
||||||
|
Reference in New Issue
Block a user