1
votes

What is the best Java client library, that implements the standard JCR API, that can access a CMIS repository. I have a program that talks to JCR, and I would like to make it use a CMIS repository.

Some unsubstantiated claims say that Apache Chemistry can do this. However, I can't find any clear documentation of this. There is copious documentation about how Chemistry will allow you to use CMIS to access a JCR repository.

Apache Chemistry offers a client library for accessing CMIS repositories, but this appears to be a non-standard API to do so -- the class and methods names mention CMIS directly. There is no mention that this client library is JCR compliant.

If you are writing a program that can plug in different repositories, it makes sense to write to use JCR. This excellent article explains how they are compatible. So, what is the best Java LIB that allows me to write a program to JCR in order to access a CMIS repository? (Or is there some reason that this is nonsense?)

1
Great question! You are right, "OpenCMIS JCR Repository" only does the opposite. Like Randall I thought immediately about ModeShape, but that's overkill indeed... but I don't know any better library as of now.Nicolas Raoul
I think JCR is dead, actually. I am probably going to go with the Apache unique API for CMIS, and forget about JCR.AgilePro

1 Answers

0
votes

ModeShape implements the JCR 2.0 API, and has a feature called federation that allows it to include the content from external systems into an area of the ModeShape repository. ModeShape's connectors translate the external system into nodes and properties. All of this is transparent to client applications, which see just like one JCR repository with nodes and properties - some of those nodes just happen to be owned by ModeShape, while other content happens to be owned by external systems. (Clients actually cannot directly tell the difference between a node owned by ModeShape and one that is a projection of data in an external system. Of course, the external content might have different node types, making it possible for a client to infer what is external versus internal.)

ModeShape 3.2 includes a CMIS connector that supports read and write. However, it's pretty new and may not have all of the features you're looking for. Plus, ModeShape always has at least some of its own content (e.g., the "jcr:system" area), though it's pretty easy to store that on the local file system, in a database, or even in a data grid.