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'
MODE-1197 Removed JBoss Maven repository settings from our POM Having a "repositories" and "pluginRepositories" sections in our parent POM makes it very difficult (if not impossible) to host the ModeShape artifacts in any other repository, including the Maven central repository.
This change removes those sections from the parent POM and places them in a new "settings.xml" file. This means that developers that don't want to change their "~/.m2/settings.xml" file can simply add the "-s settings.xml" argument to all Maven commands. For details on how to configure Maven, see the http://community.jboss.org/docs/DOC-16545 wiki page.
The following procedure was used to test these changes: removed the 'repositories' and 'pluginRepositories' sections from our parent POM; 1. renamed my '~/.m2/settings.xml' file and '~/.m2/repositories' directory so they wouldn't be used; 2. added to the root of our codebase a 'settings.xml' file that specified the JBoss Maven repository in the 'repositories' and 'pluginRepositories' sections; and 3. ran 'mvn -Passembly clean install -s settings.xml' to successfully build all artifacts (except JavaDoc and assemblies), downloading everything Maven needed (i.e., the whole internet)