ModeShape

An open-source, federated content repository

ModeShape 3.7.2.Final is available

Our last release was 4.0.0.Alpha1, and in it we fixed a dozen or so bugs reported against 3.x. And as we continued toward 4.0.0.Alpha2, we’ve fixed a number of additional bugs. We don’t want anyone running 4.0.0.Alphas (or Betas) in production, so it’s not surprising that finally someone asked that several of them be backported to 3.7.x.

Today ModeShape 3.7.2.Final is available, with 19 fixes back ported to the 3.x codebase. If you’re using any version of 3.x, we recommend that you upgrade to, test with, and start using 3.7.2.Final.

As usual, the artifacts are in the JBoss Maven repository and will soon be pushed into Maven Central. Or you can download a zip file with the libraries.

Give it a whirl and let us know on IRC or in our forums if you have any problems.

Filed under: jcr, news, releases

Upcoming 3.7.2.Final patch release

We’ve been working on 4.0 for a while, and in addition to the new features we’ve also fixed a number of bugs logged against 3.7. We’ve accumulated a number of them, so we’re going to backport some of them and cut a 3.7.2.Final release, hopefully as soon as next week. If you don’t see an issue, ask us on IRC or in our forums.

Filed under: releases

ModeShape 4.0.0.Alpha1 is available

The ModeShape community is very proud to announce the immediately availability of ModeShape 4.0.0.Alpha1, which is the first pre-release. JARs and other artifacts are available in the JBoss Maven repository and in our downloads area, and will be soon in Maven Central. See our Getting Started guide for details.

Thanks to our whole community for the work that’s gone into this release!

What’s new?

One of our goals for 4.0 is to simplify ModeShape clustering. It is no longer necessary to specify a JGroups configuration for ModeShape, since ModeShape will now automatically piggyback on the Infinispan clustering configuration. We’re also improving how ModeShape tracks events so that it’s far easier and less time-consuming to have processes (re)join the cluster.

We’ve upgrade to Infinispan 6.0, and that comes with improved performance and several very attractive cache stores, especially the one for LevelDB.

Another aim is to improve the query functionality. Specifically, ModeShape 4 will allow you to define specific indexes for the queries you’re actually using. That will mean ModeShape no longer has to update indexes for property values that you’re not using in queries, and this will improve performance. And, with 4.0 you’ll be able to store indexes locally (on the file system or in Lucene) or even in a separate clustered search system such as Solr and ElasticSearch. None of this indexing capability is working yet, though we’ve already overhauled the query engine to work without indexes and with indexes when they are added.

ModeShape 4.0.0.Alpha1 can now deploy on Wildfly 8.0, making it very easy for your applications to simply look up and use repositories that managed using Wildfly tooling and configuration.

What’s next?

We plan to issue more alpha releases about every 2 weeks until we’ve completed all features, at which point we’ll start issuing beta releases that fix any issues that will come up. When the codebase is stable and ready for a release, we’ll start issuing candidate releases and ultimately a final release.

So our next step is to continue improving the query system by adding support for defining, managing and using indexes. We’ll follow that with support for storing indexes locally on the file system or within Lucene. Support for Solr and ElasticSearch will come later; without some contributions they will likely be available in 4.1.

What can you do?

Although this is an alpha release not suitable for production, we’d really appreciate the community picking up this release and at least putting it through the basics. Try it out and see how Infinispan 6 works, how much faster it is, and try one of the new and high-performance cache stores. Give queries a whirl, and let us know if there are any queries that worked in 3.x no longer work in 4.x. Try out ModeShape by installing it into Wildfly 8.

Filed under: features, jcr, news, releases

ModeShape 3.7.1.Final is available

Yesterday we released ModeShape 3.7.0.Final, but we discovered a problem in the BOMs that could pose a problem for any application builds that rely upon some of the default dependency versions in these BOMs (see MODE-2133).

So, we fixed that and pushed out 3.7.1.Final that contains corrected BOMs. This is the only change, so please switch to 3.7.1.Final instead of 3.7.0.Final.

Filed under: uncategorized

ModeShape 3.7.0.Final is available

Happy New Year!

We’re starting off 2014 with a hot new release: ModeShape 3.7.0.Final is avaialble immediately from the usual locations, including our downloads page and in the Maven repositories. This release contains mostly bug fixes, but it also eliminates several performance bottlencks when creating nodes (especially when using a cache store) and indexing (especially updating parent nodes with lots of children). See the release notes for details.

The bottom line is that many of you will see some a very nice performance increase. We recommend all users upgrade to this version as soon as possible.

Now that 3.7 is out the door, we’re going to focus most of our time on 4.0. Our goal for ModeShape 4 is to make it far easier to configure and cluster, to increase reliablity and performance, and rework our indexing mechanism to enable use of multiple external indexes (like SOLR, ElasticSearch, etc.) while also reduce the time required to update the indexes by allowing you to define only those query indexes that your queries will actually use. We’ll also make the switch to Infinispan 6.0 (or higher) and Wildfly. See this page for more details.

Thanks to all those that contributed in some way to this release!

Filed under: jcr, news, releases

Relicensing ModeShape 4.0 under ASL2.0

A month ago I proposed that we relicense ModeShape under the Apache Software License (ASL) 2.0 starting with the first 4.0 release of ModeShape. To date the reactions have been nothing but favorable, so we’re going to proceed down this road.

Please see the discussion thread for more details and to add any of your own opinions.

Filed under: news, open source

ModeShape 3.6.0.Final is available

Today we’ve released ModeShape 3.6.0.Final that addresses a total of 54 fixes, new features and enhancements, including:

  • A new visual repository explorer web application that allows users to navigate, create, edit and query content. It’s quite nice to be able to easily see what’s in a repository. We automatically install and deploy the application (along with the other ModeShape services) if you install the ModeShape kit into an EAP 6.1.x installation. But you can also find the WAR file in Maven, making it easy to install into other application servers. This explorer application is still new, so any feedback or contributions would be very welcome.
  • When using ModeShape installed as a subsystem on EAP 6.1.1, it is now pretty easy to use domain mode to control and configure a cluster. Look at the high availability startup configurations.
  • Client applications can now programmatically invoke a sequencer to operate on the content visible to the session, including the session’s transient (modified but not-yet-saved) state. The output of the sequencing will be placed into the session’s transient state, allowing the session full control over when (or if) that output is to be saved.
  • The file system connector has been improved so that very large file (even dozens of GB) can be effectively accessed via federation.

See our release notes for detail on all the changes in this release.

ModeShape and EAP

This release works on top of EAP 6.1.0.GA or the more recently released 6.1.1.GA. See our quickstarts that show how easy it is to use ModeShape when deployed this way (you can also download them from our downloads page). See this discussion post for background on what deploying on top of EAP means for community users.

Should you upgrade?

We think so. This release is more stable than any prior 3.x release, so we recommend upgrading as soon as possible. For most of you, upgrading should involve just using the newer JARs. If you’re still running ModeShape on AS7, though, you’ll want to look at using EAP 6.1 as mentioned above; it’s more stable and it’s version of Infinispan has lots of fixes (especially around clustering).

Get the release

The artifacts are in the JBoss Maven repository (and hopefully will roll out to Maven Central soon) and on our downloads page. Our getting started guide has instructions, ModeShape 3 documentation and JavaDoc are available, and our code is on GitHub. Join us on our forums or IRC channel to ask questions, and please log any issues in our JIRA.

Once again, we had a lot of help this release from our community members that reported, fixed issues, and contributed fixes and features! Thanks to the whole community for a job well-done!

Filed under: features, jcr, releases, rest

Coming soon: manually invoke sequencers

ModeShape has had sequencers almost since the very beginning of the project. When you upload files or add other content to a repository, ModeShape sequencers can automatically process that content to extract useful information and represent it as additional content in the repository.

For example, let’s say that you are going to store (among other things) an XSD file in your repository. Sure, ModeShape stores the actual content as well as metadata about the XSD, such as the name, the MIME type, date it was uploaded, date it was saved, and any other properties your application wants to store. But what about the stuff inside the file? You know, the element declarations, attribute declarations, namespaces, complex types, simple types, etc.?

ModeShape sequencers can get at that stuff. ModeShape comes with quite a few sequencers, including one that can parse the XSD file content and build nodes for each of the element definitions, attribute definitions, complex types, simple types, groups, and all the other concepts. We call this derived content, and having that in your repository is very useful. Imagine being able to find all schemas that contain an element declaration that matches some criteria!

All your application has to do was upload the file — the rest is automatic.

Sequencing workflow

What about cases when you don’t want it to be automatic? For example, you might want to upload and sequence the file all before saving it. Or, you might want some files to be sequenced, and others not to be. Until now, doing this required some pretty complicated workarounds.

However, next month’s ModeShape 3.6 will allow you to configure sequencers that should only be able to be invoked explicitly. We call these “manual sequencers” (in contrast to the “automatic sequencers” we’ve always had), and they are exactly the same as the good ol’ automatic sequencers except for one thing: they don’t have path expressions.

If you recall, a path expression is a pattern that tells ModeShape which content should be sequenced by a particular sequencer. ModeShape watches the changes to the repository, and any time it sees a new or changed node at a path that matches a sequencer’s path expression, ModeShape will automatically run that sequencer on that new/changed node. Every automatic sequencer need at least one valid path expression. But when a sequencer is to be invoked manually, there’s no need to configure a path expression!

So configuring manual sequencer is easy enough, but how do you invoke a sequencer? Very easily.

Consider this scenario: we’ve used a session to upload a file at “/files/schemas/Customers.xsd“, and this node has a primary type of “nt:file“. (This means the file’s content is stored in the “jcr:data” property the “jcr:content” child node.) The session has not yet saved any of this information, so it is still in the session’s transient state. The repository has a manual sequencer named “XSD Sequencer”, so all we want to do is manually invoke it on our newly-uploaded file and have the generated content put directly under the “/files/schemas/Customers.xsd” node, adjacent to the “jcr:content” node. The code is simple:

// Find the file content ...
Node fileNode = session.getNode("/files/schemas/Customers.xsd");
Property content = fileNode.getProperty("jcr:content/jcr:data");

// Pick where we want the new content to be placed ...
Node output = fileNode; // could be anywhere!

// Invoke the specific sequencer ...
boolean success = session.sequence("XSD Sequencer", content, output);

The sequence(...) method returns “true” if the sequencer generated output, or “false” if the sequencer couldn’t use the input and instead did nothing. Remember that when sequence(...) does return, any generated output is only in the session’s transient state and “session.save()” must be called to persist this state.

For more detail about how to configure and use manual sequencers in ModeShape 3.6 or later, please see our documentation. Then, watch this space for news about the 3.6 release.

Filed under: uncategorized

Planning for ModeShape 4.0

That’s right – we’re thinking about ModeShape 4.0 and what it might look like. We’ve literally just created an initial plan, so it’s very early. However, please give it a read and give us your input and feedback! Below are answers to some big questions, but if you have others please contact us or add a comment to the planning document.

Why are we talking about 4.0?

There are several reasons. Firstly, we have a few deprecated methods that we’d like to remove, and we’ll almost certainly move to JCR 2.1 (aka, JSR-333) which is nearing approval. Secondly, some of the bigger changes will not be compatible with the 3.x configuration format. In particular, we’re rethinking everything about how we manage and maintain our indexes, including how they’re configured in clustered repositories.  However, please note that we do not plan to change the storage format, making it much easier to upgrade from 3.x to 4.0.

What does this mean for 3.x?

We still plan to fix issues and add minor enhancements while we work on 4.0 features, and plan to release version 3.6 in roughly 6 weeks. It’s likely that we’ll even release 3.7, since 4.0 won’t be stable enough for production use by then.

Will I be able to upgrade from 3.x to 4.0?

Yes! Since the storage format won’t change, it really becomes just a software upgrade. We expect that most users will be able to easily upgrade with no changes to their application (unless they’re using methods deprecated in JCR 2.0 or ModeShape’s public API). However, many people will likely need to change their configuration files, though we’d like to make that as easy as possible. (Ideally, you may just need to remove some parts from your 3.x configuration.)

Filed under: uncategorized

ModeShape 3.5.0.Final is available

Today we’ve released ModeShape 3.5.0.Final, with just over a dozen issues fixed, including a couple bigger ones:

  • The technology-preview JCR Access Control List (ACL) feature introduced in 3.4 unfortunately caused extra work to be done in repositories that never used ACLs. This release fixes this by adding an optimization that skips ACL checks until the first ACL is created in a repository. From that point on, ACL checking is always performed when accessing or modifying content. Be advised that if you’re using this feature in 3.4 and upgrade to 3.5, you may need to create (and save) at least one ACL in the repository before ACL checking is enabled. (You can always remove and save that ACL if it’s not really needed.) It’s not ideal, but was the only effective way to handle the upgrade.
  • Monitor repositories through JMX.
  • A new “simple” reference property type that is very similar to JCR’s standard weak references that do not enforce referential integrity. When a weak reference points to a node, you can use the “Node.getWeakReferences()” method to find all weak reference properties that point to it. These are called “back references” (since they point back to the referrer), and they can be expensive to maintain when a single node is referenced by lots of other nodes. Simple references are one-way and therefore do not maintain these back references, and thus are faster, more efficient, and more scalable.
  • Fixes for two workspace clone bugs, one workspace delete bug, and one merge bug.
  • Connectors now can optionally choose to use a simpler, non-I18n logger. (The more rigorous I18n logger is still available.)
  • Several other bug fixes.

See our release notes for detail on all the changes in this release.

ModeShape and EAP

As with 3.3.0.Final and 3.4.0.Final, this release works atop EAP 6.1.0.GA. And we have new quickstarts that show how easy it is to use ModeShape when deployed this way (you can also download them from our downloads page). See this discussion post for background on what deploying on top of EAP means for community users.

Should you upgrade?

We think so. This release is more stable than any prior 3.x release, so we recommend upgrading as soon as possible. For most of you, upgrading should involve just using the newer JARs. If you’re still running ModeShape on AS7, though, you’ll want to look at using EAP 6.1 as mentioned above; it’s more stable and it’s version of Infinispan has lots of fixes (especially around clustering).

Get the release

The artifacts are in the JBoss Maven repository (and hopefully will roll out to Maven Central soon) and on our downloads page. Our getting started guide has instructions, ModeShape 3 documentation and JavaDoc are available, and our code is on GitHub. Join us on our forums or IRC channel to ask questions, and please log any issues in our JIRA.

Once again, we had a lot of help this release from our community members that reported, fixed issues, and contributed fixes and features! Thanks to the whole community for a job well-done!

Filed under: features, jcr, releases, rest

ModeShape is

a lightweight, fast, pluggable, open-source JCR repository that federates and unifies content from multiple systems, including files systems, databases, data grids, other repositories, etc.

Use the JCR API to access the information you already have, or use it like a conventional JCR system (just with more ways to persist your content).

ModeShape used to be 'JBoss DNA'. It's the same project, same community, same license, and same software.

ModeShape

Topics

Follow

Get every new post delivered to your Inbox.