ALF-19173 pagination in cmis change log feed broken

1. In CMISConnector#getContentChanges() was changed newChangeLogToken formation.
2. In CMISTest was added testGetContentChanges() test.



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@55173 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Pavel Yurke
2013-09-10 11:23:31 +00:00
parent da112f3a33
commit 57d00ec499
2 changed files with 22 additions and 1 deletions

View File

@@ -3336,7 +3336,9 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
{ {
if (result.getObjects().size() >= maxResults) if (result.getObjects().size() >= maxResults)
{ {
newChangeLogToken = result.getObjects().remove(result.getObjects().size() - 1).getId(); StringBuilder clt = new StringBuilder();
newChangeLogToken = (from == null ? clt.append(maxItems.intValue() + 1).toString() : clt.append(from.longValue() + maxItems.intValue()).toString());
result.getObjects().remove(result.getObjects().size() - 1).getId();
result.setHasMoreItems(true); result.setHasMoreItems(true);
} }
else else

View File

@@ -45,6 +45,7 @@ import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
import org.apache.chemistry.opencmis.commons.data.ObjectData; import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.ObjectInFolderData; import org.apache.chemistry.opencmis.commons.data.ObjectInFolderData;
import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList; import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
import org.apache.chemistry.opencmis.commons.data.ObjectList;
import org.apache.chemistry.opencmis.commons.data.Properties; import org.apache.chemistry.opencmis.commons.data.Properties;
import org.apache.chemistry.opencmis.commons.data.PropertyData; import org.apache.chemistry.opencmis.commons.data.PropertyData;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo; import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
@@ -93,6 +94,8 @@ public class CMISTest
private ActionService actionService; private ActionService actionService;
private RuleService ruleService; private RuleService ruleService;
private CMISConnector cmisConnector;
/** /**
* Test class to provide the service factory * Test class to provide the service factory
* *
@@ -222,6 +225,7 @@ public class CMISTest
this.lockService = (LockService) ctx.getBean("lockService"); this.lockService = (LockService) ctx.getBean("lockService");
this.repositoryHelper = (Repository)ctx.getBean("repositoryHelper"); this.repositoryHelper = (Repository)ctx.getBean("repositoryHelper");
this.factory = (AlfrescoCmisServiceFactory)ctx.getBean("CMISServiceFactory"); this.factory = (AlfrescoCmisServiceFactory)ctx.getBean("CMISServiceFactory");
this.cmisConnector = (CMISConnector) ctx.getBean("CMISConnector");
this.context = new SimpleCallContext("admin", "admin"); this.context = new SimpleCallContext("admin", "admin");
} }
@@ -1124,4 +1128,19 @@ public class CMISTest
AuthenticationUtil.popAuthentication(); AuthenticationUtil.popAuthentication();
} }
} }
public void testGetContentChanges()
{
// create folder with file
String folderName = "testfolder" + GUID.generate();
String docName = "testdoc.txt" + GUID.generate();
createContent(folderName, docName, false);
folderName = "testfolder" + GUID.generate();
docName = "testdoc.txt" + GUID.generate();
createContent(folderName, docName, false);
Holder<String> changeLogToken = new Holder<String>();
ObjectList ol = this.cmisConnector.getContentChanges(changeLogToken, new BigInteger("2"));
assertEquals(2, ol.getNumItems());
assertEquals("3", changeLogToken.getValue());
}
} }