Author: rhauch
Date: 2009-04-30 18:11:02 -0400 (Thu, 30 Apr 2009)
New Revision: 870
Modified:
trunk/docs/gettingstarted/src/main/docbook/en-US/content/custom_sequencers.xml
trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml
trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml
trunk/docs/reference/src/main/docbook/en-US/content/jcr.xml
trunk/docs/reference/src/main/docbook/en-US/content/repositories.xml
trunk/docs/reference/src/main/docbook/en-US/content/testing.xml
trunk/docs/reference/src/main/docbook/en-US/custom.dtd
trunk/docs/reference/src/main/docbook/en-US/master.xml
trunk/pom.xml
Log:
DNA-385 Documentation Updates for 0.4
Reviewed and edited both documents to bring everything up to the current state of the
code. Most parts were still accurate, but there were a number of places there were minor
changes and quite a few sections that needed more work.
Pending errors or other changes/suggestions, the docs are complete and accurate for this
release.
Modified: trunk/docs/gettingstarted/src/main/docbook/en-US/content/custom_sequencers.xml
===================================================================
---
trunk/docs/gettingstarted/src/main/docbook/en-US/content/custom_sequencers.xml 2009-04-30
18:18:49 UTC (rev 869)
+++
trunk/docs/gettingstarted/src/main/docbook/en-US/content/custom_sequencers.xml 2009-04-30
22:11:02 UTC (rev 870)
@@ -73,12 +73,12 @@
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-common</artifactId>
- <version>0.1</version>
+ <version>0.4</version>
</dependency>
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-graph</artifactId>
- <version>0.1</version>
+ <version>0.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -122,7 +122,7 @@
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-repository</artifactId>
- <version>0.1</version>
+ <version>0.4</version>
<scope>test</scope>
</dependency>
<!-- Java Content Repository API -->
@@ -136,7 +136,7 @@
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-api</artifactId>
- <version>1.3.3</version>
+ <version>1.4</version>
<scope>test</scope>
<!-- Exclude these since they are included in JDK 1.5 -->
<exclusions>
@@ -153,7 +153,7 @@
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-core</artifactId>
- <version>1.3.3</version>
+ <version>1.4.5</version>
<scope>test</scope>
<!-- Exclude these since they are included in JDK 1.5 -->
<exclusions>
Modified: trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
===================================================================
---
trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml 2009-04-30
18:18:49 UTC (rev 869)
+++
trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml 2009-04-30
22:11:02 UTC (rev 870)
@@ -45,9 +45,10 @@
</sect1>
<sect1 id="architecture">
<title>Architecture</title>
- <para>The architecture for JBoss DNA consists of several major components that
will be built on top of standard APIs,
+ <para>The planned architecture for JBoss DNA consists of several major
components that will be built on top of standard APIs,
including JCR, JDBC, JNDI and HTTP. The goal is to allow these components to be
assembled as needed and add value on top
- of other DNA components or third-party systems that support these standard
APIs.</para>
+ of other DNA components or third-party systems that support these standard APIs.
Not all of these components exist
+ yet - at the moment we're focusing on completing our JCR-compliant
implementation using our connector framework.</para>
<mediaobject>
<imageobject role="fo">
<imagedata align="center" fileref="dna-architecture.png"
/>
@@ -57,18 +58,87 @@
</imageobject>
</mediaobject>
<para>
- As shown in the diagram above, the major components are (starting at the top):
+ Let's go over each of these components, starting from the bottom of the
diagram:
<itemizedlist>
<listitem>
<para>
+ <emphasis role="strong">DNA Connectors</emphasis>
+ are used to communicate with these external sources of information, whether
there's one source (like a database) in
+ which all of the content is stored, or information is being federated from
multiple sources. The connector's
+ job is to interact with the external source and map the source's information
into the lower-level graph language used by
+ JBoss DNA. Connectors also may optionally participate in distributed transactions
by exposing an XAResource.
+ In summary, then, the connector API isolates all of the other components from how
the graph are persisted.
+ We've built a number of connectors already, but we're always interested in
adding more. Or, you could write your own,
+ since we've designed the connector API to be as straightforward as possible.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Federation</emphasis>
+ is actually special repository connector that accesses information from
multiple other sources via connectors,
+ making all this information look like it is part of a single, unified graph.
Because it is a connector,
+ it can be used wherever connectors can be used. And because it uses connectors,
the federation connector
+ makes it possible to integrate a wide variety of external systems, like other JCR
+ repositories, databases, applications, and services.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA JCR</emphasis>
+ is an implementation of the JCR API that accesses the content from a single
connector. Our implementation has come a long
+ with in the 0.4 release, and is nearly Level 1 and Level 2 compliant. Finishing
the remaining features, including search
+ and query, are major objectives of our next release.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Sequencers</emphasis>
+ are pluggable components that automatically process content (typically files)
that are uploaded into the repository,
+ looking for useful structure and information in that content. When a file is
uploaded to the repository, JBoss DNA automatically
+ figures out which sequencer(s) should be run, and then runs them. Each sequencer,
then, extracts the meaningful information
+ from the file's content and places that structure in the repository. Once this
information is in
+ the repository, it can be viewed, edited, analyzed, searched, and related to
other content. DNA defines a Java
+ interface that sequencers must implement. DNA sequencers operate upon any
JCR-compliant repository.
+ We have a number of sequencers, but plan on adding more over time. Like
connectors, the Sequencer API makes it very
+ simple to write sequencers for your own file types.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Analyses</emphasis>
+ are similar to sequencers, except they process the graph structure rather
than uploaded files. You can think of them
+ as report generators, where they process some area of the repository and generate
output. The output doesn't take the
+ form of a document or file, but rather more graph content that is then stored in
the repository, where it can be accessed
+ and searched just like any other content. We're still figuring out how to best
make analyzers easy to write and use,
+ and have been focused on other aspects of the architecture. But we're planning
on using analyzers for dependency,
+ similarity, and statistical analyses.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Maven</emphasis>
+ is a classloader library compatible with Maven 2 project dependencies. This
allows the creation of Java ClassLoader
+ instances using Maven 2 style paths, and all dependencies are transitively
managed and included. This exists but is
+ still immature.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The remaining parts of the architecture haven't yet been started, but they service
important purposes for a complete metadata
+ repository system.
+ <itemizedlist>
+ <listitem>
+ <para>
<emphasis role="strong">DNA Eclipse Plugins</emphasis>
- enable Eclipse users to access the contents of a JBoss DNA repository.
+ enable Eclipse users to access the contents of a JBoss DNA repository. This
is a planned component that may be started soon.
</para>
</listitem>
<listitem>
<para>
<emphasis role="strong">DNA JDBC Driver</emphasis>
provides a driver implementation, allowing JDBC-aware applications to connect
to and use a JBoss DNA repository.
+ This is a planned component on our roadmap.
</para>
</listitem>
<listitem>
@@ -106,74 +176,19 @@
</listitem>
<listitem>
<para>
- <emphasis role="strong">DNA Sequencers</emphasis>
- are pluggable components that make it possible for content to be uploaded to
the repository and automatically
- processed to extract meaningful structure and place that structure in the
repository. Once this information is in
- the repository, it can be viewed, edited, analyzed, searched, and related to
other content. DNA defines a Java
- interface that sequencers must implement. DNA sequencers operate upon any
JCR-compliant repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Analyses</emphasis>
- are pluggable components that analyze content and the relationships between
content to generate reports or to answer
- queries. DNA will include some standard analyzers, like dependency analysis
and similarity analysis, that are
- commonly needed by many different solutions. DNA analyzers operate upon any
JCR-compliant repository.
- </para>
- </listitem>
- <listitem>
- <para>
<emphasis role="strong">DNA Views</emphasis>
are definitions of how types of information are to be presented in a user
interface to allow for creation, reading,
editing, and deletion of information. DNA view definitions consist of data
stored in a JCR repository, and as such
views can be easily added, changed or removed entirely by using the DNA Web
Application, requiring no programming.
</para>
</listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Repositories</emphasis>
- is an implementation of the JCR API that builds the content within the
repository by accessing and integrating
- information from one or more sources.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Federation</emphasis>
- is a special repository connector that accesses information from multiple
sources and makes it accessible
- as if it were a single repository. DNA Federation allows the integration of
external systems, like other JCR
- repositories, databases, applications, and services.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Connectors</emphasis>
- are used to communicate with these external sources of information. In the
federation engine, each source is able to
- contribute node structure and node properties to any part of the federated
graph, although typically many connectors
- will contribute most of their information to isolated subgraphs. The result
is that integration from a wide range of
- systems can be integrated and accessed through the DNA Web Application, DNA
Publishing Server, and DNA WebDAV
- Server. Connectors also may optionally participate in distributed
transactions by exposing an XAResource.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Maven</emphasis>
- is a classloader library compatible with Maven 2 project dependencies. This
allows the creation of Java ClassLoader
- instances using Maven 2 style paths, and all dependencies are transitively
managed and included.
- </para>
- </listitem>
</itemizedlist>
</para>
<para>
Continue reading the rest of this chapter for more detail about the
- <link linkend="sequencers">sequencing framework</link>
- available in this release, or the
- <link linkend="federation">federation engine</link>
- and
- <link linkend="federation_connectors">connectors</link>
- that will be the focus of the next release. Or, skip to the
- <link linkend="downloading_and_running">examples</link>
- to see how to start using JBoss DNA &versionNumber;
- today.
+ <link linkend="sequencers">sequencing framework</link>
available in this release, or the <link linkend="federation">federation
engine</link>
+ and <link linkend="federation_connectors">connectors</link>.
Or, skip to the <link
linkend="downloading_and_running">examples</link>
+ to see how to start using JBoss DNA &versionNumber; today.
</para>
</sect1>
<sect1 id="sequencers">
@@ -190,7 +205,7 @@
policies, UML, MetaMatrix models, etc.</para>
<para>
JBoss DNA sequencers sit on top of existing JCR repositories (including federated
repositories) - they basically extract
- more useful information from what's already stored in the repository. And they
use the existing JCR versioning system. Each
+ more useful information from what's already stored in the repository. And they
use the existing JCR event and versioning system. Each
sequencer typically processes a single kind of file format or a single kind of
content. </para>
<para>The following sequencers are included in JBoss DNA:
<itemizedlist>
@@ -201,9 +216,7 @@
writes that image metadata to the repository. It gets the file format, image
resolution, number of bits per pixel
(and optionally number of images), comments and physical resolution from
JPEG, GIF, BMP, PCX, PNG, IFF, RAS, PBM,
PGM, PPM, and PSD files. (This sequencer may be improved in the future to
also extract EXIF metadata from JPEG
- files; see
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-26">DNA-26</ul...
- .)
+ files; see <ulink
url="http://jira.jboss.org/jira/browse/DNA-26">DNA-26</ulink>.)
</para>
</listitem>
<listitem>
@@ -212,10 +225,41 @@
- A sequencer that processes the contents of an MP3 audio file, extracts the
metadata for the file, and then
writes that image metadata to the repository. It gets the title, author,
album, year, and comment.
(This sequencer may be improved in the future to also extract other ID3
metadata from other audio file formats; see
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-66">DNA-26</ul...
- .)
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-66">DNA-66</ulink>.)
</para>
</listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">ZIP Archive
Sequencer</emphasis>
+ - Process ZIP archive files to extract (explode) the contents into the
repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Java Source File
Sequencer</emphasis>
+ - Process Java source files to extract the class structure (including
annotations) into the repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">XML File Sequencer</emphasis>
+ - Process XML files to extract the structure into the repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Microsoft Office File
Sequencer</emphasis>
+ - Process Microsoft Office documents, spreadsheets, and presentation files to
extract their basic structure.
+ For example, the sequencer extracts the outline of a document, or the title and
outline of a presentation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">JCR Compact Node Definition (CND)
File Sequencer</emphasis>
+ - Process the CND files defined by JCR, extracting the various node types
with their property definitions and child
+ node definitions.
+ </para>
+ </listitem>
</itemizedlist>
</para>
<para>
@@ -224,6 +268,16 @@
<itemizedlist>
<listitem>
<para>
+ <emphasis role="strong">Data Definition Language (DDL)
Sequencer</emphasis>
+ - Process various dialects of DDL, including that from Oracle, SQL Server,
MySQL, PostgreSQL, and others. May need
+ to be split up into a different sequencer for each dialect. This sequencer is
being developed as part of a
+ Google Summer of Code 2009 project. (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-26">DNA-26</ul...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
<emphasis role="strong">XML Schema Document (XSD)
Sequencer</emphasis>
- Process XSD files and extract the various elements, attributes, complex
types, simple types, groups, and other
information. (See
@@ -259,14 +313,6 @@
</listitem>
<listitem>
<para>
- <emphasis role="strong">ZIP Archive
Sequencer</emphasis>
- - Process ZIP archive files to extract (explode) the contents into the
repository. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-63">DNA-63</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
<emphasis role="strong">Java Archive (JAR)
Sequencer</emphasis>
- Process JAR files to extract (explode) the contents into the classes and
file resources. (See
<ulink
url="http://jira.jboss.org/jira/browse/DNA-64">DNA-64</ul...
@@ -284,14 +330,6 @@
</listitem>
<listitem>
<para>
- <emphasis role="strong">Java Source File
Sequencer</emphasis>
- - Process Java source files to extract the class structure (including
annotations) into the repository. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-51">DNA-51</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
<emphasis role="strong">PDF Sequencer</emphasis>
- Process PDF files to extract the document metadata, including table of
contents. (See
<ulink
url="http://jira.jboss.org/jira/browse/DNA-50">DNA-50</ul...
@@ -309,15 +347,6 @@
</listitem>
<listitem>
<para>
- <emphasis role="strong">Data Definition Language (DDL)
Sequencer</emphasis>
- - Process various dialects of DDL, including that from Oracle, SQL Server,
MySQL, PostgreSQL, and others. May need
- to be split up into a different sequencer for each dialect. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-26">DNA-26</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
<emphasis role="strong">MP3 and MP4
Sequencer</emphasis>
- Process MP3 and MP4 audio files to extract the name of the song, artist,
album, track number, and other metadata.
(See
@@ -342,7 +371,7 @@
to access that information as if it were all stored in a single JCR repository, but
to really leave the information where
it is.</para>
<para>Why not just copy or move the information into a JCR repository? Moving
it is probably pretty difficult, since most
- likely there are existing applications that rely upon that information being where it
is. All of those applications
+ likely existing applications rely upon that information being where it is. All of
those applications
would break or have to change. And copying the information means that we'd have
to continually synchronize the changes.
This not only is a lot of work, but it often creates issues with knowing which
information is accurate.
</para>
@@ -500,11 +529,6 @@
(and possibly rewritten) such that it can be pushed down to all the appropriate
sources. Also, the cached results must
be consulted prior to returning the query results, as the results from one source
might have contributions from another
source.</para>
- <note>
- <para> It is hoped that the MetaMatrix query engine can be used for this
purpose after it is open-sourced. This engine
- implements sophisticated query planning and optimization techniques for working
efficiently with multiple sources.
- </para>
- </note>
<para>Searching the whole federated repository is also important. This allows
users to simply supply a handful of
search terms, and to get results that are ranked based upon how close each result
is to the search terms. (Searching is
very different from querying, which involves specifying the exact semantics of
what is to be searched and how the
Modified: trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml
===================================================================
--- trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml 2009-04-30 18:18:49 UTC
(rev 869)
+++ trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml 2009-04-30 22:11:02 UTC
(rev 870)
@@ -25,9 +25,9 @@
~ Boston, MA 02110-1301 USA
-->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY versionNumber "0.3">
-<!ENTITY copyrightYear "2008">
-<!ENTITY copyrightHolder "Red Hat Middleware, LLC.">
+<!ENTITY versionNumber "0.4">
+<!ENTITY copyrightYear "2008-2009">
+<!ENTITY copyrightHolder "Red Hat, Inc.">
]>
<book lang="en">
<bookinfo>
@@ -35,7 +35,7 @@
<subtitle>Getting Started Guide</subtitle>
<releaseinfo>&versionNumber;</releaseinfo>
<productnumber>&versionNumber;</productnumber>
- <issuenum>1</issuenum>
+ <issuenum>4</issuenum>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="dna-logo.png" align="center"/>
Modified: trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml 2009-04-30
18:18:49 UTC (rev 869)
+++ trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml 2009-04-30
22:11:02 UTC (rev 870)
@@ -170,7 +170,7 @@
</para>
<para>
The <emphasis>JBoss DNA project</emphasis>
- is building unified metadata repository system that is compliant with JCR. Nearly
all of these capabilities are to be hidden
+ is building unified metadata repository system that will be compliant with JCR.
Nearly all of these capabilities are to be hidden
below the JCR API and involve automated processing of the information in the
repository. Thus, JBoss DNA can add value to
existing repository implementations. For example, JCR repositories offer the ability
to upload files into the repository and
have the file content indexed for search purposes. JBoss DNA also defines a library
for "sequencing" content - to extract
Modified: trunk/docs/reference/src/main/docbook/en-US/content/jcr.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/jcr.xml 2009-04-30 18:18:49 UTC
(rev 869)
+++ trunk/docs/reference/src/main/docbook/en-US/content/jcr.xml 2009-04-30 22:11:02 UTC
(rev 870)
@@ -101,6 +101,15 @@
</programlisting>
</sect1>
<sect1>
+ <title>JCR Support</title>
+ <para>
+ JBoss DNA currently supports most of the Level 1 and Level 2 feature set defined by
the <ulink url="&JSR170;">JSR-170</ulink> specification.
+ Queries, which are part of Level 1, are not implemented, nor are all of the update
methods that make up Level 2.
+ So while the current implementation provides many of the features that may be needed
by an application, we really hope
+ that this release will allow you to give us some feedback on what we have so far.
+ </para>
+ </sect1>
+ <sect1>
<title>Summary</title>
<para>
In this chapter, we covered how to use JCR with JBoss DNA. Now that you know how
JBoss DNA repositories work,
Modified: trunk/docs/reference/src/main/docbook/en-US/content/repositories.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/repositories.xml 2009-04-30
18:18:49 UTC (rev 869)
+++ trunk/docs/reference/src/main/docbook/en-US/content/repositories.xml 2009-04-30
22:11:02 UTC (rev 870)
@@ -167,6 +167,24 @@
<link linkend="connector-library">existing connectors</link> and
show how to <link linkend="custom-connectors">create your own
connectors</link>.
</para>
</sect1>
+ <sect1 id="repository-workspaces">
+ <title>Workspaces</title>
+ <para>The previous section talked about how connector expose their information
through the graph language of JBoss DNA.
+ This is true, except that we didn't dive into too much of the detail. JBoss DNA
graphs have the notion of <emphasis>workspaces</emphasis>
+ in which the content appears, and its very easy for clients using the graph to switch
between workspaces. In fact,
+ workspaces differ from each other in that they provide different views of the same
information.
+ </para>
+ <para>Consider a source control system, like SVN or CVS. These systems provide
different views of the source code:
+ a mainline development branch as well as other branches (or tags) commonly used for
releases. So, just like one source
+ file might appear in the mainline branch as well as the previous two release branches,
a node in a repository source
+ might appear in multiple workspaces.
+ </para>
+ <para>
+ However, each connector can kind of decide how (or whether) it uses workspaces. For
example, there may be no overlap
+ in the content between workspaces. Or a connector might only expose a single
workspace (in other words, there's only one
+ "default" workspace).
+ </para>
+ </sect1>
<sect1 id="repository-service">
<title>Repository Service</title>
<para>The JBoss DNA &RepositoryService; is the component that manages the
<emphasis>repository sources</emphasis>
@@ -309,6 +327,11 @@
cached by other, higher-level components. The default value of null implies that
this source does not define a specific
duration for caching information provided by this repository
source.</entry>
</row>
+ <row>
+ <entry>defaultWorkspaceName</entry>
+ <entry>Optional property that is initialized to an empty string and which
defines the name for the workspace that will be used by default
+ if none is specified.</entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -373,6 +396,19 @@
cached by other, higher-level components. The default value of null implies that
this source does not define a specific
duration for caching information provided by this repository
source.</entry>
</row>
+ <row>
+ <entry>nameOfDefaultWorkspace</entry>
+ <entry>Optional property that is initialized to an empty string and which
defines the name for the workspace that will be used by default
+ if none is specified.</entry>
+ </row>
+ <row>
+ <entry>predefinedWorkspaceNames</entry>
+ <entry>Optional property that defines the names of the workspaces that exist
and that are available for use without having to create them.</entry>
+ </row>
+ <row>
+ <entry>creatingWorkspacesAllowed</entry>
+ <entry>Optional property that is by default 'true' that defines
whether clients can create new workspaces.</entry>
+ </row>
</tbody>
</tgroup>
</table>
@@ -422,22 +458,25 @@
cache and federated sources. This graph structure that is expected at this location
is as follows:
</para>
<programlisting><![CDATA[<!-- Define the federation configuration. -->
-<dna:federation
xmlns:dna="http://www.jboss.org/dna"
+<dna:federatedRepository
xmlns:dna="http://www.jboss.org/dna"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
dna:timeToCache="100000" >
- <!-- Define how the content in the 'Cache' source is to map to the
federated cache -->
- <dna:cache>
- <dna:projection jcr:name="Cache" dna:projectionRules="/ =>
/" />
- </dna:cache>
- <!-- Define how the content in the two sources maps to the federated/unified
repository.
- This example puts the 'Cars' and 'Aircraft' content underneath
'/vehicles', but the
- 'Configuration' content (which is defined by this file) will appear
under '/'. -->
- <dna:projections>
+ <dna:workspaces>
+ <dna:workspace jcr:name="default">
+ <!-- Define how the content in the 'Cache' source is to map to the
federated cache -->
+ <dna:cache dna:sourceName="Cache"
dna:workspaceName="default" dna:projectionRules="/a => /" />
+
+ <!-- Define how the content in the two sources maps to the federated/unified
repository.
+ This example puts the 'Cars' and 'Aircraft' content underneath
'/vehicles', but the
+ 'Configuration' content (which is defined by this file) will appear
under '/'. -->
+ <dna:projections>
<dna:projection jcr:name="Cars" dna:projectionRules="/Vehicles
=> /" />
<dna:projection jcr:name="Aircraft"
dna:projectionRules="/Vehicles => /" />
<dna:projection jcr:name="Configuration" dna:projectionRules="/
=> /" />
- </dna:projections>
-</dna:federation>
+ </dna:projections>
+ </dna:workspace>
+ </dna:workspaces>
+</dna:federatedRepository>
]]></programlisting>
<note>
<para>
@@ -488,6 +527,11 @@
&RepositoryLibrary;.</entry>
</row>
<row>
+ <entry>configurationWorkspaceName</entry>
+ <entry>The name of the workspace in the configuration &RepositorySource;
with the content defining
+ how this federated repository is to be set up and configured.</entry>
+ </row>
+ <row>
<entry>configurationSourcePath</entry>
<entry>The path to the node in the configuration repository below which a
"dna:federation" node exists with the
graph structure describing how this federated repository is to be
configured.</entry>
@@ -601,7 +645,7 @@
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-graph</artifactId>
- <version>0.3</version>
+ <version>0.4</version>
</dependency>
]]></programlisting>
<para>
@@ -616,14 +660,14 @@
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-graph</artifactId>
- <version>0.3</version>
+ <version>0.4</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.dna</groupId>
<artifactId>dna-common</artifactId>
- <version>0.3</version>
+ <version>0.4</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -907,7 +951,7 @@
information, although the connector should still perform as expected when requests
have incomplete locations.
</para>
<table frame='all'>
- <title>Types of Requests</title>
+ <title>Types of Node Operation Requests</title>
<tgroup cols='2' align='left' colsep='1'
rowsep='1'>
<colspec colname='c1' colwidth="1*"/>
<colspec colname='c2' colwidth="1*"/>
@@ -921,62 +965,76 @@
<row>
<entry>ReadNodeRequest</entry>
<entry>
- A request to read from the source a node's properties and children.
+ A request to read from the named workspace in the source a node's properties
and children.
The node may be specified by path and/or by identification properties.
The connector returns all properties and the locations for all children,
- or sets a &PathNotFoundException; error on the request if the node did not
exist.
+ or sets a &PathNotFoundException; error on the request if the node did not
exist in the workspace.
If the node is found, the connector sets on the request the actual location of
the node (including the path and identification properties).
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
+ <entry>VerifyNodeExistsRequest</entry>
+ <entry>
+ A request to verify the existance of a node at the specified location in the
named workspace of the source.
+ The connector returns all the actual location for the node if it exists, or
+ sets a &PathNotFoundException; error on the request if the node does not
exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
+ </entry>
+ </row>
+ <row>
<entry>ReadAllPropertiesRequest</entry>
<entry>
- A request to read from the source all of the properties of a node.
+ A request to read from the named workspace in the source all of the properties of
a node.
The node may be specified by path and/or by identification properties.
The connector returns all properties that were found on the node,
- or sets a &PathNotFoundException; error on the request if the node did not
exist.
+ or sets a &PathNotFoundException; error on the request if the node did not
exist in the workspace.
If the node is found, the connector sets on the request the actual location of
the node (including the path and identification properties).
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
<entry>ReadPropertyRequest</entry>
<entry>
- A request to read from the source a single property of a node.
+ A request to read from the named workspace in the source a single property of a
node.
The node may be specified by path and/or by identification properties,
and the property is specified by name.
The connector returns the property if found on the node,
- or sets a &PathNotFoundException; error on the request if the node or
property did not exist.
+ or sets a &PathNotFoundException; error on the request if the node or
property did not exist in the workspace.
If the node is found, the connector sets on the request the actual location of
the node (including the path and identification properties).
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
<entry>ReadAllChildrenRequest</entry>
<entry>
- A request to read from the source all of the children of a node.
+ A request to read from the named workspace in the source all of the children of a
node.
The node may be specified by path and/or by identification properties.
The connector returns an ordered list of locations for each child found on the
node,
an empty list if the node had no children,
- or sets a &PathNotFoundException; error on the request if the node did not
exist.
+ or sets a &PathNotFoundException; error on the request if the node did not
exist in the workspace.
If the node is found, the connector sets on the request the actual location of
the parent node (including the path and identification properties).
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
<entry>ReadBlockOfChildrenRequest</entry>
<entry>
- A request to read from the source a block of children of a node, starting with
the n<superscript>th</superscript> children.
+ A request to read from the named workspace in the source a block of children of a
node, starting with the n<superscript>th</superscript> children.
This is designed to allow paging through the children, which is much more
efficient for large numbers of children.
The node may be specified by path and/or by identification properties, and the
block
is defined by a starting index and a count (i.e., the block size).
The connector returns an ordered list of locations for each of the node's
children found in the block,
or an empty list if there are no children in that range.
The connector also sets on the request the actual location of the parent node
(including the path and identification properties)
- or sets a &PathNotFoundException; error on the request if the parent node did
not exist.
+ or sets a &PathNotFoundException; error on the request if the parent node did
not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
<entry>ReadNextBlockOfChildrenRequest</entry>
<entry>
- A request to read from the source a block of children of a node, starting with
the children that immediately follow
+ A request to read from the named workspace in the source a block of children of a
node, starting with the children that immediately follow
a previously-returned child.
This is designed to allow paging through the children, which is much more
efficient for large numbers of children.
The node may be specified by path and/or by identification properties, and the
block
@@ -984,7 +1042,8 @@
The connector returns an ordered list of locations for each of the node's
children found in the block,
or an empty list if there are no children in that range.
The connector also sets on the request the actual location of the parent node
(including the path and identification properties)
- or sets a &PathNotFoundException; error on the request if the parent node did
not exist.
+ or sets a &PathNotFoundException; error on the request if the parent node did
not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -997,7 +1056,8 @@
nodes found in the branch.
The connector also sets on the request the actual location of the branch's
root node (including the path and identification properties).
The connector sets a &PathNotFoundException; error on the request if the node
at
- the top of the branch does not exist.
+ the top of the branch does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1009,7 +1069,8 @@
will have their SNS indexes adjusted. However, if the requested location does
not include a SNS index, the new
node is added after all existing children, and it's SNS index is set
accordingly.)
The connector also sets on the request the actual location of the new node
(including the path and identification properties)..
- The connector sets a &PathNotFoundException; error on the request if the
parent node does not exist.
+ The connector sets a &PathNotFoundException; error on the request if the
parent node does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1018,7 +1079,8 @@
A request to remove a set of properties on an existing node. The request
contains the location of the node as well as the
names of the properties to be removed. The connector performs these changes and
sets on the request the
actual location (including the path and identification properties) of the node.
- The connector sets a &PathNotFoundException; error on the request if the node
does not exist.
+ The connector sets a &PathNotFoundException; error on the request if the node
does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1027,7 +1089,8 @@
A request to set or update properties on an existing node. The request contains
the location of the node as well as the
properties to be set and those to be deleted. The connector performs these
changes and sets on the request the
actual location (including the path and identification properties) of the node.
- The connector sets a &PathNotFoundException; error on the request if the node
does not exist.
+ The connector sets a &PathNotFoundException; error on the request if the node
does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1036,19 +1099,23 @@
A request to change the name of a node. The connector changes the node's
name, adjusts all SNS indexes
accordingly, and returns the actual locations (including the path and
identification properties) of both the original
location and the new location.
- The connector sets a &PathNotFoundException; error on the request if the node
does not exist.
+ The connector sets a &PathNotFoundException; error on the request if the node
does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
<entry>CopyBranchRequest</entry>
<entry>
A request to copy a portion of a subgraph that has as its root a particular node,
up to a maximum depth.
+ The request includes the name of the workspace where the original node is located
as well as the name of the
+ workspace where the copy is to be placed (these may be the same, but may be
different).
The connector copies the branch from the original location, up to the specified
maximum depth, and places a copy
of the node as a child of the new location.
The connector also sets on the request the actual location (including the path
and identification properties)
of the original location as well as the location of the new copy.
The connector sets a &PathNotFoundException; error on the request if the node
at
- the top of the branch does not exist.
+ the top of the branch does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if one
of the named workspaces does not exist.
</entry>
</row>
<row>
@@ -1059,7 +1126,8 @@
The connector also sets on the request the actual location (including the path
and identification properties)
of the original and new locations. The connector will adjust SNS indexes
accordingly.
The connector sets a &PathNotFoundException; error on the request if the node
that is to be moved or the
- new location do not exist.
+ new location do not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1068,7 +1136,8 @@
A request to delete an entire branch specified by a single node's location.
The connector deletes the specified node and all nodes below it, and sets the
actual location,
including the path and identification properties, of the node that was deleted.
- The connector sets a &PathNotFoundException; error on the request if the node
being deleted does not exist.
+ The connector sets a &PathNotFoundException; error on the request if the node
being deleted does not exist in the workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
</entry>
</row>
<row>
@@ -1082,6 +1151,60 @@
</tbody>
</tgroup>
</table>
+ <para>There are also requests that deal with workspaces:</para>
+ <table frame='all'>
+ <title>Types of Workspace Requests</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>GetWorkspacesRequest</entry>
+ <entry>
+ A request to obtain the names of the existing workspaces that are accessible to
the caller.
+ </entry>
+ </row>
+ <row>
+ <entry>VerifyWorkspaceRequest</entry>
+ <entry>
+ A request to verify that a workspace with a particular name exists.
+ The connector returns the actual location for the root node if the workspace
exists, as well as the actual name of the workspace
+ (e.g., the default workspace name if a null name is supplied).
+ </entry>
+ </row>
+ <row>
+ <entry>CreateWorkspaceRequest</entry>
+ <entry>
+ A request to create a workspace with a particular name.
+ The connector returns the actual location for the root node if the workspace
exists, as well as the actual name of the workspace
+ (e.g., the default workspace name if a null name is supplied).
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace already exists.
+ </entry>
+ </row>
+ <row>
+ <entry>DestroyWorkspaceRequest</entry>
+ <entry>
+ A request to destroy a workspace with a particular name.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
named workspace does not exist.
+ </entry>
+ </row>
+ <row>
+ <entry>CloneWorkspaceRequest</entry>
+ <entry>
+ A request to clone one named workspace as another new named workspace.
+ The connector sets a &InvalidWorkspaceException; error on the request if the
original workspace does not exist,
+ or if the new workspace already exists.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
<para>
Although there are over a dozen different kinds of requests, we do anticipate adding
more in future releases.
For example, DNA will likely support searching repository content in sources through
an additional subclass of &Request;.
@@ -1101,10 +1224,10 @@
</para>
<note>
<para>
- In many cases, the default implementations of the
<code>process(...)</code> methods are
<emphasis>sufficient</emphasis>
- but probably not efficient or optimum. If that is the case, simply provide your own
methods that perform the request
- in a manner that is efficient for your source. However, if performance is not a big
issue, all of the concrete methods
- will provide the correct behavior. And remember, you can always provide better
implementations later.
+ The &RequestProcessor; abstract class contains default implementations for quite
a few of the <code>process(...)</code> methods,
+ and these will be <emphasis>sufficient</emphasis> but probably not
efficient or optimum. If you can provide a more efficient
+ implementation given your source, feel free to do so. However, if performance is
not a big issue, all of the concrete methods
+ will provide the correct behavior. Keep things simple to start out - you can always
provide better implementations later.
</para>
</note>
<para>
@@ -1116,7 +1239,11 @@
public void execute( final &ExecutionContext; context,
final &Request; request ) throws RepositorySourceException {
RequestProcessor processor = new RequestProcessor(context);
- processor.process(request);
+ try {
+ processor.process(request);
+ } finally {
+ processor.close();
+ }
}</programlisting>
<para>
If you do this, the bulk of your connector implementation may be in the
&RequestProcessor; implementation methods.
@@ -1191,8 +1318,67 @@
Just remember that under the covers, a &Graph; is just building &Request;
objects, submitting them to the connector,
and then exposing the results.
</para>
+ <sect2 id="dna_graph_api_workspaces">
+ <title>Using workspaces</title>
<para>
- Let's look at some examples of how the Graph API works. This first example
returns a map of properties (keyed by property name)
+ Let's look at some examples of how the Graph API works. This first example shows
how to obtain the names of the available workspaces:
+ </para>
+ <programlisting>
+&Set;<&String;> workspaceNames = graph.getWorkspaces();
+</programlisting>
+ <para>Once you know the name of the workspace, you can specify that the graph
should use it:
+ </para>
+ <programlisting>
+graph.useWorkspace("myWorkspace");
+</programlisting>
+ <para>
+ From this point forward, all requests will apply to the workspace named
"myWorkspace". At any time, you can use a different workspace,
+ which will affect all subsequent requests made using the graph. Of course, creating a
new workspace is just as easy:
+ </para>
+ <programlisting>
+graph.createWorkspace().named("newWorkspace");
+</programlisting>
+ <para>This will attempt to create a workspace named "newWorkspace",
which will fail if that workspace already exists. You may
+ want to create a new workspace with a name that should be altered if the name you
supply is already used. The following code shows
+ how you can do this:
+ </para>
+ <programlisting>
+graph.createWorkspace().namedSomethingLike("newWorkspace");
+</programlisting>
+ <para>If there is no existing workspace named "newWorkspace", a new
one will be created with this name. However, if "newWorkspace" already
+ exists, this call will create a workspace with a name that is some alteration of the
supplied name.
+ </para>
+ <para>
+ You can also clone workspaces, too:
+ </para>
+ <programlisting>
+graph.createWorkspace().clonedFrom("original").named("something");
+</programlisting>
+ <para>
+ or
+ </para>
+ <programlisting>
+graph.createWorkspace().clonedFrom("original").namedSomethingLike("something");
+</programlisting>
+ <para>
+ As you can see, it's very easy to specify which workspace you want to use or to
create new workspaces. You can also find out which workspace
+ the graph is currently using:
+ </para>
+ <programlisting>
+&String; current = graph.getCurrentWorkspaceName();
+</programlisting>
+ <para>or, if you want, you can get more information about the workspace:
+ </para>
+ <programlisting>
+&Workspace; current = graph.getCurrentWorkspace();
+&String; name = current.getName();
+&Location; rootLocation = current.getRoot();
+</programlisting>
+ </sect2>
+ <sect2 id="dna_graph_api_nodes">
+ <title>Working with nodes</title>
+ <para>
+ Now let's switch to working with nodes. This first example returns a map of
properties (keyed by property name)
for a node at a specific &Path;:
</para>
<programlisting>
@@ -1268,6 +1454,7 @@
The &Graph; interface is actually quite complete and offers a full-featured
approach for reading and updating a graph.
For more information, see the &Graph; JavaDocs.
</para>
+ </sect2>
</sect1>
<sect1>
<title>Summary</title>
Modified: trunk/docs/reference/src/main/docbook/en-US/content/testing.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/testing.xml 2009-04-30 18:18:49
UTC (rev 869)
+++ trunk/docs/reference/src/main/docbook/en-US/content/testing.xml 2009-04-30 22:11:02
UTC (rev 870)
@@ -129,4 +129,24 @@
to do it quickly and in a way that makes it easy to understand what the code is
supposed to do (or not do).
</para>
</sect1>
+ <sect1 id="tck-tests">
+ <title>Technology Compatibility Kit (TCK) tests</title>
+ <para>
+ Many Java specifications provide TCK test suites that can be used to check or verify
that an implementation
+ correctly implements the API or SPI defined by the specification. These TCK tests
vary by technology, but
+ <ulink url="&JSR170;">JSR-170</ulink> does provide TCK tests
that ensure that a JCR repository implementation exhibits the correct and expected
+ behavior.
+ </para>
+ <para>
+ JBoss DNA has not yet passed enough of the TCK tests to publish the results. We
still have to implement
+ queries, which is a required feature of Level 1 repositories. However, suffice to
say that JBoss DNA has passed
+ many of the individual tests that make up the Level 1 and Level 2 tests, and it is a
major objective of the next
+ release to pass the remaining Level 1 and Level 2 tests (along with some other
optional features).
+ </para>
+ <para>
+ JBoss DNA also frequently runs the JCR unit tests from the Apache Jackrabbit project.
(Those these tests are not
+ the official TCK, they apparently are used within the official TCK.) These unit tests
are set up in the
+ <code>dna-jcr-tck</code> project.
+ </para>
+ </sect1>
</chapter>
Modified: trunk/docs/reference/src/main/docbook/en-US/custom.dtd
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/custom.dtd 2009-04-30 18:18:49 UTC (rev
869)
+++ trunk/docs/reference/src/main/docbook/en-US/custom.dtd 2009-04-30 22:11:02 UTC (rev
870)
@@ -1,4 +1,4 @@
-<!ENTITY versionNumber "0.3">
+<!ENTITY versionNumber "0.4">
<!ENTITY copyrightYears "2008-2009">
<!ENTITY copyrightHolder "Red Hat, Inc.">
@@ -50,7 +50,7 @@
<!ENTITY Logger "<ulink
url='&API;common/util/Logger.html'><interface>Logger</interface></ulink>">
<!ENTITY ClassLoaderFactory "<ulink
url='&API;common/component/ClassLoaderFactory.html'><interface>ClassLoaderFactory</interface></ulink>">
-<!ENTITY StandardClassLoaderFactory "<ulink
url='&API;common/component/ClassLoaderFactory.html'><classname>StandardClassLoaderFactory</classname></ulink>">
+<!ENTITY StandardClassLoaderFactory "<ulink
url='&API;common/component/StandardClassLoaderFactory.html'><classname>StandardClassLoaderFactory</classname></ulink>">
<!-- Types in dna-graph -->
@@ -58,6 +58,7 @@
<!ENTITY GraphBatch "<ulink
url='&API;graph/Graph.Batch.html'><classname>Graph.Batch</classname></ulink>">
<!ENTITY Subgraph "<ulink
url='&API;graph/Subgraph.html'><interface>Subgraph</interface></ulink>">
<!ENTITY Node "<ulink
url='&API;graph/Node.html'><interface>Node</interface></ulink>">
+<!ENTITY Workspace "<ulink
url='&API;graph/Workspace.html'><interface>Workspace</interface></ulink>">
<!ENTITY Results "<ulink
url='&API;graph/Results.html'><interface>Results</interface></ulink>">
<!ENTITY Location "<ulink
url='&API;graph/Location.html'><classname>Location</classname></ulink>">
<!ENTITY ExecutionContext "<ulink
url='&API;graph/ExecutionContext.html'><classname>ExecutionContext</classname></ulink>">
@@ -74,13 +75,16 @@
<!ENTITY RepositoryConnectionFactory "<ulink
url='&API;graph/connector/RepositoryConnectionFactory.html'><interface>RepositoryConnectionFactory</interface></ulink>">
<!ENTITY RepositorySourceListener "<ulink
url='&API;graph/connector/RepositorySourceListener.html'><interface>RepositorySourceListener</interface></ulink>">
<!ENTITY RepositorySourceCapabilities "<ulink
url='&API;graph/connector/RepositorySourceCapabilities.html'><classname>RepositorySourceCapabilities</classname></ulink>">
-<!ENTITY InMemoryRepository "<ulink
url='&API;graph.connector/inmemory/InMemoryRepository.html'><classname>InMemoryRepository</classname></ulink>">
-<!ENTITY InMemoryRepositorySource "<ulink
url='&API;graph.connector/inmemory/InMemoryRepositorySource.html'><classname>InMemoryRepositorySource</classname></ulink>">
+<!ENTITY InMemoryRepository "<ulink
url='&API;graph/connector/inmemory/InMemoryRepository.html'><classname>InMemoryRepository</classname></ulink>">
+<!ENTITY InMemoryRepositorySource "<ulink
url='&API;graph/connector/inmemory/InMemoryRepositorySource.html'><classname>InMemoryRepositorySource</classname></ulink>">
<!ENTITY CachePolicy "<ulink
url='&API;graph/cache/CachePolicy.html'><interface>CachePolicy</interface></ulink>">
-<!ENTITY Request "<ulink
url='&API;graph/request/Requests.html'><classname>Request</classname></ulink>">
+<!ENTITY Request "<ulink
url='&API;graph/request/Request.html'><classname>Request</classname></ulink>">
<!ENTITY CompositeRequest "<ulink
url='&API;graph/request/CompositeRequest.html'><classname>CompositeRequest</classname></ulink>">
<!ENTITY ReadNodeRequest "<ulink
url='&API;graph/request/ReadNodeRequest.html'><classname>ReadNodeRequest</classname></ulink>">
<!ENTITY CopyBranchRequest "<ulink
url='&API;graph/request/CopyBranchRequest.html'><classname>CopyBranchRequest</classname></ulink>">
+<!ENTITY InvalidRequestException "<ulink
url='&API;graph/request/InvalidRequestException.html'><classname>InvalidRequestException</classname></ulink>">
+<!ENTITY InvalidWorkspaceException "<ulink
url='&API;graph/request/InvalidWorkspaceException.html'><classname>InvalidWorkspaceException</classname></ulink>">
+<!ENTITY UnsupportedRequestException "<ulink
url='&API;graph/request/UnsupportedRequestException.html'><classname>UnsupportedRequestException</classname></ulink>">
<!ENTITY RequestProcessor "<ulink
url='&API;graph/request/processor/RequestProcessor.html'><classname>RequestProcessor</classname></ulink>">
<!ENTITY StreamSequencer "<ulink
url='&API;graph/sequencer/StreamSequencer.html'><interface>StreamSequencer</interface></ulink>">
<!ENTITY SequencerOutput "<ulink
url='&API;graph/sequencer/SequencerOutput.html'><interface>SequencerOutput</interface></ulink>">
Modified: trunk/docs/reference/src/main/docbook/en-US/master.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/master.xml 2009-04-30 18:18:49 UTC (rev
869)
+++ trunk/docs/reference/src/main/docbook/en-US/master.xml 2009-04-30 22:11:02 UTC (rev
870)
@@ -34,7 +34,7 @@
<subtitle>Reference Guide</subtitle>
<releaseinfo>&versionNumber;</releaseinfo>
<productnumber>&versionNumber;</productnumber>
- <issuenum>1</issuenum>
+ <issuenum>4</issuenum>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="dna-logo.png" align="center"/>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-04-30 18:18:49 UTC (rev 869)
+++ trunk/pom.xml 2009-04-30 22:11:02 UTC (rev 870)
@@ -403,6 +403,11 @@
</dependency>
<dependency>
<groupId>org.jboss.dna</groupId>
+ <artifactId>dna-jcr-tck</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
<artifactId>dna-connector-federation</artifactId>
<version>${pom.version}</version>
</dependency>
@@ -413,9 +418,59 @@
</dependency>
<dependency>
<groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-store-jpa</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-filesystem</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-svn</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
<artifactId>dna-mimetype-detector-aperture</artifactId>
<version>${pom.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-cnd</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-images</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-java</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-mp3</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-msoffice</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-xml</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-zip</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
<!--
Time and Date
-->