chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Müller (JIRA) <>
Subject [jira] [Commented] (CMIS-871) Client API Atompub binding - getContentChanges still sends change log token even though I specify null for the changeLogToken parameter
Date Thu, 20 Nov 2014 18:10:33 GMT


Florian Müller commented on CMIS-871:

Re 1. The AtomPub binding doesn't send a changeLogToken. Where should it come from?
This is a generated URL: {{http://localhost:8080/inmemory/atom11/A1/changes?includeProperties=false&includePolicyIds=false&includeACL=false&maxItems=2147483647}}
The session.getContentChanges(null, false) method emulates paging. That is, if the first page
contained a next link (with a changeLogToken), it will call this link to get the second page.
This second call must have a changeLogToken, otherwise paging wouldn't work. But that's the
same for the Web Services and the Browser binding. 

Re 2. maxItems only defines number of items that must not be exceeded by the server. It doesn't
force the server to send that many items. It's totally fine to only return, let's say, 1000
items and indicate that there is a next page that the client can fetch.
The whole point of this getContentChanges() method is to eventually read the complete change
log. Using large pages minimizes the number of calls.
The session interface provides other getContentChanges() methods to only get the tip or an
excerpt of the change log. 

> Client API Atompub binding - getContentChanges still sends change log token even though
I specify null for the changeLogToken parameter
> ---------------------------------------------------------------------------------------------------------------------------------------
>                 Key: CMIS-871
>                 URL:
>             Project: Chemistry
>          Issue Type: Bug
>          Components: opencmis-client
>    Affects Versions: OpenCMIS 0.12.0
>         Environment: Windows 64 bits
>            Reporter: Vincent Tang
>              Labels: getContentChanges
> I found 2 OpenCMIS Client API problems in my test to use OpenCMIS Client API Session.getContentChanges(String
changeLogToken, boolean includeProperties). 
> The test is calling it like session.getContentChanges(null, false); You see I set null
to changeLogToken. Based on my understanding of CMIS specification, I assume that the API
would not include a change log token in the request.
> The problems I found are
> 1. OpenCMIS API send a changeLogToken anyway in Atompub binding but null in Web services
binding. The latter is compliant with CMIS specification but the former is not. I think the
OpenCMIS API in Atompub binding has a bug.
> 2. This API sends a default maxItems in request because our test doesn't specify one.
However OpenCMIS API sends an unreasonable maxItem 2147483647. I think it is the maximum value
of a java integer. It causes different effect in Atompub and web services bindings.
>     In Atompub binding, because of the bug (a change log token is passed in), CMIS passed
the change log token and the maxItems in the query, the query returns the change events after
the change log token. Therefore the test cases passed.
>     In web services binding, the null value change log token and the maxItems will effectively
return the entire change log from the repository. It causes the query hang and eventually
timed out after 300 seconds.
> This JIRA is reporting the first problem. I am not sure if the second problem (maxItems
= 2147483647 by default) is a problem. Because CMIS specification doesn't say anything about
the default maxItems. We will do something at server side to prevent such a unreasonable maxItems
to be used in query.

This message was sent by Atlassian JIRA

View raw message