getContentChanges shows unexpected result after adding new entry to repository
based on changeToken
---------------------------------------------------------------------------------------------------
Key: CMIS-519
URL: https://issues.apache.org/jira/browse/CMIS-519
Project: Chemistry
Issue Type: Bug
Components: opencmis-server-inmemory, opencmis-workbench
Affects Versions: OpenCMIS 0.7.0
Environment: dev-trunk (local machine)
http://localhost:8080/chemistry-opencmis-server-inmemory-0.7.0-SNAPSHOT/services/RepositoryService
snapshot local build on 29-Mar-2012
Reporter: Patrick Balm
I am working on a mechanism to replay/record the changes (changeLog) in the
repository based on getContentChanges
but the result I expect is different than what is returned.
Is it me, am I going about it the wrong way?
Or is it a bug?
TEST LOG:
OpenCMIS In-Memory (0.7.0-SNAPSHOT trunk (from yesterday;29-03-2012)
Testing with 0.6.0 Workbench
------------------
******************************************
1. cleared repository
removed all entries
******************************************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
<soapenv:Header/>
<soapenv:Body>
<ns:getContentChanges>
<ns:repositoryId>A1</ns:repositoryId>
</ns:getContentChanges>
</soapenv:Body>
</soapenv:Envelope>
response
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Timestamp
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<Created>2012-03-30T12:08:23Z</Created>
<Expires>2012-03-31T12:08:23Z</Expires>
</Timestamp>
</Security>
</S:Header>
<S:Body>
<getContentChangesResponse
xmlns="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
xmlns:ns2="http://docs.oasis-open.org/ns/cmis/core/200908/">
<objects>
<hasMoreItems>false</hasMoreItems>
<numItems>0</numItems>
</objects>
</getContentChangesResponse>
</S:Body>
</S:Envelope>
******************************************
2. add first document (via Workbench) to repository and ask for changes
******************************************
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
<soapenv:Header/>
<soapenv:Body>
<ns:getContentChanges>
<ns:repositoryId>A1</ns:repositoryId>
</ns:getContentChanges>
</soapenv:Body>
</soapenv:Envelope>
response:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Timestamp
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<Created>2012-03-30T12:11:27Z</Created>
<Expires>2012-03-31T12:11:27Z</Expires>
</Timestamp>
</Security>
</S:Header>
<S:Body>
<getContentChangesResponse
xmlns="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
xmlns:ns2="http://docs.oasis-open.org/ns/cmis/core/200908/">
<objects>
<objects>
<ns2:properties>
<ns2:propertyBoolean queryName="cmis:isLatestMajorVersion"
displayName="Is Latest Major Version" localName="cmis:isLatestMajorVersion"
propertyDefinitionId="cmis:isLatestMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:contentStreamId"
displayName="Stream Id" localName="cmis:contentStreamId"
propertyDefinitionId="cmis:contentStreamId"/>
<ns2:propertyInteger queryName="cmis:contentStreamLength"
displayName="Content Length" localName="cmis:contentStreamLength"
propertyDefinitionId="cmis:contentStreamLength">
<ns2:value>1733920</ns2:value>
</ns2:propertyInteger>
<ns2:propertyString
queryName="cmis:versionSeriesCheckedOutBy" displayName="Checked Out By"
localName="cmis:versionSeriesCheckedOutBy"
propertyDefinitionId="cmis:versionSeriesCheckedOutBy"/>
<ns2:propertyId queryName="cmis:objectTypeId"
displayName="Type-Id" localName="cmis:objectTypeId"
propertyDefinitionId="cmis:objectTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyId queryName="cmis:versionSeriesCheckedOutId"
displayName="Checked Out Id" localName="cmis:versionSeriesCheckedOutId"
propertyDefinitionId="cmis:versionSeriesCheckedOutId"/>
<ns2:propertyString queryName="cmis:name" displayName="Name"
localName="cmis:name" propertyDefinitionId="cmis:name">
<ns2:value>3jr-jamie.jpg</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:contentStreamMimeType"
displayName="Mime Type" localName="cmis:contentStreamMimeType"
propertyDefinitionId="cmis:contentStreamMimeType">
<ns2:value>image/jpeg</ns2:value>
</ns2:propertyString>
<ns2:propertyId queryName="cmis:versionSeriesId"
displayName="Version Series Id" localName="cmis:versionSeriesId"
propertyDefinitionId="cmis:versionSeriesId"/>
<ns2:propertyDateTime queryName="cmis:creationDate"
displayName="Creation Date" localName="cmis:creationDate"
propertyDefinitionId="cmis:creationDate">
<ns2:value>2012-03-30T12:11:02.175Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:changeToken"
displayName="Change Token" localName="cmis:changeToken"
propertyDefinitionId="cmis:changeToken">
<ns2:value>1333109462175</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:versionLabel"
displayName="Version Label" localName="cmis:versionLabel"
propertyDefinitionId="cmis:versionLabel"/>
<ns2:propertyBoolean queryName="cmis:isLatestVersion"
displayName="Is Latest Version" localName="cmis:isLatestVersion"
propertyDefinitionId="cmis:isLatestVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean
queryName="cmis:isVersionSeriesCheckedOut" displayName="Checked Out"
localName="cmis:isVersionSeriesCheckedOut"
propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:lastModifiedBy"
displayName="Modified By" localName="cmis:lastModifiedBy"
propertyDefinitionId="cmis:lastModifiedBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:createdBy"
displayName="Created By" localName="cmis:createdBy"
propertyDefinitionId="cmis:createdBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:checkinComment"
displayName="Checkin Comment" localName="cmis:checkinComment"
propertyDefinitionId="cmis:checkinComment"/>
<ns2:propertyId queryName="cmis:objectId" displayName="Object
Id" localName="cmis:objectId" propertyDefinitionId="cmis:objectId">
<ns2:value>136</ns2:value>
</ns2:propertyId>
<ns2:propertyBoolean queryName="cmis:isMajorVersion"
displayName="Is Major Version" localName="cmis:isMajorVersion"
propertyDefinitionId="cmis:isMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean queryName="cmis:isImmutable"
displayName="Immutable" localName="cmis:isImmutable"
propertyDefinitionId="cmis:isImmutable">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyId queryName="cmis:baseTypeId"
displayName="Base-Type-Id" localName="cmis:baseTypeId"
propertyDefinitionId="cmis:baseTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyDateTime queryName="cmis:lastModificationDate"
displayName="Modification Date" localName="cmis:lastModificationDate"
propertyDefinitionId="cmis:lastModificationDate">
<ns2:value>2012-03-30T12:11:02.175Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:contentStreamFileName"
displayName="File Name" localName="cmis:contentStreamFileName"
propertyDefinitionId="cmis:contentStreamFileName">
<ns2:value>3jr-jamie.jpg</ns2:value>
</ns2:propertyString>
</ns2:properties>
<ns2:changeEventInfo>
<ns2:changeType>updated</ns2:changeType>
<ns2:changeTime>2012-03-30T14:11:27.869+02:00</ns2:changeTime>
</ns2:changeEventInfo>
</objects>
<hasMoreItems>false</hasMoreItems>
<numItems>1</numItems>
</objects>
</getContentChangesResponse>
</S:Body>
</S:Envelope>
******************************************
3. Appears to be what I expected
now I have added second document via Workbench
******************************************
now query for changeToken=1333109462175 (taken from 1st entry)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
<soapenv:Header/>
<soapenv:Body>
<ns:getContentChanges>
<ns:repositoryId>A1</ns:repositoryId>
<ns:changeToken>1333109462175</ns:changeToken>
</ns:getContentChanges>
</soapenv:Body>
</soapenv:Envelope>
response:
I receive both entries instead of expected single entry with
changeToken=1333109462175
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<Security
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Timestamp
xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<Created>2012-03-30T12:16:35Z</Created>
<Expires>2012-03-31T12:16:35Z</Expires>
</Timestamp>
</Security>
</S:Header>
<S:Body>
<getContentChangesResponse
xmlns="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
xmlns:ns2="http://docs.oasis-open.org/ns/cmis/core/200908/">
<objects>
<objects>
<ns2:properties>
<ns2:propertyBoolean queryName="cmis:isLatestMajorVersion"
displayName="Is Latest Major Version" localName="cmis:isLatestMajorVersion"
propertyDefinitionId="cmis:isLatestMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:contentStreamId"
displayName="Stream Id" localName="cmis:contentStreamId"
propertyDefinitionId="cmis:contentStreamId"/>
<ns2:propertyInteger queryName="cmis:contentStreamLength"
displayName="Content Length" localName="cmis:contentStreamLength"
propertyDefinitionId="cmis:contentStreamLength">
<ns2:value>1733920</ns2:value>
</ns2:propertyInteger>
<ns2:propertyString
queryName="cmis:versionSeriesCheckedOutBy" displayName="Checked Out By"
localName="cmis:versionSeriesCheckedOutBy"
propertyDefinitionId="cmis:versionSeriesCheckedOutBy"/>
<ns2:propertyId queryName="cmis:objectTypeId"
displayName="Type-Id" localName="cmis:objectTypeId"
propertyDefinitionId="cmis:objectTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyId queryName="cmis:versionSeriesCheckedOutId"
displayName="Checked Out Id" localName="cmis:versionSeriesCheckedOutId"
propertyDefinitionId="cmis:versionSeriesCheckedOutId"/>
<ns2:propertyString queryName="cmis:name" displayName="Name"
localName="cmis:name" propertyDefinitionId="cmis:name">
<ns2:value>3jr-jamie.jpg</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:contentStreamMimeType"
displayName="Mime Type" localName="cmis:contentStreamMimeType"
propertyDefinitionId="cmis:contentStreamMimeType">
<ns2:value>image/jpeg</ns2:value>
</ns2:propertyString>
<ns2:propertyId queryName="cmis:versionSeriesId"
displayName="Version Series Id" localName="cmis:versionSeriesId"
propertyDefinitionId="cmis:versionSeriesId"/>
<ns2:propertyDateTime queryName="cmis:creationDate"
displayName="Creation Date" localName="cmis:creationDate"
propertyDefinitionId="cmis:creationDate">
<ns2:value>2012-03-30T12:11:02.175Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:changeToken"
displayName="Change Token" localName="cmis:changeToken"
propertyDefinitionId="cmis:changeToken">
<ns2:value>1333109462175</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:versionLabel"
displayName="Version Label" localName="cmis:versionLabel"
propertyDefinitionId="cmis:versionLabel"/>
<ns2:propertyBoolean queryName="cmis:isLatestVersion"
displayName="Is Latest Version" localName="cmis:isLatestVersion"
propertyDefinitionId="cmis:isLatestVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean
queryName="cmis:isVersionSeriesCheckedOut" displayName="Checked Out"
localName="cmis:isVersionSeriesCheckedOut"
propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:lastModifiedBy"
displayName="Modified By" localName="cmis:lastModifiedBy"
propertyDefinitionId="cmis:lastModifiedBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:createdBy"
displayName="Created By" localName="cmis:createdBy"
propertyDefinitionId="cmis:createdBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:checkinComment"
displayName="Checkin Comment" localName="cmis:checkinComment"
propertyDefinitionId="cmis:checkinComment"/>
<ns2:propertyId queryName="cmis:objectId" displayName="Object
Id" localName="cmis:objectId" propertyDefinitionId="cmis:objectId">
<ns2:value>136</ns2:value>
</ns2:propertyId>
<ns2:propertyBoolean queryName="cmis:isMajorVersion"
displayName="Is Major Version" localName="cmis:isMajorVersion"
propertyDefinitionId="cmis:isMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean queryName="cmis:isImmutable"
displayName="Immutable" localName="cmis:isImmutable"
propertyDefinitionId="cmis:isImmutable">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyId queryName="cmis:baseTypeId"
displayName="Base-Type-Id" localName="cmis:baseTypeId"
propertyDefinitionId="cmis:baseTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyDateTime queryName="cmis:lastModificationDate"
displayName="Modification Date" localName="cmis:lastModificationDate"
propertyDefinitionId="cmis:lastModificationDate">
<ns2:value>2012-03-30T12:11:02.175Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:contentStreamFileName"
displayName="File Name" localName="cmis:contentStreamFileName"
propertyDefinitionId="cmis:contentStreamFileName">
<ns2:value>3jr-jamie.jpg</ns2:value>
</ns2:propertyString>
</ns2:properties>
<ns2:changeEventInfo>
<ns2:changeType>updated</ns2:changeType>
<ns2:changeTime>2012-03-30T14:16:35.129+02:00</ns2:changeTime>
</ns2:changeEventInfo>
</objects>
<objects>
<ns2:properties>
<ns2:propertyBoolean queryName="cmis:isLatestMajorVersion"
displayName="Is Latest Major Version" localName="cmis:isLatestMajorVersion"
propertyDefinitionId="cmis:isLatestMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:contentStreamId"
displayName="Stream Id" localName="cmis:contentStreamId"
propertyDefinitionId="cmis:contentStreamId"/>
<ns2:propertyInteger queryName="cmis:contentStreamLength"
displayName="Content Length" localName="cmis:contentStreamLength"
propertyDefinitionId="cmis:contentStreamLength">
<ns2:value>31378</ns2:value>
</ns2:propertyInteger>
<ns2:propertyString
queryName="cmis:versionSeriesCheckedOutBy" displayName="Checked Out By"
localName="cmis:versionSeriesCheckedOutBy"
propertyDefinitionId="cmis:versionSeriesCheckedOutBy"/>
<ns2:propertyId queryName="cmis:objectTypeId"
displayName="Type-Id" localName="cmis:objectTypeId"
propertyDefinitionId="cmis:objectTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyId queryName="cmis:versionSeriesCheckedOutId"
displayName="Checked Out Id" localName="cmis:versionSeriesCheckedOutId"
propertyDefinitionId="cmis:versionSeriesCheckedOutId"/>
<ns2:propertyString queryName="cmis:name" displayName="Name"
localName="cmis:name" propertyDefinitionId="cmis:name">
<ns2:value>jboss-securejmx.pdf</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:contentStreamMimeType"
displayName="Mime Type" localName="cmis:contentStreamMimeType"
propertyDefinitionId="cmis:contentStreamMimeType">
<ns2:value>application/pdf</ns2:value>
</ns2:propertyString>
<ns2:propertyId queryName="cmis:versionSeriesId"
displayName="Version Series Id" localName="cmis:versionSeriesId"
propertyDefinitionId="cmis:versionSeriesId"/>
<ns2:propertyDateTime queryName="cmis:creationDate"
displayName="Creation Date" localName="cmis:creationDate"
propertyDefinitionId="cmis:creationDate">
<ns2:value>2012-03-30T12:14:26.669Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:changeToken"
displayName="Change Token" localName="cmis:changeToken"
propertyDefinitionId="cmis:changeToken">
<ns2:value>1333109666669</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:versionLabel"
displayName="Version Label" localName="cmis:versionLabel"
propertyDefinitionId="cmis:versionLabel"/>
<ns2:propertyBoolean queryName="cmis:isLatestVersion"
displayName="Is Latest Version" localName="cmis:isLatestVersion"
propertyDefinitionId="cmis:isLatestVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean
queryName="cmis:isVersionSeriesCheckedOut" displayName="Checked Out"
localName="cmis:isVersionSeriesCheckedOut"
propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyString queryName="cmis:lastModifiedBy"
displayName="Modified By" localName="cmis:lastModifiedBy"
propertyDefinitionId="cmis:lastModifiedBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:createdBy"
displayName="Created By" localName="cmis:createdBy"
propertyDefinitionId="cmis:createdBy">
<ns2:value>unknown</ns2:value>
</ns2:propertyString>
<ns2:propertyString queryName="cmis:checkinComment"
displayName="Checkin Comment" localName="cmis:checkinComment"
propertyDefinitionId="cmis:checkinComment"/>
<ns2:propertyId queryName="cmis:objectId" displayName="Object
Id" localName="cmis:objectId" propertyDefinitionId="cmis:objectId">
<ns2:value>137</ns2:value>
</ns2:propertyId>
<ns2:propertyBoolean queryName="cmis:isMajorVersion"
displayName="Is Major Version" localName="cmis:isMajorVersion"
propertyDefinitionId="cmis:isMajorVersion">
<ns2:value>true</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyBoolean queryName="cmis:isImmutable"
displayName="Immutable" localName="cmis:isImmutable"
propertyDefinitionId="cmis:isImmutable">
<ns2:value>false</ns2:value>
</ns2:propertyBoolean>
<ns2:propertyId queryName="cmis:baseTypeId"
displayName="Base-Type-Id" localName="cmis:baseTypeId"
propertyDefinitionId="cmis:baseTypeId">
<ns2:value>cmis:document</ns2:value>
</ns2:propertyId>
<ns2:propertyDateTime queryName="cmis:lastModificationDate"
displayName="Modification Date" localName="cmis:lastModificationDate"
propertyDefinitionId="cmis:lastModificationDate">
<ns2:value>2012-03-30T12:14:26.669Z</ns2:value>
</ns2:propertyDateTime>
<ns2:propertyString queryName="cmis:contentStreamFileName"
displayName="File Name" localName="cmis:contentStreamFileName"
propertyDefinitionId="cmis:contentStreamFileName">
<ns2:value>jboss-securejmx.pdf</ns2:value>
</ns2:propertyString>
</ns2:properties>
<ns2:changeEventInfo>
<ns2:changeType>updated</ns2:changeType>
<ns2:changeTime>2012-03-30T14:16:35.129+02:00</ns2:changeTime>
</ns2:changeEventInfo>
</objects>
<hasMoreItems>false</hasMoreItems>
<numItems>2</numItems>
</objects>
</getContentChangesResponse>
</S:Body>
</S:Envelope>
Is this what should be expected and am I looking at it from a wrong/different
standpoint?
Or can it be a bug?
TIA
/patrick
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira