Day JCR Cup 2008
Day's JCR Cup 2008 has started! See JCR Cup Website.
Jul
03
JCR Tools Roundup
filed under jcr tools | posted by Michael Marth | add a comment
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
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.
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 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).
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.
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
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.
Jul
03
[ANN] Day Knowledge Base
filed under announcements | posted by Kia Puhm | add a comment
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.
Jul
02
Extending JCR with JRuby
filed under dynamic languages | posted by Michael Marth | add a comment
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.)
Jul
02
On Day and Open Source
filed under open apache | posted by Michael Marth | add 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:
75% of the developers working for Day have commiter status in at least one open source poject.
There are at least 25 open source projects where developers working for Day have commiter status: Apache Jackrabbit, Apache Sling, Apache Felix, HSQL Database Engine, H2 Database Engine, MP3Transform, Quaere, Apache Cocoon, Apache FOP, Solr, Apache Tika, Apache Forrest, Apache Gump, Apache HTTP Server, Apache Portable Runtime, Apache mod_ftp, Midgard, Miki, Exorcist, Yukatan Webmail, Mindquarry Collaboration Server, Mindquarry Desktop, PaSaMuF, Apache Excalibur, and Apache Pluto.
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.
Jul
02
[LOTD] Mule, APP, JCR
filed under atom jcr atompub | posted by Michael Marth | add a comment
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).
