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

121939 jvonka: Nodes (FileFolder) API - update listChildren 'where' filtering (inc tests) for nodeType + subTypes
   RA-811, RA-634


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126443 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2016-05-10 10:56:07 +00:00
parent 1bd4af7a70
commit bba84f94b7
2 changed files with 29 additions and 5 deletions

View File

@@ -904,7 +904,7 @@ public class NodesImpl implements Nodes
boolean includeFiles = true;
QName filterNodeTypeQName = null;
boolean filterIncludeSubTypes = true;
boolean filterIncludeSubTypes = false;
Query q = parameters.getQuery();
@@ -925,12 +925,20 @@ public class NodesImpl implements Nodes
if ((nodeTypeStr != null) && (! nodeTypeStr.isEmpty()))
{
filterNodeTypeQName = createQName(nodeTypeStr);
if (dictionaryService.getType(filterNodeTypeQName) == null)
{
throw new InvalidArgumentException("Unknown filter nodeType: "+nodeTypeStr);
}
}
// optionally used with nodeType filter (default is to include subTypes, if not specified as "subTypes=false")
// optionally used with nodeType filter (default is *not* to include sub-types)
Boolean subTypes = propertyWalker.getProperty(PARAM_SUBTYPES, WhereClauseParser.EQUALS, Boolean.class);
if (subTypes != null)
{
if (nodeTypeStr == null)
{
throw new InvalidArgumentException("Expected nodeType and subTypes (not just subTypes) filter: "+parentNodeRef.getId());
}
filterIncludeSubTypes = subTypes;
}
}

View File

@@ -1427,20 +1427,31 @@ public class NodeApiTest extends AbstractBaseApiTest
n1.expected(nodeResp);
// filtering, via where clause (nodeType)
// filtering, via where clause (nodeType + subTypes)
List<String> linkIds = Arrays.asList(n1Id, n2Id);
Map<String, String> params = new HashMap<>();
params.put("where", "(nodeType='cm:link')");
Paging paging = getPaging(0, Integer.MAX_VALUE);
List<String> linkIds = Arrays.asList(n1Id, n2Id);
response = getAll(myChildrenUrl, user1, paging, params, 200);
List<Node> nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Node.class);
assertEquals(0, nodes.size());
params = new HashMap<>();
params.put("where", "(nodeType='cm:link' and subTypes=true)");
paging = getPaging(0, Integer.MAX_VALUE);
response = getAll(myChildrenUrl, user1, paging, params, 200);
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Node.class);
assertEquals(2, nodes.size());
assertTrue(linkIds.contains(nodes.get(0).getId()));
assertTrue(linkIds.contains(nodes.get(1).getId()));
// delete file
delete("nodes", user1, n1Id, 204);
@@ -1465,6 +1476,11 @@ public class NodeApiTest extends AbstractBaseApiTest
// -ve test - create - duplicate name
post(myChildrenUrl, user1, toJsonAsStringNonNull(n2), 409);
// -ve test - unknown nodeType when filtering
params = new HashMap<>();
params.put("where", "(nodeType='my:unknown'");
getAll(myChildrenUrl, user1, paging, params, 400);
}