Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1)

128597 jvonka: REPO-900: Fix "autoRename not working if using a relativePath (with create/add node via json request)"


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129175 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Martin Muller
2016-08-05 13:47:20 +00:00
parent a95eb5613e
commit bcf551a644
2 changed files with 29 additions and 10 deletions

View File

@@ -1589,6 +1589,10 @@ public class NodesImpl implements Nodes
props = mapToNodeProperties(nodeInfo.getProperties());
}
// Optionally, lookup by relative path
String relativePath = nodeInfo.getRelativePath();
parentNodeRef = getOrCreatePath(parentNodeRef, relativePath);
// Existing file/folder name handling
boolean autoRename = Boolean.valueOf(parameters.getParameter(PARAM_AUTO_RENAME));
if (autoRename && (isContent || isSubClass(nodeTypeQName, ContentModel.TYPE_FOLDER)))
@@ -1601,9 +1605,6 @@ public class NodesImpl implements Nodes
}
}
String relativePath = nodeInfo.getRelativePath();
parentNodeRef = getOrCreatePath(parentNodeRef, relativePath);
QName assocTypeQName = ContentModel.ASSOC_CONTAINS;
if ((nodeInfo.getAssociation() != null) && (nodeInfo.getAssociation().getAssocType() != null))
{

View File

@@ -1960,17 +1960,35 @@ public class NodeApiTest extends AbstractBaseApiTest
post(postUrl, user1, toJsonAsStringNonNull(f1), 409);
// Create a folder with a duplicate name (f1), but set the autoRename to true
response = post(postUrl, user1, toJsonAsStringNonNull(f1), "?autoRename=true", 201);
response = post(postUrl, user1, toJsonAsStringNonNull(f1), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("f1-1", documentResp.getName());
// Create a folder with a duplicate name (f1) again, but set the autoRename to true
response = post(postUrl, user1, toJsonAsStringNonNull(f1), "?autoRename=true", 201);
response = post(postUrl, user1, toJsonAsStringNonNull(f1), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("f1-2", documentResp.getName());
// -ve test - create a folder with a duplicate name (f1), but set the autoRename to false
post(postUrl, user1, toJsonAsStringNonNull(f1), "?autoRename=false", 409);
post(postUrl, user1, toJsonAsStringNonNull(f1), "?"+Nodes.PARAM_AUTO_RENAME+"=false", 409);
// Create folder using relative path
n = new Node();
n.setName("fX");
n.setNodeType(TYPE_CM_FOLDER);
n.setRelativePath("/f1/f2");
response = post(postUrl, user1, toJsonAsStringNonNull(n), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("fX", documentResp.getName());
// Create a folder using relative path, with a duplicate name (fX) but set the autoRename to true
response = post(postUrl, user1, toJsonAsStringNonNull(n), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("fX-1", documentResp.getName());
// -ve test - create a folder with a duplicate name (fX), but set the autoRename to false
post(postUrl, user1, toJsonAsStringNonNull(n), "?"+Nodes.PARAM_AUTO_RENAME+"=false", 409);
// -ve test - invalid relative path
n = new Node();
@@ -2599,23 +2617,23 @@ public class NodeApiTest extends AbstractBaseApiTest
post(postUrl, user1, toJsonAsStringNonNull(d1), 409);
// Create a file with a duplicate name (d1.txt), but set the autoRename to true
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?autoRename=true", 201);
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("d1-1.txt", documentResp.getName());
// Create a file with a duplicate name (d1.txt) again, but set the autoRename to true
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?autoRename=true", 201);
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("d1-2.txt", documentResp.getName());
// Create a file with a duplicate name (d1-2.txt) again, but set the autoRename to true
d1.setName("d1-2.txt");
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?autoRename=true", 201);
response = post(postUrl, user1, toJsonAsStringNonNull(d1), "?"+Nodes.PARAM_AUTO_RENAME+"=true", 201);
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertEquals("d1-2-1.txt", documentResp.getName());
// -ve test - create a file with a duplicate name (d1-2.txt), but set the autoRename to false
post(postUrl, user1, toJsonAsStringNonNull(d1), "?autoRename=false", 409);
post(postUrl, user1, toJsonAsStringNonNull(d1), "?"+Nodes.PARAM_AUTO_RENAME+"=false", 409);
}
/**