MODE-1150 Correct dependencies and documentation for SLF4J

Found some SLF4J dependencies that were still using the older version, plus the documentation
should have been updated.
MODE-1269 Methods to re-index workspace content are now public

The re-indexing methods were previously on JcrSession, which was a package-protected
class, and thus the re-indexing methods were not publicly accessible. This change
moves the methods to the org.modeshape.jcr.api.Workspace interface is ModeShape's
public API. Now there are synchronous and asynchronous methods to re-index the entire
workspace and to re-index a subgraph below some path to a maximum depth.

Additional tests were added to verify the methods work. All unit and integration
tests pass.
MODE-1270 Add support for setting Session's user ID based upon JAAS Subject in J2EE

The standard way to get the current JAAS Subject given the LoginContext or AccessController
works in standard Java but not in J2EE. Apparently this is a well-known issue. The recommended
approach for J2EE is to instead get the Subject via the JACC API.

This change adds an optional (e.g., "provided") dependency on the JACC API, changes
the JaasProvider implementation to accept an optional SubjectResolver implementation
that the provider will use to resolve the Subject should the standard JAAS technique
not work, and to change the JcrRepository implementation to give the JaasProvider
a new JaccSubjectResolver implementation (when the JACC API is available).

It is not really possible to test whether this technique works in our unit or integration
tests (as we don't deploy to a J2EE container). However, all existing unit and integration
tests do pass (meaning it doesn't break their functionality), and Kurt is verifying
that the JACC-style approach works within Guvnor and will (after this commit) verify
that these changes do indeed work within Guvnor (which uses Seam in JBoss AS).
MODE-1273 Added built-in authentication using Seam Security

Added a built-in authentication/authorization provider to be enabled if and only if the "org.jboss.seam.security.Identity" class is on the classpath. The provider works when no Credentials are passed in, and creates an authenticated session based upon the current Identity instance if that Identity instance is already logged in.

All unit and integration tests pass with these changes, although none of our tests actually run with Seam Security. Therefore, additional testing will have to be done with system-level tests.
MODE-1267 Correct setting property to Value containing null

The JCR specification is not terribly clear on the behavior when null references are passed into the ValueFactory.create(…) methods. According to the JavaDoc, the spec, and the reference implementation, no error should be thrown. However, a ValueFormatException must be thrown when a non-null Value object (containing a null reference) is passed to Property.setValue(Value) or Property.setValues(Value[]) or Node.setProperty(String,Value) or Node.setProperty(String,Value[]). (Note that setting a property to a null Value reference is equivalent to removing the property.)

This change enables this behavior in ModeShape. Prior to this, ModeShape would allow setting a Value for a property even if that Value contained a null reference.
MODE-1273 Corrected Seam Security provider behavior

When the Seam Security API is available on the classpath, but it is not enabled for use
then the new provider was causing problems. A simple check fixes the problem.
MODE-1224 Improved restart performance

Added quite a few debug logging statements to help identify the issue with startup times. Also added two info-level log messages around the node registration activity.

Created a test case that uses a slightly-modified EDS configuration (different index location in 'target' area, HSQLDB stored on disk in 'target' area), and starts then restarts the engine.

I was able to see the problem, and I believe it is solely because of the re-registration of the node types listed in the configuration file. I then changed the registration process to allow a flag that will not re-register the node type if a node type already exists with the same name (there was already a flag to fail if the node type exists), and changed the startup to a) not fail but b) to skip the registration for any node type that already exists.

After implementing this change, restarting appears to be significantly faster. If fact, my tests show that the time to register the node types in subsequent restarts goes from minutes to ~0.02 seconds.

All unit and integration tests pass.
MODE-1224 Minor change to reduce wait times in a test
MODE-1263 Corrected indexing depth logic

The SearchEngineIndexer was doing math improperly. This doesn't appear to have affected any use cases except those that use the file system connector, since the file system connector uses its own maxDepth value (and ignores the value submitted by the indexer). It is in this case that the indexing stops one level too early.

Several new integration tests were created to verify the reported problems.

With a minor fix, the indexing operates correctly, and the new integration tests do indeed pass and demonstrate that the indexing (and the re-indexing) does indeed work properly.
MODE-1224 Improved start performance

The startup time of a new repository was reduced by making a simple change to the way the node types are persisted. If existing node types are to be skipped, then we know that any requests to create new nodes will not replace existing content (since there is no existing content for nonexistent nodes).

An additional integration test was added to easily test this situation, using all of the node type CND files for all of the sequencers. Tests that use ModeShape with a local PostgreSQL database reduced the time required to register node types from ~11seconds to about 6 or 7 seconds. Hopefully this will have a similarly significant effect on the startup when using a remote database.

All unit and integration tests pass with these changes.
MODE-1269 Changed recently-added reindexing API

Having the maximum depth parameter in the reindex methods will likely cause far more issues and problems that will be difficult to track down. In fact, specifying the depth can be more optimum (but no better) than indexing to the fullest depth only in a few cases. Since keeping the depth parameter is extremely risky with very little benefit, I've removed the depth parameter from the public methods (which have not yet appeared in a release).

We may indeed discover that the depth is very useful, and if that's the case we can always add additional methods with a depth parameter. Adding methods to a public API is easy; removing methods is nearly impossible.

This testing also highlighted a bug in the way the Lucene indexes were updated to remove children below some depth. This bug was corrected.

As always, all unit and integration tests pass with these changes.
MODE-1273 Removed the Seam Security provider

The authentication provider that is aware of Seam Security was removed because of the complexity
that even this 'provided' dependency added. It's still extremely easy for users to implement
an authentication provider that ties into their own security system, and we don't need to do
this for Seam Security any more than we do other frameworks.
MODE-1277 Corrected result behavior for multi-selector join queries

I've replicated the error in a test case, and it appears to be a problem in the results of join queries. The problem was that the code for MultiSelectorQueryResultRow was a) using the wrong index and b) calculating the index incorrectly. The problems were fixed and verified with a successful test. All unit and integration tests pass with the changes.

Note that the changes are limited in scope to the MultiSelectorQueryResult class (used only in join queries) and a few additional methods (and state) in some of the o.m.g.query.* classes that are never used outside of the MultiSelectorQueryResult class. Therefore, the risk of unintentional changing the behavior of other functionality is quite low, while the benefit is that this issue is fixed.
Updated console rhq plugin version to 1.0.1
MODE-1283 Corrected use of JNDI context in InfinispanSource

One of several usages of JNID Context was not properly checking for condition where the InfinispanSource
is not configured with a Context reference (this is used primarily for testing). The other cases where
JNDI context is used are all properly handled.
MODE-1285 JPA entities are now Serializable

Changed the JPA entities in the JPA connector to all be serializable. They should have been Serializable in the first place, as Hibernate clustered cache implementations require this.

All unit and integration tests pass.
MODE-1281 Corrected file connector's extra properties storage

When storing extra properties, the file system connector incorrectly wrote an empty multi-valued property
without the required trailing line separator. One example is the "jcr:predecessors" property, which is empty
upon first checkin of a 'mix:versionable' node. This caused an exception when reading the property back in.

This change corrects the way such empty properties are written to the file, but also adds logic to the
method that parses the file's lines to handle reading in files that were written with older versions.

The original problem was replicated with a new unit test and a new integration test, and then the
reading and writing logic were both independently verified. The new tests now pass.

All unit and integration tests pass.
Corrected JDBC assembly information
Changed release notes for 2.6.0.Final release
Changed versions to prepare for 2.7-SNAPSHOT development