Date: 2005-02-07T11:45:15
Editor: JeremyQuinn
Wiki: Cocoon Wiki
Page: ReadWriteToSVN
URL: http://wiki.apache.org/cocoon/ReadWriteToSVN
added first version
New Page:
= Reading and writing to SVN using SSL. =
This is how to set up your system so that you can read content directly from a
Subversion repository, retrieving the latest version and also write to the
repository, updating the current version, using a Cocoon Source.
We needed to take the following steps with Cocoon 2.1.7-dev to make all of this
work (not tested in the 2.1.6 release).
== Install the CA cert in the JVM ==
If you are using a self-signed certificate, you first you need to install your
Certificate Authority certificate into the JVM of the machine running Cocoon.
For this sample, I used the same .pem file that was installed in
/etc/ssl/cacert.pem in our installation. Your certificate may have a different
name and location.
{{{
$sudo keytool -import -trustcacerts -alias "Our CA" -file cacert.pem \
-keystore $JAVA_HOME/lib/security/cacerts -storepass **********
}}}
'''NB'''. depending on your system, your keystores may be at a different
location. This works with MacOSX.
'''NB'''. Theoretically, we only needed to perform this step because we were
using a self-signed certificate.
More information about self-signed certificates can be found
[http://www.mail-archive.com/[email protected]/msg19108.html here]
== Turn on auto versioning in httpd ==
Auto versioning needs to be turned on if you want to use a Cocoon Source to
write changes back to the repository, for example, if you were implementing an
online editor.
Add the following instruction to the appropriate place in your Apache
httpd.conf file:
{{{
SVNAutoversioning on
}}}
== Revert Slide Libs ==
There are currently bugs in the Slide WebDAV jar that are distributed with
Cocoon (as of 7th Feb 2005).
We needed to replace WEB-INF/lib/jakarta-slide-webdavlib-2.1.jar with
WEB-INF/lib/jakarta-slide-webdavlib-2.1M1.jar.
== Define webdavs:// source ==
You will be using an extension of the webdav:// pseudo protocol, wabdavs://,
for accessing the secured Subversion repository, this needs to be configured in
cocoon.xconf.
Add the following to your cocoon.xconf, a good place is right after the
existing definition of the webdav:// source.
{{{
<component-instance
class="org.apache.cocoon.components.source.impl.WebDAVSourceFactory"
name="webdavs">
<parameter name="secure" value="true"/>
</component-instance>
}}}
== Use webdavs source ==
Now you are in a position to access content from the Subversion repository.
To generate content from a resource in the repository, I used a pipeline like
this:
{{{
<map:generate src="webdavs://svn.mydomain.org/myrepository/myfile.xml" />
}}}
I could also generate a collection listing from the repository, using one of
the traversable generators like this:
{{{
<map:generate src="webdavs://svn.mydomain.org/myrepository/"
type="traversable">
<map:parameter name="depth" value="1"/>
</map:generate>
}}}
The exact parameters depend on which traversable generator you are using.
We were able to write updated content to the repository by using typical
techniques in Flow Script ..... resolving the source, and streaming a DOM to it
the same that you would use to write to any modifiable source.
Many thanks for all of those people who gave us the advise we needed to get all
of this working !!!