Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

ModeShape is a distributed, hierarchical, transactional, and consistent data store with support for queries, full-text search, events, versioning, references, and flexible and dynamic schemas. It is very fast, highly available, extremely scalable, and it is 100% open source and written in Java. Clients use the JSR-283 standard Java API for conte…

Octocat-spinner-32 bin Updated release script to deal with new name of Wildfly distribution … March 27, 2014
Octocat-spinner-32 boms MODE-2134 Removed dependencies which should not be part of the BOM. March 03, 2014
Octocat-spinner-32 checkstyle MODE-2066 Migrated to Infinispan 6.0.1 and JGroups 3.4.1. Beside the … January 23, 2014
Octocat-spinner-32 connectors MODE-2191 Moved federation.spi to spi.federation. April 10, 2014
Octocat-spinner-32 demos MODE-1696 Removed support for deprecated JSR-170 CND attributes: MULT… March 07, 2014
Octocat-spinner-32 deploy MODE-2188 Added support for managing index definitions to the Wildfly… April 09, 2014
Octocat-spinner-32 extractors MODE-2018 Implemented new query engine. March 25, 2014
Octocat-spinner-32 integration MODE-2065 Corrected the replicated ISPN cache configurations in Wildf… April 09, 2014
Octocat-spinner-32 modeshape-assembly-descriptors MODE-2188 Added management of index providers to Wildfly subsystem April 09, 2014
Octocat-spinner-32 modeshape-client Corrected the modeshape-client assembly mechanism, which was broken s… March 26, 2014
Octocat-spinner-32 modeshape-common MODE-2018 Implemented new query engine. March 25, 2014
Octocat-spinner-32 modeshape-distribution MODE-2188 Added management of index providers to Wildfly subsystem April 09, 2014
Octocat-spinner-32 modeshape-jca-rar MODE-2146 Split modeshape-jca into modeshape-jca (just the sources) a… January 23, 2014
Octocat-spinner-32 modeshape-jca Moved test JTA settings from a base test class into an XML configurat… April 04, 2014
Octocat-spinner-32 modeshape-jcr-api MODE-2188 Added management of index providers to Wildfly subsystem April 09, 2014
Octocat-spinner-32 modeshape-jcr-tck MODE-2041 Corrected several Maven warnings by putting more of the tes… January 14, 2014
Octocat-spinner-32 modeshape-jcr MODE-2193 Fixed the hasNext() method of child node iteration when ACL… April 14, 2014
Octocat-spinner-32 modeshape-jdbc-local Correct Java compiler warnings April 15, 2014
Octocat-spinner-32 modeshape-jdbc Correct Java compiler warnings April 15, 2014
Octocat-spinner-32 modeshape-parent MODE-2188 Added management of index providers to Wildfly subsystem April 09, 2014
Octocat-spinner-32 modeshape-performance-tests MODE-2179 Fixed the binary store database script for MS SQL Server 20… April 04, 2014
Octocat-spinner-32 modeshape-schematic Corrected compiler and JavaDoc warnings March 26, 2014
Octocat-spinner-32 modeshape-unit-test MODE-2066 Migrated to Infinispan 6.0.1 and JGroups 3.4.1. Beside the … January 23, 2014
Octocat-spinner-32 sandbox MODE-2081 Changed the remaining files over to the ASL 2.0 license January 17, 2014
Octocat-spinner-32 sequencers MODE-1696 Removed support for deprecated JSR-170 CND attributes: MULT… March 07, 2014
Octocat-spinner-32 web MODE-2182 Added 2 methods to the REST service which allow uploading b… April 11, 2014
Octocat-spinner-32 .gitignore MODE-1820 Added repository explorer to build, removed some generated … October 07, 2013
Octocat-spinner-32 LICENSE.txt MODE-2081 Changed the license for ModeShape code to ASL 2.0. January 13, 2014
Octocat-spinner-32 README.md MODE-2081 Changed the license for ModeShape code to ASL 2.0. January 13, 2014
Octocat-spinner-32 eclipse-code-formatter-profile.xml DNA-580 Rebranded all of the codebase, changing from 'JBoss DNA' to '… January 14, 2010
Octocat-spinner-32 eclipse-preferences.epf MODE-664 Upgraded Mockito to 1.8.1, which included changing several d… February 24, 2010
Octocat-spinner-32 pom.xml MODE-2065 Ported the EAP kit to Wildfly 8.0.0.CR1. This exposed a num… January 30, 2014
Octocat-spinner-32 release_notes.md Updated release notes for 4.0.0.Alpha1 March 26, 2014
Octocat-spinner-32 settings.xml MODE-2065 Updated the main ModeShape dependencies which overlap with … January 28, 2014
README.md

Copyright 2008-2014 ModeShape Project. Licensed under the Apache License, Version 2.0.

The ModeShape project

This is the official Git repository for the ModeShape project.

ModeShape is an open source implementation of the JCR 2.0 (JSR-283) specification and standard API. To your applications, ModeShape looks and behaves like a regular JCR repository. Applications can search, query, navigate, change, version, listen for changes, etc. But ModeShape can store that content in a variety of back-end stores (including relational databases, Infinispan data grids, JBoss Cache, etc.), or it can access and update existing content from other kinds of systems (including file systems, SVN repositories, JDBC database metadata, and other JCR repositories). ModeShape's connector architecture means that you can write custom connectors to access any kind of system. And ModeShape can even federate multiple back-end systems into a single, unified virtual repository.

ModeShape repositories can be used in a variety of applications. One of the most obvious ones is in provisioning and management, where it's critical to understand and keep track of the metadata for models, database, services, components, applications, clusters, machines, and other systems used in an enterprise. Governance takes that a step farther, by also tracking the policies and expectations against which performance can be verified. In these cases, a repository is an excellent mechanism for managing this complex and highly-varied information. But a ModeShape repository doesn't have to be large and complex: it could just manage configuration information for an application, or it could just provide a JCR interface on top of a couple of non-JCR systems.

For more information on ModeShape, including getting started guides, reference guides, and downloadable binaries, visit the project's website at http://www.modeshape.org or follow us on our blog or on Twitter. Or hop into our IRC chat room and talk our community of contributors and users.

Get the code

The easiest way to get started with the code is to create your own fork of this repository, and then clone your fork:

$ git clone git@github.com:<you>/modeshape.git
$ cd modeshape
$ git remote add upstream git://github.com/ModeShape/modeshape.git

At any time, you can pull changes from the upstream and merge them onto your master:

$ git checkout master               # switches to the 'master' branch
$ git pull upstream master          # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git push origin                   # pushes all the updates to your fork, which should be in-sync with 'upstream'

The general idea is to keep your 'master' branch in-sync with the 'upstream/master'.

Building ModeShape

Then, we use Maven 3.x to build our software. The following command compiles all the code, installs the JARs into your local Maven repository, and run all of the unit tests:

$ mvn clean install -s settings.xml

BTW, that '-s settings.xml' argument uses the 'settings.xml' file in our codebase, which is set up to use 2 Maven repositories:

 The JBoss Maven repository - is the main repository, where most of the required artifacts are located
 The JBoss EAP Techpreview repository - is an additional repository which contains the artifacts necessary for building ModeShape's EAP kit.

Normally, during a normal "$ mvn clean install" build, the EAP kit is not built and therefore only the JBoss Maven repository would suffice.

However, if you are interested in building & contributing to the EAP kit as well, you need to make sure the second Maven repository is active and you need to download the EAP kit and place it into your local Maven repository where the build can find it. To do the latter, simply go to [JBoss.org|https://www.jboss.org/products/eap.html], download the EAP 6.1.1, then run the following script that is in our codebase:

$ bin/install-eap.sh path/to/jboss-eap-6.1.0.zip

You can then run the following command (instead of the earlier command) to build all modules, including the EAP kit, using our "integration" profile:

$ mvn clean install -s settings.xml -Pintegration

To build everything, including the ModeShape kit for EAP, our JavaDoc, and our other assemblies, use the "assembly" profile instead:

$ mvn clean install -s settings.xml -Passembly

As an alternative to always passing the "-s settings.xml" parameter, you can modify your local ~/.m2/settings.xml file and add the above mentioned repositories, making sure they are active by default during a build.

That command takes a while -- we do have over 12K unit tests. So if need be, your builds can skip the tests:

$ mvn clean install -s settings.xml -DskipTests

If you have any trouble building (or don't like the '-s settings.xml' usage), check the detailed build instructions and tips.

Contribute fixes and features

ModeShape is open source, and we welcome anybody that wants to participate and contribute!

Before committing anything, PLEASE make sure you have set up all of the development tools (see http://community.jboss.org/wiki/ModeShapeDevelopmentTools), are following the project's guidelines (see http://community.jboss.org/wiki/ModeShapeDevelopmentGuidelines), and are using our accepted workflow (see http://community.jboss.org/wiki/ModeShapeDevelopmentWorkflow).

If you want to fix a bug or make any changes, please log an issue in the ModeShape JIRA describing the bug or new feature. Then we highly recommend making the changes on a topic branch named with the JIRA issue number. For example, this command creates a branch for the MODE-1234 issue:

$ git checkout -b mode-1234

After you're happy with your changes and a full build (with unit tests) runs successfully, commit your changes on your topic branch (using really good comments). Then it's time to check for and pull any recent changes that were made in the official repository:

$ git checkout master               # switches to the 'master' branch
$ git pull upstream master          # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git checkout mode-1234            # switches to your topic branch
$ git rebase master                 # reapplies your changes on top of the latest in master
                                      (i.e., the latest from master will be the new base for your changes)

If the pull grabbed a lot of changes, you should rerun your build to make sure your changes are still good. You can then either create patches (one file per commit, saved in ~/mode-1234) with

$ git format-patch -M -o ~/mode-1234 orgin/master

and upload them to the JIRA issue, or you can push your topic branch and its changes into your public fork repository

$ git push origin mode-1234         # pushes your topic branch into your public fork of ModeShape

and generate a pull-request for your changes.

We prefer pull-requests, because we can review the proposed changes, comment on them, discuss them with you, and likely merge the changes right into the official repository.

Something went wrong with that request. Please try again.