I have mounted a CMIS compliant repository NemakiWare(https://github.com/NemakiWare/NemakiWare), which I have developed, and tried to mount it to Liferay.
I succeeded in mounting, traverse all the file hierarchy and maybe retrieving metadata of a document and even creating a new document file which can be downloaded in my client application. But downloading a file from within Liferay has failed.
On my CMIS server part, getObject method is called with the vesionSeriesId of the document as the objectId argument. This of course ends up in throwing a CmisObjectNotFound exception, for in my repository versionSeriesId is always different from any objectId.
On Liferay part, as far as I've been digging into this issue, I found the following code:
String versionSeriesId = toFileEntryId(fileEntryId);
Document document = (Document)session.getObject(versionSeriesId);
So the getObject method itself is called correctly from Liferay.
Why does Liferay send versionSeriesId as objectId?
I suupose that it's a bug in terms of CMIS specification.
According to CMIS specification, versionSeriesId has nothing to do with objectId, though a repository is just allowed to make them the same.