[dna-commits] DNA SVN: r870 - in trunk: docs/gettingstarted/src/main/docbook/en-US and 3 other directories.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Thu Apr 30 18:11:02 EDT 2009


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</ulink>
-            .)
+            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</ulink>
-            .)
+            <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</ulink>
+            )
+          </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</ulink>
-            )
-          </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</ulink>
@@ -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</ulink>
-            )
-          </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</ulink>
@@ -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</ulink>
-            )
-          </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;&lt;&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
 		    -->




More information about the dna-commits mailing list