Uploaded image for project: 'Chemistry (Retired)'
  1. Chemistry (Retired)
  2. CMIS-519

getContentChanges shows unexpected result after adding new entry to repository based on changeToken

    XMLWordPrintableJSON

Details

    Description

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            patman Patrick Balm
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: