blob: 83a52d40098fa341d1b05ef014b776e69b0cb744 [file] [log] [blame]
CMIS server implementation on top of JCR
========================================
Getting started
---------------
To get a running instance on top of a transient JCR repository
(Apache Jackrabbit) use the develop profile:
mvn -o -Dlog4j.configuration=file:./log4j.config -Pdevelop jetty:run
This builds the web application with Apache Jackrabbit included and deploys it into
Jetty. The JCR repository is now available via CMIS at
http://localhost:8080/chemistry-opencmis-server-jcr/atom
Use admin/admin to log in.
Features and limitations
------------------------
General:
- Mapping is implemented as follows: JCR node type nt:file with JCR mixin mix:simpleVersionable
is mapped to CMIS object type cmis:document. JCR node type nt:file without JCR mixin
mix:simpleVersionable is mapped to CMIS object type cmis:unversioned-document. All other JCR
node types are mapped to CMIS object type cmis:folder.
Versioning:
- Each version of a CMIS document corresponds to a version in JCR
- A private working copy in CMIS corresponds to the actual node in JCR
- CMIS checkout/in are mapped to JCR checkout/in respectively
- CMIS cancelCheckout is mapped to a restore operation of the base version in JCR.
This has the side effect of creating a new version when canceling a checkout.
- checkin comment is not supported
- All versions are major
- The JCR version name is mapped to the CMIS version label as follows:
if the JCR version name matches (\d+)(\.(\d+))?.* the value of the third group
is appended with ".0" and then used for the CMIS version label. Otherwise the JCR
version name is used for the CMIS version label.
- Deleting of single versions is not supported
Query:
- CMIS IN_TREE and CMIS IN_FOLDER predicates must not occur more than once in the
WHERE clause.
- CMIS IN_TREE and CMIS IN_FOLDER predicates may only occur in affirmative position
in the WHERE clause. A literal 'p' in a boolean expression 'X'is affirmative if
there exists a boolean expression 'Y' such that 'p' AND Y = X'.
- <>, <, > comparison operators are not allowed on cmis:name
- CRX's Lucene index has some latency until it is up to date. This can cause queries
to miss documents right after creating them.
- CMIS IN and CMIS ANY operators are not supported.
- The following columns are not supported in queries: cmis:baseTypeId,
cmis:changeToken
- The following columns are not supported in queries for cmis:document and
cmis:unversioned-document: cmis:isImmutable, cmis:isLatestVersion, cmis:isMajorVersion,
cmis:isLatestMajorVersion, cmis:versionLabel, cmis:versionSeriesId,
cmis:isVersionSeriesCheckedOut, cmis:versionSeriesCheckedOutId,
cmis:versionSeriesCheckedOutBy, cmis:checkinComment, cmis:contentStreamLength,
cmis:contentStreamId