MODE-1500 MODE-1501 Added AS7 integration tests and fixed JNDI issues

Several issues were identified and corrected. The first was that although the ModeShape engine (e.g, the 'org.modeshape.jcr.api.Repositories' implementation) was registered in JNDI, the Repository instances were not correctly being registered and were thus not able to be found by deployed components. This was rectified, and now the engine and each repository is properly registered in JNDI.

Secondly, the JNDI names where the engine and repositories are registered were changed to more closely align with the naming patterns used by other implementations. The engine is always registered at "jcr" in the "java:" namespace (i.e, "java:/jcr"), while each repository is registered at "jcr/{repositoryName}" in the "java:" namespace. For example, the repository named "sample" could be found in JNDI at "java:/jcr/sample" or "jcr/sample". This conforms to the many examples that configure a JCR repository at "jcr/local" (where only one repository is used).

Note that the new default JNDI names are different than ModeShape 2.x, which used "jcr/local" as the location of the engine and "jcr/local/{repositoryName}" as the default location for each repository. However, should the old style still be needed for a repository, the repository can be configured with a custom JNDI name.

Thirdly, when a repository is configured to have a custom JNDI name, the repository is registered under the specified name (as before), but now the repository is still registered under the 'jcr/{repositoryName}' name. This means that code can find the repository under either name.

Fourthly, the assembly for the ModeShape kit was moved from the 'deploy/jbossas' Maven module (which installed the resulting ZIP into the Maven repository at 'org/modeshape/jbossas/jbossas-{version}-jbossas-7-dist.zip') and into the "modeshape-distribution" module, which is where the binary and source distributions are assembled. And the assembly descriptor was moved to the "modeshape-assembly-descriptors" module (again, where the other assembly descriptors are managed and installed into the Maven repository).

Fifthly, new integration tests were written to verify that EJBs (of various flavors) can find the ModeShape repositories correctly using the 4 different ways of looking up a repository:

1. looking up a repository in JNDI
1. looking up the Repositories interface and using it to get a named repository
1. using RepositoryFactory with a single URL (e.g., "jndi:jcr/sample" or "jndi:jcr?repositoryName=sample")
1. using RepositoryFactory with a URL to the engine (e.g, "jndi:jcr") and the name of the repository

These new integration tests are in a new Maven module that downloads AS7 and the ModeShape kit from the Maven repository and unpacks them into the 'target' directory. When Surefire runs, this managed server is started, the Arquillian tests are run, and then the server is shutdown. Each Arquillian test involves creating a WAR file that will be deployed by Arquillian to the running server, running the unit tests, and then undeploying the WAR file. The tests can also be run with a different profile so that the tests are deployed and executed in a separate server installation (as specified by the $JBOSS_HOME variable).

Finally, the older "modeshape-integration-tests" module and the new "modeshape-jbossas-integration-tests" were relocated to a new top-level folder called 'integration' in the source code. Like the other top-level directories in our codebase, this is also a Maven module that can be used to run all of the integration tests. And the '-Pintegration' profile was brought back so that the distributions are not created and the integration tests not run during the normal builds. Thus, to run a normal developer build (with all the unit tests but none of the integration tests) simply use

    mvn clean install

while the following command will build everything, run all the unit tests, build the AS7 assembly, and run the integration tests:

    mvn clean install -Pintegration

As before, running an 'assembly' build (used for releases) will build everything, run all the unit tests, build the AS7, binary, and source assemblies (including JavaDoc), run the integration tests, and run the demos:

    mvn clean install -Passembly