package Java::JCR; use strict; use warnings; use Carp; use File::Spec; our $VERSION = '0.08'; =head1 NAME Java::JCR - Use JSR 170 (JCR) repositories from Perl =head1 SYNOPSIS use Java::JCR; use Java::JCR::Jackrabbit; my $repository = Java::JCR::Jackrabbit->new; my $session = $repository->login( Java::JCR::SimpleCredentials->new('username', 'password') ); my $root = $session->get_root_node; my $node = $root->add_node('foo', 'nt:unstructured'); $node->set_property('bar', 10); $node->set_property('baz', 'blah'); $node->set_property('qux', 4.8'); $session->save; =head1 DESCRIPTION The JSR 170 specification describes a Java-based API for access hierarchical databases. This is generally referred to by the abbreviation JCR, which is an abbreviation for Content Repository API for Java Technology Specification. The biggest OSS implementation, as of this writing, is Jackrabbit, which is a project at the Apache Software Foundation, L. Currently, this library allows Perl programmers to develop using the JCR and Jackrabbit, though, there's no reason why connectors can't be written for other implementations, such as Jaceira, CRX, eXoplatform, etc. The JCR library wrappers included are not at all specific to Jackrabbit. =head1 JAVA DOCUMENTATION At this time, this library does not have documentation for any of the methods used. However, the Perl documentation included with each package links to the Java documentation for that package. That documentation can be used with this API by keeping the following in mind: =over =item * Each C package is mapped into the C namespace using Perl-style package names. =item * By loading the parent package, you load all nested packages. That is, by loading this package, L, you load every immediate sub-package under L, such as L, L, and L. If you want to access classes in one of the other packages, just load the parent. For example, if you want to load all the JCR classes, you need these bit of code: use Java::JCR; use Java::JCR::Lock; use Java::JCR::Nodetype; #