MODE-1289 New approach for storing/caching JCR content This is the first commit to start the 3.0 effort, which involves a major change to how the JCR layer stores and caches information. The new approach is based upon Infinispan and uses Infinispan's cache loaders for persistence, and JSON-like documents (that are in-memory structures not needing to parsed/written) are used to store information for each node.
There are several new Maven modules: - modeshape-jcr-redux - modeshape-schematic
The 'modeshape-jcr-redux' module will eventually replace the 'modeshape-jcr' module once the implementation is far-enough along. And the 'modeshape-schematic' module will likely move into the Infinispan project, so that needs to remain separate.
Although it may seem strange and unkempt to have the new JCR implementation in a new module, doing so means that we can continue to rebase from 'master' (and the 2.7 work) for at least some time. When the new module becomes complete enough, we'll move it and replace the existing 'modeshape-jcr' module. It's also convenient to have both the old and new implementations around in the same codebase.
The build was changed to focus upon the (few) modules that are oriented around the new implementation. So the following can be used to build the newer codebase:
mvn clean install
However, the build has a new Maven profile called "legacy" that can be used to build the old modules. We kept this to make sure that any rebasing can be compiled and verified. For example, to build everyhing, including the new modules and the 2.x-style modules, use the following command:
mvn clean install -Plegacy
As the newer 'modeshape-jcr-redux' progresses and other modules (e.g., sequencers, web, jboss, text extractors) are converted to use the new module, they should be moved from the 'legacy' profile into the main set of modules in the top-level 'pom.xml'