Merged CMIS063 to HEAD

15327: 0.62 final update: Add feed links as per spec
  15334: 0.62 final update: queries working again.
  15350: 0.62 final update: query via GET
  15362: 0.62 final update: query uri template and query result set feed as per 0.62
  15434: Fix decoding issue retrieving query string of request.
  15441: 0.62 final updates: fixes to allow CMIS Fileshare browsing

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17231 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2009-10-29 16:27:40 +00:00
parent c9facc3e78
commit e90b63f20b
44 changed files with 599 additions and 288 deletions

View File

@@ -273,7 +273,7 @@ public class CMISCustomTypeTest extends BaseCMISWebScriptTest
queryReq = queryReq.replace("${PAGESIZE}", "5");
// issue structured query
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);

View File

@@ -1274,13 +1274,13 @@ public class CMISTest extends BaseCMISWebScriptTest
{
{
// meta data only query against folder
String query = "SELECT * FROM Folder " +
"WHERE ObjectId = '" + testFolderObject.getObjectId().getStringValue() + "'";
String query = "SELECT * FROM cmis:folder " +
"WHERE cmis:ObjectId = '" + testFolderObject.getObjectId().getStringValue() + "'";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${PAGESIZE}", "5");
queryReq = queryReq.replace("${MAXITEMS}", "5");
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
@@ -1294,14 +1294,14 @@ public class CMISTest extends BaseCMISWebScriptTest
{
// meta data only query against document
String query = "SELECT * FROM Document " +
String query = "SELECT * FROM cmis:document " +
"WHERE IN_FOLDER('" + testFolderObject.getObjectId().getStringValue() + "') " +
"AND Name = 'apple1'";
"AND cmis:Name = 'apple1'";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${PAGESIZE}", "5");
queryReq = queryReq.replace("${MAXITEMS}", "5");
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
@@ -1317,13 +1317,13 @@ public class CMISTest extends BaseCMISWebScriptTest
if (queryCapability.equals("fulltextonly") || queryCapability.equals("bothseperate") || queryCapability.equals("bothcombined"))
{
// full text only query
String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " +
String query = "SELECT cmis:ObjectId, cmis:ObjectTypeId, cmis:Name FROM cmis:document " +
"WHERE CONTAINS('" + doc2name + "')";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${PAGESIZE}", "5");
queryReq = queryReq.replace("${MAXITEMS}", "5");
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
@@ -1338,15 +1338,15 @@ public class CMISTest extends BaseCMISWebScriptTest
if (queryCapability.equals("bothcombined"))
{
// combined meta data and full text
String query = "SELECT ObjectId, ObjectTypeId, Name FROM Document " +
String query = "SELECT cmis:ObjectId, cmis:ObjectTypeId, cmis:Name FROM cmis:document " +
"WHERE IN_FOLDER('" + testFolderObject.getObjectId().getStringValue() + "') " +
"AND Name = 'apple1' " +
"AND cmis:Name = 'apple1' " +
"AND CONTAINS('apple1')";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${PAGESIZE}", "5");
queryReq = queryReq.replace("${MAXITEMS}", "5");
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
@@ -1386,26 +1386,52 @@ public class CMISTest extends BaseCMISWebScriptTest
// 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().getStringValue() + "')";
String query = "SELECT cmis:ObjectId, cmis:ObjectTypeId, cmis:Name FROM cmis:document " + "WHERE IN_FOLDER('" + testFolderObject.getObjectId().getStringValue() + "')";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${MAXITEMS}", "4");
// issue query
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
// retrieve entries for first page
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
for (int page = 0; page < 4; page++)
int page = 0;
Link nextLink = null;
do
{
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, CMISConstants.MIMETYPE_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);
assertEquals(page < 3 ? 4 : 3, queryFeed.getEntries().size());
page++;
assertEquals(page < 4 ? 4 : 3, queryFeed.getEntries().size());
// mark entries as read
for (Entry entry : queryFeed.getEntries())
{
docIds.remove(entry.getId());
}
// next page
nextLink = queryFeed.getLink("next");
if (page == 4)
{
assertNull(nextLink);
}
else
{
assertNotNull(nextLink);
}
if (nextLink != null)
{
queryFeed = getFeed(nextLink.getHref());
assertNotNull(queryFeed);
}
}
while (nextLink != null);
assertEquals(4, page);
assertEquals(0, docIds.size());
}
@@ -1444,15 +1470,15 @@ public class CMISTest extends BaseCMISWebScriptTest
{
// construct structured query
String query = "SELECT * FROM Document " +
String query = "SELECT * FROM cmis:document " +
"WHERE IN_FOLDER('" + testFolderObject.getObjectId().getStringValue() + "') ";
String queryReq = queryDoc.replace("${STATEMENT}", query);
queryReq = queryReq.replace("${INCLUDEALLOWABLEACTIONS}", "true");
queryReq = queryReq.replace("${SKIPCOUNT}", "0");
queryReq = queryReq.replace("${PAGESIZE}", "5");
queryReq = queryReq.replace("${MAXITEMS}", "5");
// issue structured query
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_QUERY), 200);
Response queryRes = sendRequest(new PostRequest(queryHREF.toString(), queryReq, CMISConstants.MIMETYPE_CMIS_QUERY), 200);
assertNotNull(queryRes);
Feed queryFeed = getAbdera().parseFeed(new StringReader(queryRes.getContentAsString()), null);
assertNotNull(queryFeed);

View File

@@ -1,5 +1,5 @@
<cmis:query xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200901" >
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
<cmis:skipCount>${SKIPCOUNT}</cmis:skipCount>
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
<cmis:maxItems>${MAXITEMS}</cmis:maxItems>
</cmis:query>

View File

@@ -1,6 +1,6 @@
<cmis:query xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200901" >
<cmis:statement><![CDATA[${STATEMENT}]]></cmis:statement>
<cmis:returnAllowableActions>${INCLUDEALLOWABLEACTIONS}</cmis:returnAllowableActions>
<cmis:includeAllowableActions>${INCLUDEALLOWABLEACTIONS}</cmis:includeAllowableActions>
<cmis:skipCount>${SKIPCOUNT}</cmis:skipCount>
<cmis:pageSize>${PAGESIZE}</cmis:pageSize>
<cmis:maxItems>${MAXITEMS}</cmis:maxItems>
</cmis:query>