mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
CMIS: Query paging support in AtomPub binding
- exposes query service support for paging - added testGetQueryPaging() git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13452 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -455,7 +455,7 @@ public class CMISScript extends BaseScopableProcessorExtension
|
|||||||
options.setSkipCount(page.getNumber());
|
options.setSkipCount(page.getNumber());
|
||||||
options.setMaxItems(page.getSize());
|
options.setMaxItems(page.getSize());
|
||||||
CMISResultSet resultSet = cmisQueryService.query(options);
|
CMISResultSet resultSet = cmisQueryService.query(options);
|
||||||
Cursor cursor = paging.createCursor(resultSet.getLength() + (resultSet.hasMore() ? 1 : 0) , page);
|
Cursor cursor = paging.createCursor(page.getNumber() + resultSet.getLength() + (resultSet.hasMore() ? 1 : 0) , page);
|
||||||
return paging.createPagedResult(resultSet, cursor);
|
return paging.createPagedResult(resultSet, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -104,8 +104,8 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
// setRemoteServer(server);
|
// setRemoteServer(server);
|
||||||
// setArgsAsHeaders(false);
|
// setArgsAsHeaders(false);
|
||||||
// setValidateResponse(false);
|
// setValidateResponse(false);
|
||||||
// setListener(new CMISTestListener(System.out));
|
setListener(new CMISTestListener(System.out));
|
||||||
// setTraceReqRes(true);
|
setTraceReqRes(true);
|
||||||
|
|
||||||
super.setUp();
|
super.setUp();
|
||||||
}
|
}
|
||||||
@@ -1222,6 +1222,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
"WHERE IN_FOLDER('" + testFolderObject.getObjectId().getValue() + "') " +
|
"WHERE IN_FOLDER('" + testFolderObject.getObjectId().getValue() + "') " +
|
||||||
"AND Name = 'apple1'";
|
"AND Name = 'apple1'";
|
||||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||||
|
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
|
||||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||||
|
|
||||||
// issue structured query
|
// issue structured query
|
||||||
@@ -1243,6 +1244,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " +
|
String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " +
|
||||||
"WHERE CONTAINS('" + doc2name + "')";
|
"WHERE CONTAINS('" + doc2name + "')";
|
||||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||||
|
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
|
||||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||||
|
|
||||||
// issue fulltext query
|
// issue fulltext query
|
||||||
@@ -1266,6 +1268,7 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
"AND Name = 'apple1' " +
|
"AND Name = 'apple1' " +
|
||||||
"AND CONTAINS('apple1')";
|
"AND CONTAINS('apple1')";
|
||||||
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||||
|
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
|
||||||
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
queryReq = queryReq.replace("${PAGESIZE}", "5");
|
||||||
|
|
||||||
// issue structured query
|
// issue structured query
|
||||||
@@ -1282,6 +1285,51 @@ public class CMISTest extends BaseCMISWebScriptTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testQueryPaging() throws Exception
|
||||||
|
{
|
||||||
|
// retrieve query collection
|
||||||
|
IRI queryHREF = getQueryCollection(getWorkspace(getRepository()));
|
||||||
|
|
||||||
|
// create multiple children
|
||||||
|
Set<IRI> docIds = new HashSet<IRI>();
|
||||||
|
Entry testFolder = createTestFolder("testQueryPaging");
|
||||||
|
Link childrenLink = testFolder.getLink(CMISConstants.REL_CHILDREN);
|
||||||
|
assertNotNull(childrenLink);
|
||||||
|
for (int i = 0; i < 15; i++)
|
||||||
|
{
|
||||||
|
Entry document = createDocument(childrenLink.getHref(), "testQueryPaging" + i);
|
||||||
|
assertNotNull(document);
|
||||||
|
docIds.add(document.getId());
|
||||||
|
}
|
||||||
|
assertEquals(15, docIds.size());
|
||||||
|
|
||||||
|
// query children
|
||||||
|
String queryDoc = loadString("/org/alfresco/repo/cmis/rest/test/query.cmisquery.xml");
|
||||||
|
CMISObject testFolderObject = testFolder.getExtension(CMISConstants.OBJECT);
|
||||||
|
String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " + "WHERE IN_FOLDER('" + testFolderObject.getObjectId().getValue() + "')";
|
||||||
|
|
||||||
|
for (int page = 0; page < 4; page++)
|
||||||
|
{
|
||||||
|
String queryReq = queryDoc.replace("${STATEMENT}", query);
|
||||||
|
queryReq = queryReq.replace("${SKIPCOUNT}", new Integer(page * 4).toString());
|
||||||
|
queryReq = queryReq.replace("${PAGESIZE}", "4");
|
||||||
|
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq.getBytes(), CMISConstants.MIMETYPE_QUERY), 200);
|
||||||
|
assertNotNull(queryRes);
|
||||||
|
|
||||||
|
Feed queryFeed = abdera.parseFeed(new StringReader(queryRes.getContentAsString()), null);
|
||||||
|
assertNotNull(queryFeed);
|
||||||
|
assertEquals(page < 3 ? 4 : 3, queryFeed.getEntries().size());
|
||||||
|
|
||||||
|
for (Entry entry : queryFeed.getEntries())
|
||||||
|
{
|
||||||
|
docIds.remove(entry.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(0, docIds.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// public void testUnfiled()
|
// public void testUnfiled()
|
||||||
// {
|
// {
|
||||||
// }
|
// }
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05" >
|
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05" >
|
||||||
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
|
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
|
||||||
|
<cmis:skipCount>${SKIPCOUNT}</cmis:skipCount>
|
||||||
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
|
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
|
||||||
</cmis:query>
|
</cmis:query>
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
<cmis:query xmlns:cmis="http://www.cmis.org/2008/05" >
|
|
||||||
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
|
|
||||||
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
|
|
||||||
</cmis:query>
|
|
Reference in New Issue
Block a user