Changed versions in POMs to '2.6-SNAPSHOT'
MODE-1198 Copyright and License header still refers to JBoss DNA

- Replaced the copyright headers to reflect the project name ModeShape
MODE-1199: Fixed tag name
MODE-1193 - Changed logging to support JDK Logger as the default when log4j binding is not available
MODE-1193 Changed logger to support JDK logger when log4j is not available
MODE-1193 - fix formatting issues
MODE-1201 Using InMemoryBinary when writing to a repository can cause heap/memory problems writing large files

Attached a very crude patch that creates a new kind of Binary implementation that will lazily wrap a FileInputStream to avoid trying to load it into memory and a test case that duplicates the issue.  The patch has some problems.  It is hacked into JcrValueFactory, it violates the immutability contract that Binary implementations are supposed to implement, and it only works for FileInputStreams.  The last issue may not be a real problem, as I can't think of another InputStream at this moment that wouldn't also be subject to heapsize limitations.

Nonetheless, it works around this issue, and this issue is going to pretty important for ModeShape when it's used as an enterprise repository's backing store.
MODE-1201 Minor changes to a test case to clean up files when finished
MODE-1203 Support Node Caching in Connectors

The attached patch generalizes the earlier work towards a cache for the disk-based connector into a generic cache framework that can be used for the DiskSource, FileSystemSource, JdbcMetadataSource, and the SvnRepositorySource.  The InMemoryRepositorySource, InfinispanSource, and JBossCacheSource were not modified because they already store data in-memory and aren't likely to benefit from a node cache.  The JpaSource was not modified because it still uses the old map connector framework.  A decision should be made on whether to port that source forward into the new connector framework before caching is added.

A working cache implementation, InMemoryNodeCache is provided along with two working cache policies: InMemoryNodeCache$MapCachePolicy and InMemoryNodeCache$PathCachePolicy.  Connectors can use this cache by setting the nodeCachePolicy property on the connector to the classname of one of these implementations and setting the timeToLive property on the _cachePolicy_ (not on the source itself) to the length of time in seconds that nodes should remain in the cache.  Nodes are added to the cache on reads and writes.  Cache configurations have been added to the Reference Guide for each of the affected connectors.

IMPORTANT: THE CACHE POLICY MUST CORRESPOND TO THE CONNECTOR TYPE.  That is, path connectors must use a cache policy that creates caches that implement PathNodeCache, and map connectors must use a cache policy that creates caches that implement NodeCache.

All tests pass.
MODE-1206 Add Ability to Specify Temporary Storage Area on File System Connector

Added a new property, temporaryStoragePath, to FileSystemSource and then modified FileSystemWorkspace.putNode to use this directory instead of just creating a pending file.  All tests pass.
MODE-1181 Add Benchmark to track connector performance over time

Added simple framework for benchmark testing of connectors. The benchmark runs a series of tests against
all of the connectors configured within a single ModeShapeEngine, and then generates an HTML report
with a graph for each test showing the performance of each connector.
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)

The build worked fine.
MODE-1209 Add Support for Hibernate 2nd Level Cache to JPA Connector

Hard-coding a 2LC provider is really easy.  Making it usable is really hard, as Hibernate requires one to provide a CacheConcurrencyStrategy (e.g., read-write, read-only, transactional) and not all cache providers support all strategies.  The CacheConcurrencyStrategy can either be provided in a Hibernate-specifc  annotation at compile-time or in persistence.xml - a much more JPA-friendly mechanism.

Ergo, the attached patch adds the use of a persistence.xml file to help control mappings and Hibernate cache settings for the first time.  That, in turn, required that we use a more JPA-standard way of building an EntityManagerFactory, which required moving a lot of code, but was pretty straightforward.

The idea is that we can now specify a number of different pre-defined cache configurations in our persistence.xml and allow users to pick one by modifying the new jpaPersistenceUnitName property on the JpaSource.  Users can now also override or extend our default configurations by providing their own persistence.xml in their own JAR.

In doing this, I extracted all of the Hibernate-specific code into an implementation of a new interface, JpaAdapter.  This brings us surprisingly close to being able to support other JPA providers with our JPA connector, but we're still using Hibernate-specific annotations to define indexes, and we have to have those indexes.

Feedback on this approach would be greatly appreciated.  If the approach is considered viable, all that remains is to predefine some cache configurations and update the documentation accordingly.
MODE-1193, MODE-1203 Corrected compiler warnings
MODE-1209 Add Support for Hibernate 2nd Level Cache to JPA Connector

Updated patch to include default persistence configurations for no cache, the simple Hibernate cache, EHCache, and an Infinispan cache.  All configurations are fully documented in the Reference Guide.
MODE-1209 Add Support for Hibernate 2nd Level Cache to JPA Connector

Hard-coding a 2LC provider is really easy.  Making it usable is really hard, as Hibernate requires one to provide a CacheConcurrencyStrategy (e.g., read-write, read-only, transactional) and not all cache providers support all strategies.  The CacheConcurrencyStrategy can either be provided in a Hibernate-specifc  annotation at compile-time or in persistence.xml - a much more JPA-friendly mechanism.

Ergo, the attached patch adds the use of a persistence.xml file to help control mappings and Hibernate cache settings for the first time.  That, in turn, required that we use a more JPA-standard way of building an EntityManagerFactory, which required moving a lot of code, but was pretty straightforward.

The idea is that we can now specify a number of different pre-defined cache configurations in our persistence.xml and allow users to pick one by modifying the new jpaPersistenceUnitName property on the JpaSource.  Users can now also override or extend our default configurations by providing their own persistence.xml in their own JAR.

In doing this, I extracted all of the Hibernate-specific code into an implementation of a new interface, JpaAdapter.  This brings us surprisingly close to being able to support other JPA providers with our JPA connector, but we're still using Hibernate-specific annotations to define indexes, and we have to have those indexes.

Feedback on this approach would be greatly appreciated.  If the approach is considered viable, all that remains is to predefine some cache configurations and update the documentation accordingly.
MODE-1209 Add Support for Hibernate 2nd Level Cache to JPA Connector

Updated patch to include default persistence configurations for no cache, the simple Hibernate cache, EHCache, and an Infinispan cache.  All configurations are fully documented in the Reference Guide.
MODE-1209 Added JPA caching to the benchmark config

Changed the connector benchmark ModeShape configuration to have 4 variations of the
JPA connector and 2nd-level caching: without, with Ehcache, with Infinispan cache, and
with simple cache. They are still commented out (since they take quite a while to run).
MODE-1209 Add Support for Hibernate 2nd Level Cache to JPA Connector

Fixed bug in handling of data source property.
Merge branch 'master' into MODE-1209