Release Notes for ModeShape 3.7.3.Final

This document outlines the changes that were made in ModeShape 3.7.3.Final.
We hope you enjoy it!

What's new

3.7.3.Final provides a fast, elastic, distributed hierarchical database that clients
work with via the standard JCR 2.0 (JSR-283) API. ModeShape 3 is a major upgrade over 2.x
and offers significant improvements in performance and scalability, while retaining all of
ModeShape 2's JCR-related features. ModeShape 3 has complete integration with JBoss EAP 6.1,
allowing deployed components to simply lookup and use repositories managed by ModeShape's
service.

This patch release addresses a single issue with the way repository URLs are resolved.
The fix is low-risk and has already been tested in the community.

Features

ModeShape 3.7.3.Final has these features:

ModeShape uses Infinispan for all caching and storage, giving a powerful and flexible
foundation for creating JCR repositories that are fast, scalable, and highly available.
Infinispan offers a great deal of storage options (via cache loaders), but using Infinispan
as a distributed, mulit-site, in-memory data grid provides incredible scalability and performance.

Strongly consistent. ModeShape is atomic, consistent, isolated and durable (ACID), so writing
applications is very natural. Applications can even use JTA transactions.

Fast. ModeShape 3 is just plain seriously fast, and performance is all-around
faster than 2.x - most operations are at least one if not several orders of magnitude faster!
We'll publish performance and benchmarking results soon.

Larger content. ModeShape 3 has been designed to store and access the content so that
a node can have hundreds of thousands (or more!) of child nodes (even with same-name-siblings)
yet still be incredibly fast. Additionally, repositories can scale to many millions of nodes
and be deployed across many processes.

Simplified configuration. There is no more global configuration of the engine; instead,
each repository is configured with a separate JSON file, which must conform to a ModeShape-specific
JSON Schema and can be validated by ModeShape prior to use. Repository configurations can even be
changed while the repository is running (some restrictions apply), making it possible to
add/change/remove sequencers, authorization providers, and many other configuration options
while the repository is in use.

Elastic. Add processes to scale out, without having to have a single coordinator.

Deploy, start, stop and undeploy repositories while the engine is running and while and other
repositories are still in use.

Sessions immediately see all changes persisted/committed by other sessions, although
transient changes made by the session always take precedence.

Monitoring API with over a dozen metrics.

Sequencing SPI that uses the JCR API to get at the content being processed and create/update the
derived content. Sequencers can also dynamically register namespaces and node types. Now it's easy
to create custom sequencers.

Connector SPI that defines how external systems are accessed and optionally updated to project
the external information into the repository as regular nodes.

Simple API for implementing custom MIME type detectors. ModeShape still has a built-in
Tika-based detector that determines MIME types using the filename extensions and binary content.

Simple API for implementing custom text extractors, which extracts from binary values
searchable text used in full-text searches and queries.

Ability to store binary values of any sizes, with a separate facility for storing these on the file
system, in Infinispan caches, in relational DBMSes (via JDBC), and in MongoDB. Custom stores are also
possible.

Public API interfaces and methods that were deprecated in 2.7.0.Final (or later) have been removed.
There weren't many of these; most of the ModeShape API remains the same as 2.x.

Integration with JBoss AS 7. ModeShape runs as an integrated subsystem within AS7, and
the AS7 tooling can be used to define and manage repositories independently of each other
and while the server is running.