chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sascha Homeier <shome...@apollon.de>
Subject Re: [OpenCmis] About behaviour of getContentChanges with null token parameter
Date Fri, 06 Mar 2015 13:19:02 GMT
2)
I am a bit irritated about client library behaviour when getting latestChangeLogToken from
ChangeEvent:

It seems to always return the token which is passed as argument of method ‚getContentChanges‘.
A look inside SessionImpl class confirmed that the token parameter is passed through to create
ChangeEventsImpl.

Shouldn’t the latestChangeLogToken be the one at the end of the changeEvents List retrieved
from server?

Due to spec the token which is passed as parameter should be the FIRST result in the output.
So the first change event in list should correspond to this token.
And the latestChangeLogToken should be „The change log token corresponding to the LAST change
event in changeEvents.“

Do I miss sth. here?
(Don’t want to immediately create a bug ticket because I think its more probably that I
misunderstood sth.)

tia

Cheers
Sascha



Am 06.03.2015 um 12:23 schrieb Sascha Homeier <shomeier@apollon.de<mailto:shomeier@apollon.de>>:

Hello together,

I am currently implementing the ChangeLog functionality on server side and have a question
concerning the spec conformant behavior of Discovery Service „getContentChanges“:

Due to get the very first change event the CMIS spec 1.1 says I need to pass a null changeLogToken
parameter:


 *   String changeLogToken: If specified, then the repository MUST return the change event
corresponding to the value of the specified change log token as the first result in the
output.

If not specified, then the repository MUST return the first change event recorded in the
change log.

So did I understand it correctly that at server side I should only pass ONE change event which
must be the very first event (either from beginning if ChangeLog capability provides complete
log or otherwise from the point in time when changes were recorded)?

So if I am on the right track I think to get ALL change events from beginning of the ChangeLog
on client-side I should first ask for the first change event with token parameter null and
then ask for the events since that token.
So client-code should look like that imho:

// get very first change event
ItemIterable<ChangeEvent> contentChanges = cmisSession.getContentChanges(null, includeProperties);
ChangeEvent veryFirstChangeEvent = contentChanges.iterator().next();

// get change log token of very first event and ask for the first page of change events on
going-forward basis
CmisObject veryFirstCmisObject = cmisSession.getObject(veryFirstChangeEvent.getObjectId());
ChangeEvents allContentChangesFirstPage = cmisSession.getContentChanges(veryFirstCmisObject.getChangeToken(),
includeProperties, maxItems);

It would be nice if someone could just confirm if this is the intended and spec compliant
repository behaviour.
I am not fully sure if the server reply for a null token parameter should really only be ONE
change event (the very first) or ALL change events beginning with the very first.


thx in advance.

Cheers
Sascha

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message