Clone Tools
  • last updated a few minutes ago
Constraints: committers
Constraints: files
Constraints: dates
Updated the release script

Updated file

MODE-1490 - Added checks for oderBefore: if the source and destination are the same, no changes should be performed.

MODE-1406 Corrected validation of shareable node creation

When a shareable node is created, the validation logic assures that the new shared node will

have the correct node type. If the parent node type's associated child node definition

is restrictive of the allowed child node type, this validation logic may fail because it

was incorrectly resolving the shared node (e.g., the primary type of the child was thought

to be "mode:share", an internal node type used in the shareable nodes feature, rather than

the actual primary type of the shareable node.

The fix was simply using "originalNode()" rather than "proxyNode()" to obtain the original

shared node.

A new test case replicates the problem and error, and after the fix runs successfull.

MODE-1553 - Removed fixxme comment from test CND file

MODE-1553 - Updated the Processor so that the jcr:uuid property is stored as a node property, when the node is created.

MODE-1545 Corrected the JavaDoc for the AbstractBinaryStore

MODE-1416 - Added explicit @Produces annotation on the query methods from the rest service, to properly indicate the response type.

MODE-1416 - Updated the rest server to produce not only application/json but also text/plain and text/html, based on the Accept header of the request. Clients which rely on the old (default application/json behavior) should specify the Accept header in the request.

MODE-1433 - Added a JDBC datasource to the AS7 kit and an integration test which verifies that the DS is correctly setup and can correctly access the repository.

MODE-1545 - Implemented a mechanism for the binary store to persist the mime-types of binary values, in order to avoid detection each time.

While working on this, another issue was exposed and fixed: when persisting data to disk (e.g. the AS7 kit), the defaultPrimaryType of node type definitions was not properly re-initialized on a restart.

MODE-1458 Implemented Shareable Nodes

The JCR shareable nodes feature was implemented using the linked nodes capability of

the internal Repository Cache framework. All basic functionality is implemented

and all TCK tests pass with the exception of several tests that have bugs/issues


and Two other shareable node

tests are currently failing because of how is implemented

(see Note that is deprecated,

and a workaround is to simply use instead.

  1. … 31 more files in changeset.
MODE-1544 - Removed the mime-type detector field from the execution context, as the binary storage & binary values should be the "owners" of the mime-type related information.

MODE-1544 - Extracted Tika based mime-type detector and updated the way mime type detectors are loaded and initialized.

Because of the AS7 support, the detectors need to be loaded via the Environment class loader. Also, because text extraction (and implicitly mime-type detection) can be triggered preemptively, some of Tika's excluded dependencies needed to be added back (e.g. for .java and .class files)

  1. … 4 more files in changeset.
MODE-1527 -Added AS7 support for configuring and working with text extractors. To validate the configuration and Arquillian integration test was added as well.

  1. … 21 more files in changeset.
MODE-1527 - Updated the text extraction process to be triggered preemptively by the binary storage, when a binary value is created.

For this to be possible, the context of the extractor cannot contain any node-specific information. Also, this exposed an issue with the SharedLockingInputStream: if the stream is closed in the "read" methods, Tika's parsers will keep reading it over and over (effectively reopening it each time) either causing OOM errors or duplicate text. This means the "close" call from the read methods has been removed.

MODE-1527 - Updated the text extraction process to be asynchronous with the indexing process.

This meant that a few changes were needed:

- the text extractors configuration has been updated to resemble that of the sequencers

- the binary store interface has been updated to be able to store and retrieve extracted text for a given binary (source) value

- the TextExtractors class was changed to become the entry point into text extraction

  1. … 27 more files in changeset.
Updated Maven module descriptions

MODE-1536 Corrected one use of System.nanoTime

Previously, most of the uses of System.nanoTime to determine the duration of an operation were changed to compute the absolute value of the difference in nanoTime results. One usage was missed, and this corrects that omission.

MODE-1527- Migrated initial version of the text extractors from 2.x and updated the binary store to extract the text and mime-type of binary values

Working on this, exposed how fragile - lock-wise - is working with the SharedLockingInputStream (FileSystemBinaryStore). Therefore, I've updated the mime-type detection so that mark & reset are avoided as much as possible, also making sure that streams are closed after each detector finishes with them.

The Tika version was bumped to 1.1 which required also the update of the POI version to 3.8.

    • -0
    • +23
  1. … 45 more files in changeset.
'Release: update versions for modeshape-3.0.0.Alpha6'

    • -1
    • +1
  1. … 33 more files in changeset.
Updated release script for latest JIRA release on

Updated release notes

MODE-1525 Corrected other tests that relied upon incorrect behavior

MODE-1525 Adding a node without specifying primary type incorrectly assumed "nt:unstructured"

If a parent has a child node definition with a default primary node type, and a child

(with the correct name to match the child node definition) is added without specifying

the primary type, the child incorrectly was assigned a primary type of "nt:unstructured".

This was because the "AbstractJcrNode.addNode(String)" method incorrectly hard-coded

the node type to "nt:unstructured" rather than determining the child's node type from

the parent's node type(s). Simply removing this assumption fixes the problem.

Two new tests were added to replicate this problem and verify the changes do correct the


All unit and integration tests pass with these changes.

    • -0
    • +14
MODE-1507 Corrected compiler warnings re unused imports

MODE-1507 - Updated the AS7 kit to include the WebDav war and also added an Arquillian integration test

  1. … 11 more files in changeset.
MODE-1507 - Added the webdav modules back to the build system and fixed the tests. Also, removed a deprecated class and implemented a real integration test which uses a WebDav client to test the exposed functionality.

    • -18
    • +12
    • -6
    • +36
  1. … 6 more files in changeset.
MODE-1537 Corrected how manual transactions are implemented

ModeShape's initial support for JTA transactions included a bug that allowed this

only to work for the first transaction. The state of that first transaction was kept,

so ModeShape never registered a Synchronization implementation for subsequent transactions.

Although the data was correctly persisted as part of these transactions, none of the

events for the subsequent transactions were fired and thus the local caches became

out of date and failed to expose the newly added/modified/deleted content.

ModeShape's internal transaction abstraction was corrected and simplified so that

the transactional state is never managed by the system but instead is referenced

by the client code using the transactions. This does make the API slightly more complex,

but it greatly simplifies the implementation and corrects the transactional behavior.

A new integration test was added to use a SLSB with BMT to create a subgraph of nodes

in one (or more) transactions, verify the structure (using a different transaction),

and remove the subgraph in another transaction.

All unit and integration tests pass with these changes.

MODE-1538 Added ability to cancel queries

Added a Query.cancel() method that can be used to cancel currently running queries.

Note that because the Query.execute() method blocks, canceling a query must be done

via a separate thread. This does add some complexity to clients, but it provides

a very useful capability to cancel long-running (or perhaps runaway) queries.

All tests pass with these changes.