Day JCR Cup 2008

Day's JCR Cup 2008 has started! See JCR Cup Website.



There is a new kid on the block of (explorer-like) JCR tools: Craig Ching is currently developing a web browser-based application to visualize and edit contents of a Java Content Repository. The application is built upon the Dojo Toolkit and Apache Sling. It will probably make it into the standard Sling releases at some point (see the discussion on the mailing list).

Sling JCR Explorer is not quite ready for production use, but you can find a demo version here (today the site seems to be down, unfortunately). The nice use of Dojo's AJAX capabilities makes it indeed a worth a look.

I welcome this latest addition to the JCR tools arsenal as I do strongly believe that a good set of developer tools is essential for further adoption of JCR. In this context I have compiled a list of JCR tools for browsing repositories that I am aware of. I refrained from doing proper reviews since I am not really impartial. Please find the list below and leave a comment In case I missed a tool.

Web-based tools

CRX Explorer

The tool I spend most of my time with is Day's CRX Explorer that comes bundled with CRX and CRX Quickstart. Rumor has it that CRX Explorer might make its way into the Jackrabbit project.

JCR-Explorer

Hendrik Beck has developed a similar and feature-rich web-based application named JCR-Explorer. One particular useful feature is the ability to observe ongoing changes in the repository (leveraging JCR's observation features).

Hendrik used JSF (JBoss RichFaces) to build JCR-Explorer. It is open-sourced under the Apache License.

Eclipse-based tools

Day's Eclipse plugin

Day has provided an Eclipse plugin to connect to and manipulate Jackrabbit or CRX-based Content Repositories. The plugin can easily be installed through Eclipse's Update Manager. See the plugin's home page for instructions.

Nodes can be edited and changes be commited one by one. A full list of features is available in Eclipse's Help section once the plugion is installed (for the Catch-22 fans: there is also a section on how to install).

JCR Browser

Sandro Böhme has also written an Eclipse Plugin for viewing (but not editing) JCRs and open-sourced it under the Apache License.

In the project's own words:

Visualizes the content of a JSR 170 compliant Java content repository in Eclipse. It focuses on reliability by keeping the scope on displaying the content.

JCR Viewer

A second Eclipse Plugin focused on simply displaying nodes is Shailesh Mangal's appropriately named JCR Viewer. It seems to have been a by-product of developing the test management tool Zephyr which is based on JCR.

The binaries are available from his blog.

Others

JCR Controller

Jacco van Weert has developed a repository browser as a Java Web Start application (as such it sits somewhere inbetween web-based and Eclipse-based solutions).

JCR Controller is open sourced (LGPL license) and available at Sourceforge. To see it in action check out the project's home page.

I am happy to announce Day KB, the new source of Day product information and answers to common technical questions.

KB is a Wiki space that contains questions and their answers to common issues users run into when developing or authoring with our products. The basis for the existing content came out of Daycare tickets (that were reviewed and scrubbed to remove private information). New content will be added regularly by KB moderators. Please provide your ideas for new topics and articles, plus any feedback to the Day KB moderators at kb@day.com

Go to dev.day.com/kb, for the open access CRX space. From there, Day customers can log in to the Communiqué space with their existing docs.day.com user ID and password.

Working on a JRuby script that accesses a Java Content Repository I was missing a method on javax.jcr.Node that would return the whole subtree of child nodes. Ruby and the JRuby implementation allow to re-open classes and add new code. In that way one can easily extend even core classes (or interfaces as in this case):

JavaUtilities.extend_proxy("javax.jcr.Node") do
  def getAllNodes
	all = Array.new
	children = self.getNodes
	children.each {|child| all.push(child);
	             all.push(child.getAllNodes)}
	all.flatten
  end
end

This extends regular JCR nodes with a method getAllNodes that returns a flat array of all child nodes. Speaking of fixing issues one might have with existing objects: recently, I was unhappy with the fact that repository.getDescriptor( Repository.OPTION_OBSERVATION_SUPPORTED) returns a String instead of a Boolean because it makes me write code like:

if (repository.getDescriptor(
  Repository.OPTION_OBSERVATION_SUPPORTED)
  .equals("true"))

The fix is obviously:

JavaUtilities.extend_proxy("javax.jcr.Repository") do
  def getRealDescriptor(name)
    if self.getDescriptor(name) == "true" ||
      self.getDescriptor(name) == "false"
      self.getDescriptor(name) == "true"
    else
      self.getDescriptor(name)
    end		
  end
end

(Actually I wanted to use alias_method to redefine getDescriptor instead of defining a new method, but could not figure out how to do this on an interface. If you know it, please leave a comment.)

Following up to my statement that Day is closely related with the open source community I have compiled some facts to support this claim in this post. Broadly speaking Day's support for open source software and open standards can be divided into four areas:

1. Day Developers are OSS Developers

Day's developers are have contributed to a wide range of open source projects (either as part of their employment, in their spare time or before joining Day). The numbers are:

2. Work at the Apache Software Foundation

Day's developers contribute to the Apache Software Foundation (ASF) in a number of ways:

  • Day's Chief Scientist Dr. Roy T. Fielding is co-founder of the ASF and its former chairman.

  • Day developer Bertrand Delacretaz has been elected as one of nine members of the ASF's Board of Directors.

  • The ASF currently has 267 formally elected members of the nonprofit foundation. Membership is by invitation only. Candidates for membership are proposed by existing members, and voted upon by the existing membership. At the moment of those 267 members ten are Day employees.

  • Officers of The Apache Software Foundation oversee the day-to-day operations of the Foundation. The V.P.s are assigned to specific projects of the ASF. Currently, there are three V.Ps. that are Day employees: Roy T. Fielding (Apache HTTP Server), Jukka Zitting (Apache Jackrabbit) and Carsten Ziegeler (Apache Excalibur)

3. Open Source Projects

Day's commercial products for content management and content infrastructure are in their core based on two open source projects: the content repository Apache Jackrabbit and the web framework Apache Sling.

Day's developers have contributed to Jackrabbit's code base and also actively take part in the community (especially on Jackrabbit's mailing lists). As a company Day offers commercial services for Jackrabbit like consulting or implementation of customer-specific features.

Apache Sling is a web framework built upon the REST architectural style. In November 2007 Sling was open sourced. Previously, it was an internal project at Day. Hence, a very large part of the code base has so far been written by Day's developers.

Although Sling is a young project it has already won an award at Jax's innovation awards. Moreover, the OSGi console for managing OSGi bundles that was developed within the Sling project has been handed over to Apache's OSGi project Felix.

4. Open Standards

Open source software and open standards are related. Therefore, Day's employees actively contribute to the specification of open standards:

  • Day's CTO David Nüscheler has led the specification JSR-170 for Java Content Repositories (JCR). JCRs have gained broad acceptance in the open source community: there are four different open source implementation of the standard already. David is currently working on the successor JSR-283.

  • Chief Scientist Roy Fielding authored the standards for URIs (RFC 3986/STD 66) and HTTP (RFC 1945, 2068, 2616), and also contributed to early HTML (RFC 1866).

In this context one should also mention Roy's work on the REST architectural style. It is not a standard in itself, but serves as a blueprint for information architectures that are based on open standards.

Mule Galaxy 1.0 has been released 2 days ago. It is (in their own words)...

an open source governance platform with an integrated registry/repository. It includes versioning, lifecycle management, dependency management and policy enforcement features which enable you to effectively govern your applications and services

Galaxy uses JCR (Apache Jackrabbit) internally and Atom Publishing Protocol for custom integrations. As such it constitutes a nice example for JCR and APP complementing each other.

Another comment that is only slightly related: I just came across Galaxy developer Dan Diephouse's presentations on Effective RESTful services and AtomPub. Excellent stuff (and slide 40 of the first one made me lol).

  • PlanetDay

    The latest posts on PlanetDay

  • Links on Daigg

  • Day developers on Ohloh

    ohloh profile for Alexander Klimetschek ohloh profile for Alexander Saar ohloh profile for angela ohloh profile for Bertrand Delacretaz ohloh profile for cziegeler ohloh profile for david.nuescheler ohloh profile for dpfister ohloh profile for fmeschbe ohloh profile for Jean-Michel Pittet ohloh profile for Jukka Zitting ohloh profile for Lars Trieloff ohloh profile for Marcel ohloh profile for mduerig ohloh profile for Roy T. Fielding ohloh profile for stefan guggisberg ohloh profile for Thomas Mueller ohloh profile for Tobias Bocanegra