An open-source, federated content repository

ModeShape 1.1 adds versioning, WebDAV, JCR connector, and more

ModeShape 1.1 has arrived a mere one month after the prior release, and it brings some fantastic improvements:

  • support for JCR versioning
  • a new WebDAV server module
  • a new connector to other JCR repositories
  • improved import from JCR System and Document Views
  • almost 2 dozen other fixes and improvements

ModeShape now supports all the JCR 1.0 Level 1 and Level 2 features, plus the optional locking, versioning, and observation features. ModeShape also supports the required XPath query language, a simple search language, and the new JCR-SQL2 query language. ModeShape integrates with JAAS and web application security, or you can easily integrate it with other systems. ModeShape can use a variety of back-ends to store information (RDBMSes, Infinispan data grid, memory, JBoss Cache, JCR repositories), can access content in multiple systems (file systems, SVN repositories, JDBC metadata), can federate multiple stores and systems into a single JCR repository, or can access other systems using custom connectors. ModeShape is also able to automatically extract and store useful content from files you upload into the repository using its library of sequencers, making that information much more accessible and searchable than if it remains locked up inside the stored files. And ModeShape provides WebDAV and RESTful servers to allow various clients to access the content.

All the ModeShape 1.1.0.Final artifacts are in the JBoss Maven repository and on the project’s downloads page. The detailed list of the changes are in the release notes.

Congratulations to the fantastic ModeShape community!

Filed under: features, jcr, news, open source, repository, rest

ModeShape 1.0 Beta

Hot on the heels of rebranding our project, the ModeShape project is pleased to announce that the first beta release of ModeShape 1.0 is now available.  It’s in the JBoss Maven repository and in our project’s downloads area. Of course, our Getting Started guide and Reference Guide are great places to see. And we always have JavaDocs and release notes.  Thanks to our fantastic community of users and contributors!

This release is basically just a rebranded form of the JBoss DNA 0.7 release published last week.  Basically, the goal was to make it as easy as possible to migrate an application from JBoss DNA to ModeShape. So the Maven group and artifact IDs have changed, the package names have changed, a few classes with “DNA” in the name have changed, and lots of documentation has changed. If you’re using the JCR API, only a few areas of your applications will be affected.  For details, see the migration section of our Reference Guide.

And as before, ModeShape implements all of the JCR Level 1 and most of the Level 2 features, along with the optional locking and observation features. ModeShape supports three query languages (XPath, JCR-SQL2, and a full-text search), a variety of persistent stores (including RDBMS, Infinispan, and JBoss Cache, to name a few), accessing content in non-JCR systems (including SVN, file systems, JDBC database schemas, etc.), and federating multiple stores and systems into a single, virtual repository. As you upload files and other data into the repository, ModeShape sequencers automatically extract structured information and store it in the repository, making that extracted content available for navigation, search, and query. ModeShape can easily be embedded in your application, deployed into your own web applications, or deployed as a REST service on your favorite application server or servlet container.  And at this point, ModeShape is passing roughly 97% of the JCR TCK, and our goal is to get that to 100% for a 1.0 release in a few weeks.

So switch to ModeShape, give this latest release a shot, and let us know what you think.

Filed under: features, jcr, news, open source, repository

JBoss DNA is now ModeShape

I’m very pleased to announce that JBoss DNA has a new name: “ModeShape”.  Yes, it’s the same project, with the same software (albeit rebranded), and certainly the same fantastic community.  Just a new name and a new home.

Why are we rebranding? After all, isn’t “JBoss DNA” a good name? We thought so. But while having “JBoss” in the name comes with a lot of benefit, there are some disadvantages. For a lot of people, “JBoss” means “Application Server“, and though we hope to play a role with AS in the future, right now our JCR implementation is completely independent of JBoss AS.  For other people, “JBoss” means products (a la subscriptions and support), and ours is an open-source project that, at this point in time, is not included in any of the current JBoss platforms.  So, if we lose the “JBoss” part of “JBoss DNA”, we’re left with “DNA”, and unfortunately that’s just not sufficient for a project name from a trademark or legal perspective.

So, we’ve chosen to rebrand our project as “ModeShape”. We have a great new logo:

ModeShape logo

and some other great new resources:

We’re also releasing ModeShape 1.0.0.Beta1, but more on that in the next post.

We’re excited to officially have our new brand. Props to James Cobb and Cheyenne Weaver for our new logo, graphics and other branding help.  And, as is so often the case, thanks to our fantastic community for their hard and quick work completing the rebranding.

BTW, where did name originate? It’s actually a slight modification of a term used in structural dynamics to help describe and understand how a structure responds dynamically to some force or input, where the response is mathematically a combination of each of its natural mode shapes.  And it seemed to fit a project with goals of making it possible to understand the shape and structure of information and content. (Okay, maybe that’s a stretch. But you get the idea.)

Filed under: jcr, news, open source, repository

Announcing JBoss DNA 0.7

We’ve just released JBoss DNA 0.7. It’s in the JBoss Maven repository and in our project’s downloads area. Of course, our Getting Started guide and Reference Guide are great places to see. And we always have JavaDocs.

With this release, JBoss DNA introduces support for JCR query and search with a several languages, including the JCR XPath language (required by the 1.0 specification), the JCR-SQL2 dialect defined by the JCR 2.0 specification, and a full-text search language. It also adds support for observation.

This means that JBoss DNA now implements all of the JCR Level 1 features, almost all Level 2 features (everything except referential integrity), and the optional locking and observation features. This version passes more than 97% of the JCR TCK tests that cover Level 1, Level 2, locking and observation. (All of the failures are because of referential integrity and a handful of known issues.) Fortunately, most of these are either less-frequently-used features of JCR or issues that can be worked around.

This release also introduces a number of new and improved connectors. Both the file system connector and SVN connector were reworked to improve performance and to support updates, and they both offer a preview of an optional caching system. The JPA storage connector was dramatically improved and is now significantly faster, more capable, and more efficient. There is also a new JDBC metadata connector that provides read-only access to the schema information of relational databases through JDBC. The federated connector was also improved, and is now used in several key places within our JCR implementation. Plus, we still have connectors to Infinispan, JBoss Cache, and a simple transient in-memory store.

There are also a number of new and improved sequencers. A new text sequencer is able to extract structured data from comma-separated or fixed-width text files. A new DDL sequencer is capable of parsing a number of DDL dialects to extract the more important DDL statements. The CND sequencer was rewritten to be much simpler, perform better, fix a number of known issues, and eliminate third-party dependencies. There is also a new Java class file sequencer that operates on Java class files and produces output that is comparable to the Java source file sequencer, and that can be used in conjunction with the ZIP file sequencer to extract the Java metadata from JARs, WARs, and EAR files. And don’t forget the XML sequencer or our other sequencers for extracting metadata from images, MP3s, and Microsoft Office documents.

We’ve fixed quite a few bugs, added numerous improvements, and upgraded all third-party dependencies to the latest versions available at this time. The build system now supports running all of the tests against a variety of databases, making it very easy to test against DBMSes that JBoss DNA doesn’t directly test against. And we’ve added a new DDL generation utility that produces the DDL for the database schema created and used by the JPA connector. To top it all off, JCR repositories now support the use of anonymous users, though this can easily be changed for production purposes.

Thanks to the whole JBoss DNA community for all their hard work!

Filed under: features, jcr, news, open source, repository

New JBoss DNA forums go live

Hot on the heals of an upgrade and overhaul of our project site, the site has completed a migration of its forums.  Not only are the forums much better, but it boasts a ton of new features and capabilities, including integration with the wiki.

Check out the new forum for JBoss DNA, and don’t forget to update your bookmarks.

Thanks to the team for continually improving our infrastructure!

Filed under: news, open source

SAX broken in Java 6 and 7 (and how open source really works)

Not long ago Serge, one of DNA’s committers, found a bug when running our XML sequencer with Java 6. Turns out the culprit is actually the Java 6’s SAX parser, which is calling the handler methods for entity references in the wrong order! Ouch!

Normally, when processing an XML entity reference, whether a standard entity like “&lt;” or a custom one like “&version;“, the SAX parser first calls startEntity(String) method on LexicalHandler with the name of the entity (e.g., “lt”). It then calls the the character(...) method on ContentHandler to process the replacement content (e.g., “<“). Finally, the parser then calls endEntity(String) method on LexicalHandler (again with the name of the entity).

That’s the way it’s supposed to work. In Java 6, the startEntity(String) method is called correctly, but the endEntity(String) method is then called, and the content passed to the characters(...) includes the replacement content and the next set of content that would be processed. WTF?

I had a tough time finding out whether anyone else hand encountered this. Surely they had – a problem like this? In fact, my search results kept including the DNA bug in the top results. (In hindsight, the only reason we care is that we want to keep the original entity reference rather than use the replacement content, which SAX normally does. So most people may not actually notice the problem.)

But, for the moment, it didn’t matter whether it was a JDK problem or not. We want to release DNA in a few days, and the XML sequencer worked correctly in Java 5, but not in Java 6. So, either find a fix or treat as a known issue. Well, this issue could come up a lot with XML sequencing, so we tried a fix. In fact, I found a workaround that was actually pretty minimal, so now the sequencer works on both Java versions. Score!

Okay, now that DNA was on track, back to the JDK bug. Based upon our unit tests, I had a hunch it was just Java 6 on OS-X. So, would I file the bug with Apple or with Sun? This morning I started working on a simple test to show the problem, which I could use to find out exactly which JDKs were a problem and where I’d need to file the bug.

But then open source to the rescue! Daniel (from the Smooks project) found the same problem and he filed a bug report. Today no less. Turns out my hunch about OS-X was wrong, and it’s a problem in Java 6 and 7. Of course, like a good open-source citizen, Daniel commented on our JIRA issue. That’s how I found out about his bug report. Thanks, Daniel – you saved me some time, and hopefully our initial triaging served you well.

I love how open source works.

Filed under: open source, testing

Why subscribe to JBoss products?

If you’ve ever wondered why you (or anyone else) would pay money for a subscription to JBoss products, check out Andy Miller’s recent post on the topic.

Filed under: open source

Staying informed (via our mailing lists)

One of the easiest ways to stay informed of what’s going on with many open source projects is through their mailing lists and blogs. You’ve obviously found the blog for the JBoss DNA project, but did you know about our mailing lists?

JBoss DNA has several mailing lists, and you can always find them (and how to subscribe) off our main project page or on the mailing lists. Here’s a summary:

  • dna-announce is, well, for announcements. This list won’t have much traffic, as we’ll really just be announcing releases and such.
  • dna-users is the list for anyone who wants to use JBoss DNA but doesn’t want all the nitty-gritty about the inner workings. You can use this list or the forum to
  • dna-dev is the list for those of us developing the project and those that wish to listen in.
  • dna-issues is the automated list of notifications made to JIRA issues.
  • dna-commits is the automated list of SVN commits.

My advice would be to start with dna-users and dna-announce, and then subscribe to the others as you see fit.

One important note: you must subscribe to a list before you can post to it. There’s no getting around that.

Filed under: news, open source, repository, tools

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.