diff --git a/source/java/org/alfresco/opencmis/CMISConnector.java b/source/java/org/alfresco/opencmis/CMISConnector.java index b89e88b968..cd4e9dc315 100644 --- a/source/java/org/alfresco/opencmis/CMISConnector.java +++ b/source/java/org/alfresco/opencmis/CMISConnector.java @@ -3336,7 +3336,9 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen { 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); } else diff --git a/source/test-java/org/alfresco/opencmis/CMISTest.java b/source/test-java/org/alfresco/opencmis/CMISTest.java index c353afbc74..a5a28f4e15 100644 --- a/source/test-java/org/alfresco/opencmis/CMISTest.java +++ b/source/test-java/org/alfresco/opencmis/CMISTest.java @@ -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.ObjectInFolderData; 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.PropertyData; import org.apache.chemistry.opencmis.commons.data.RepositoryInfo; @@ -93,6 +94,8 @@ public class CMISTest private ActionService actionService; private RuleService ruleService; + private CMISConnector cmisConnector; + /** * Test class to provide the service factory * @@ -222,6 +225,7 @@ public class CMISTest this.lockService = (LockService) ctx.getBean("lockService"); this.repositoryHelper = (Repository)ctx.getBean("repositoryHelper"); this.factory = (AlfrescoCmisServiceFactory)ctx.getBean("CMISServiceFactory"); + this.cmisConnector = (CMISConnector) ctx.getBean("CMISConnector"); this.context = new SimpleCallContext("admin", "admin"); } @@ -1124,4 +1128,19 @@ public class CMISTest 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 changeLogToken = new Holder(); + ObjectList ol = this.cmisConnector.getContentChanges(changeLogToken, new BigInteger("2")); + assertEquals(2, ol.getNumItems()); + assertEquals("3", changeLogToken.getValue()); + } }