Author: rhauch
Date: 2008-09-26 17:12:43 -0400 (Fri, 26 Sep 2008)
New Revision: 555
Added:
tags/dna-0.2/
tags/dna-0.2/dna-common/pom.xml
tags/dna-0.2/dna-graph/pom.xml
tags/dna-0.2/dna-integration-tests/pom.xml
tags/dna-0.2/dna-jcr/pom.xml
tags/dna-0.2/dna-repository/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml
tags/dna-0.2/docs/gettingstarted/pom.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml
tags/dna-0.2/docs/pom.xml
tags/dna-0.2/docs/reference/pom.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml
tags/dna-0.2/extensions/dna-classloader-maven/pom.xml
tags/dna-0.2/extensions/dna-connector-federation/pom.xml
tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml
tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml
tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml
tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml
tags/dna-0.2/extensions/dna-sequencer-images/pom.xml
tags/dna-0.2/extensions/dna-sequencer-java/pom.xml
tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml
tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml
tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml
tags/dna-0.2/pom.xml
Removed:
tags/dna-0.2/dna-common/pom.xml
tags/dna-0.2/dna-graph/pom.xml
tags/dna-0.2/dna-integration-tests/pom.xml
tags/dna-0.2/dna-jcr/pom.xml
tags/dna-0.2/dna-repository/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml
tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml
tags/dna-0.2/docs/gettingstarted/pom.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml
tags/dna-0.2/docs/pom.xml
tags/dna-0.2/docs/reference/pom.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml
tags/dna-0.2/extensions/dna-classloader-maven/pom.xml
tags/dna-0.2/extensions/dna-connector-federation/pom.xml
tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml
tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml
tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml
tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml
tags/dna-0.2/extensions/dna-sequencer-images/pom.xml
tags/dna-0.2/extensions/dna-sequencer-java/pom.xml
tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml
tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml
tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml
tags/dna-0.2/pom.xml
Log:
[maven-release-plugin] copy for tag dna-0.2
Copied: tags/dna-0.2 (from rev 547, trunk)
Deleted: tags/dna-0.2/dna-common/pom.xml
===================================================================
--- trunk/dna-common/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/dna-common/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,84 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2-SNAPSHOT</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-common</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Common</name>
- <description>JBoss DNA Common Library and Utilities</description>
- <
url>http://labs.jboss.org/dna</url>
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- <!--
- Java Content Repository API and Apache Jackrabbit for the JCR unit test
infrastructure
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/dna-common/pom.xml (from rev 554, trunk/dna-common/pom.xml)
===================================================================
--- tags/dna-0.2/dna-common/pom.xml (rev 0)
+++ tags/dna-0.2/dna-common/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,84 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-common</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Common</name>
+ <description>JBoss DNA Common Library and Utilities</description>
+ <
url>http://labs.jboss.org/dna</url>
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API and Apache Jackrabbit for the JCR unit test
infrastructure
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/dna-graph/pom.xml
===================================================================
--- trunk/dna-graph/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/dna-graph/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,73 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2-SNAPSHOT</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-graph</artifactId>
- <description>The JBoss DNA Graph API and SPI interfaces</description>
- <packaging>jar</packaging>
- <name>JBoss DNA Graph</name>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/dna-graph/pom.xml (from rev 554, trunk/dna-graph/pom.xml)
===================================================================
--- tags/dna-0.2/dna-graph/pom.xml (rev 0)
+++ tags/dna-0.2/dna-graph/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,73 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-graph</artifactId>
+ <description>The JBoss DNA Graph API and SPI interfaces</description>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Graph</name>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time</artifactId>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/dna-integration-tests/pom.xml
===================================================================
--- trunk/dna-integration-tests/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/dna-integration-tests/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,118 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2-SNAPSHOT</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-integration-tests</artifactId>
- <packaging>jar</packaging>
- <version>0.2-SNAPSHOT</version>
- <name>JBoss DNA Integration Tests</name>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-classloader-maven</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Apache Jackrabbit (JCR Implementation)
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- </dependency>
- <!--
- Databases and JDBC Drivers
- -->
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- </dependency>
- </dependencies>
- <!--
- Build configuration - run integration tests only in 'integration' phase
- -->
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- <executions>
- <execution>
- <id>integration-test</id>
- <phase>integration-test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- <configuration>
- <skip>false</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/dna-integration-tests/pom.xml (from rev 554,
trunk/dna-integration-tests/pom.xml)
===================================================================
--- tags/dna-0.2/dna-integration-tests/pom.xml (rev 0)
+++ tags/dna-0.2/dna-integration-tests/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,118 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-integration-tests</artifactId>
+ <packaging>jar</packaging>
+ <version>0.2</version>
+ <name>JBoss DNA Integration Tests</name>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-classloader-maven</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Apache Jackrabbit (JCR Implementation)
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ </dependency>
+ <!--
+ Databases and JDBC Drivers
+ -->
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ </dependency>
+ </dependencies>
+ <!--
+ Build configuration - run integration tests only in 'integration' phase
+ -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/dna-jcr/pom.xml
===================================================================
--- trunk/dna-jcr/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/dna-jcr/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-jcr</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA JCR implementation</name>
- <description>JBoss DNA implementation of the JCR API</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- </dependency>
- <!--
- Apache JCR API unit tests (for any JCR implementation), which is a subset of the
official TCK
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr-tests</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.code.google-collections</groupId>
- <artifactId>google-collect</artifactId>
- <version>snapshot-20080530</version>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/dna-jcr/pom.xml (from rev 554, trunk/dna-jcr/pom.xml)
===================================================================
--- tags/dna-0.2/dna-jcr/pom.xml (rev 0)
+++ tags/dna-0.2/dna-jcr/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-jcr</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA JCR implementation</name>
+ <description>JBoss DNA implementation of the JCR API</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <!--
+ Apache JCR API unit tests (for any JCR implementation), which is a subset of the
official TCK
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-tests</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.google-collections</groupId>
+ <artifactId>google-collect</artifactId>
+ <version>snapshot-20080530</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/dna-repository/pom.xml
===================================================================
--- trunk/dna-repository/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/dna-repository/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-repository</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Repository</name>
- <description>JBoss DNA Repository library</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-federation</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-federation</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Rules
- -->
- <dependency>
- <groupId>jsr94</groupId>
- <artifactId>jsr94</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-jsr94</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-compiler</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- </dependency>
- <!--
- Apache Jackrabbit (JCR Implementation) for testing purposes
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/dna-repository/pom.xml (from rev 554, trunk/dna-repository/pom.xml)
===================================================================
--- tags/dna-0.2/dna-repository/pom.xml (rev 0)
+++ tags/dna-0.2/dna-repository/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,125 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-repository</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Repository</name>
+ <description>JBoss DNA Repository library</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-federation</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-federation</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Rules
+ -->
+ <dependency>
+ <groupId>jsr94</groupId>
+ <artifactId>jsr94</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-jsr94</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <!--
+ Apache Jackrabbit (JCR Implementation) for testing purposes
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/examples/gettingstarted/pom.xml
===================================================================
--- trunk/docs/examples/gettingstarted/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/examples/gettingstarted/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,161 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna.examples</groupId>
- <artifactId>getting_started</artifactId>
- <packaging>pom</packaging>
- <version>0.2</version>
- <name>JBoss DNA Getting Started examples</name>
- <description />
-
- <modules>
- <module>sequencers</module>
- <module>repositories</module>
- </modules>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-jcr</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-maven-classloader</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-connector-inmemory</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-jbosscache</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-federation</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <!-- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J
binding for testing) -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.4.3</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.4.3</version>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- </dependency>
- <!-- Java Content Repository API -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <version>1.0.1</version>
- <scope>compile</scope>
- </dependency>
- <!-- Apache Jackrabbit (JCR Implementation) -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>1.3.3</version>
- <scope>compile</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- <version>1.3.3</version>
- <scope>compile</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- Testing (note the scope) -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>1.5</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <debug>true</debug>
- <showDeprecation>true</showDeprecation>
- <showWarnings>true</showWarnings>
- <optimize>true</optimize>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/examples/gettingstarted/pom.xml (from rev 554,
trunk/docs/examples/gettingstarted/pom.xml)
===================================================================
--- tags/dna-0.2/docs/examples/gettingstarted/pom.xml (rev 0)
+++ tags/dna-0.2/docs/examples/gettingstarted/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,161 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna.examples</groupId>
+ <artifactId>getting_started</artifactId>
+ <packaging>pom</packaging>
+ <version>0.2</version>
+ <name>JBoss DNA Getting Started examples</name>
+ <description />
+
+ <modules>
+ <module>sequencers</module>
+ <module>repositories</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-jcr</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-maven-classloader</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-connector-inmemory</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-jbosscache</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-federation</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <!-- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J
binding for testing) -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.4.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.3</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ <!-- Java Content Repository API -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>1.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- Apache Jackrabbit (JCR Implementation) -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <version>1.3.3</version>
+ <scope>compile</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ <version>1.3.3</version>
+ <scope>compile</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- Testing (note the scope) -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <debug>true</debug>
+ <showDeprecation>true</showDeprecation>
+ <showWarnings>true</showWarnings>
+ <optimize>true</optimize>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml
===================================================================
--- trunk/docs/examples/gettingstarted/repositories/pom.xml 2008-09-26 16:10:20 UTC (rev
547)
+++ tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -1,114 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
-
- <parent>
- <groupId>org.jboss.dna.examples</groupId>
- <artifactId>getting_started</artifactId>
- <version>0.2</version>
- <relativePath>..</relativePath>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna.examples</groupId>
- <artifactId>dna-example-repositories</artifactId>
- <version>0.2</version>
- <packaging>jar</packaging>
- <name>JBoss DNA Repositories Examples</name>
- <description>Examples that showcase how to use DNA
repositories.</description>
-
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-jcr</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-inmemory</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-jbosscache</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-federation</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- </dependency>
- <!--
- Test cases use JUnit
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/main/assembly/basic.xml</descriptor>
- </descriptors>
- <finalName>${pom.artifactId}</finalName>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>directory-inline</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml (from rev 554,
trunk/docs/examples/gettingstarted/repositories/pom.xml)
===================================================================
--- tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml
(rev 0)
+++ tags/dna-0.2/docs/examples/gettingstarted/repositories/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -0,0 +1,114 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.jboss.dna.examples</groupId>
+ <artifactId>getting_started</artifactId>
+ <version>0.2</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna.examples</groupId>
+ <artifactId>dna-example-repositories</artifactId>
+ <version>0.2</version>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Repositories Examples</name>
+ <description>Examples that showcase how to use DNA
repositories.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-jcr</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-inmemory</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-jbosscache</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-federation</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <!--
+ Test cases use JUnit
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/basic.xml</descriptor>
+ </descriptors>
+ <finalName>${pom.artifactId}</finalName>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>directory-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml
===================================================================
--- trunk/docs/examples/gettingstarted/sequencers/pom.xml 2008-09-26 16:10:20 UTC (rev
547)
+++ tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -1,114 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
-
- <parent>
- <groupId>org.jboss.dna.examples</groupId>
- <artifactId>getting_started</artifactId>
- <version>0.2</version>
- <relativePath>..</relativePath>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna.examples</groupId>
- <artifactId>dna-example-sequencers</artifactId>
- <version>0.2</version>
- <packaging>jar</packaging>
- <name>JBoss DNA Sequencer Examples</name>
- <description>Examples that showcase how to use sequencers with a JCR
repository.</description>
-
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-sequencer-images</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-sequencer-mp3</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-sequencer-java</artifactId>
- <version>${pom.version}</version>
- <scope>runtime</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- </dependency>
- <!--
- Apache Jackrabbit (JCR Implementation) for repository implementation
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- </dependency>
- <!--
- Test cases use JUnit
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/main/assembly/basic.xml</descriptor>
- </descriptors>
- <finalName>${pom.artifactId}</finalName>
- </configuration>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>directory-inline</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml (from rev 554,
trunk/docs/examples/gettingstarted/sequencers/pom.xml)
===================================================================
--- tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml
(rev 0)
+++ tags/dna-0.2/docs/examples/gettingstarted/sequencers/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -0,0 +1,114 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.jboss.dna.examples</groupId>
+ <artifactId>getting_started</artifactId>
+ <version>0.2</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna.examples</groupId>
+ <artifactId>dna-example-sequencers</artifactId>
+ <version>0.2</version>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Sequencer Examples</name>
+ <description>Examples that showcase how to use sequencers with a JCR
repository.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-images</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-mp3</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-java</artifactId>
+ <version>${pom.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <!--
+ Apache Jackrabbit (JCR Implementation) for repository implementation
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ </dependency>
+ <!--
+ Test cases use JUnit
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/assembly/basic.xml</descriptor>
+ </descriptors>
+ <finalName>${pom.artifactId}</finalName>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>directory-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/gettingstarted/pom.xml
===================================================================
--- trunk/docs/gettingstarted/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/gettingstarted/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,75 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <!--
- parent> <groupId>org.jboss</groupId>
<artifactId>documentation</artifactId> <version>1.0</version>
</parent
- -->
- <groupId>org.jboss.dna</groupId>
- <artifactId>getting-started-en</artifactId>
- <version>0.2-SNAPSHOT</version>
- <packaging>jdocbook</packaging>
- <name>JBoss DNA Getting Started manual</name>
- <description>The JBoss DNA Getting Started manual</description>
- <build>
- <plugins>
- <plugin>
- <groupId>org.jboss.maven.plugins</groupId>
- <artifactId>maven-jdocbook-plugin</artifactId>
- <version>2.1.2</version>
- <extensions>true</extensions>
- <dependencies>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-docbook-xslt</artifactId>
- <version>1.1.0.Beta1</version>
- </dependency>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-jdocbook-style</artifactId>
- <version>1.1.0.Beta1</version>
- <type>jdocbook-style</type>
- </dependency>
- </dependencies>
- <configuration>
- <sourceDocumentName>master.xml</sourceDocumentName>
- <imageResource>
-
<directory>${basedir}/src/main/docbook/en-US/images</directory>
- <includes>
- <include>*.png</include>
- </includes>
- </imageResource>
- <!-- cssResource>
- <directory>${basedir}/src/main/docbook/css</directory>
- </cssResource-->
- <targetDirectory>${basedir}/target/docbook/en-US</targetDirectory>
- <formats>
- <format>
- <formatName>html</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <!--
- <format>
- <formatName>html_single</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <format>
- <formatName>pdf</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
- <finalName>userguide_en.pdf</finalName>
- </format>
- -->
- </formats>
- <options>
- <xincludeSupported>true</xincludeSupported>
- <xmlTransformerType>saxon</xmlTransformerType>
- <!-- needed for uri-resolvers; can be ommitted if using 'current'
uri scheme -->
- <!-- could also locate the docbook dependency and inspect its
version... -->
- <docbookVersion>1.72.0</docbookVersion>
- </options>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/gettingstarted/pom.xml (from rev 554,
trunk/docs/gettingstarted/pom.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/pom.xml (rev 0)
+++ tags/dna-0.2/docs/gettingstarted/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,73 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <!--
+ parent> <groupId>org.jboss</groupId>
<artifactId>documentation</artifactId> <version>1.0</version>
</parent -->
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>getting-started-en</artifactId>
+ <version>0.2</version>
+ <packaging>jdocbook</packaging>
+ <name>JBoss DNA Getting Started manual</name>
+ <description>The JBoss DNA Getting Started manual</description>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ <version>2.1.2</version>
+ <extensions>true</extensions>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-docbook-xslt</artifactId>
+ <version>1.1.0.Beta1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-jdocbook-style</artifactId>
+ <version>1.1.0.Beta1</version>
+ <type>jdocbook-style</type>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <sourceDocumentName>master.xml</sourceDocumentName>
+ <imageResource>
+
<directory>${basedir}/src/main/docbook/en-US/images</directory>
+ <includes>
+ <include>*.png</include>
+ </includes>
+ </imageResource>
+ <!-- cssResource>
+ <directory>${basedir}/src/main/docbook/css</directory>
+ </cssResource-->
+ <targetDirectory>${basedir}/target/docbook/en-US</targetDirectory>
+ <formats>
+ <format>
+ <formatName>html</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <!--
+ <format>
+ <formatName>html_single</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>pdf</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+ <finalName>userguide_en.pdf</finalName>
+ </format>
+ -->
+ </formats>
+ <options>
+ <xincludeSupported>true</xincludeSupported>
+ <xmlTransformerType>saxon</xmlTransformerType>
+ <!-- needed for uri-resolvers; can be ommitted if using 'current'
uri scheme -->
+ <!-- could also locate the docbook dependency and inspect its
version... -->
+ <docbookVersion>1.72.0</docbookVersion>
+ </options>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Deleted:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml
===================================================================
---
trunk/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="downloading_and_running">
- <title>Running the example applications</title>
- <para>
- This chapter provides instructions for downloading and running a sample application
that demonstrates how JBoss DNA works
- with a JCR repository to automatically sequence changing content to extract useful
information. So read on to get the simple
- application running, and then in the <link linkend="using_dna">next
chapter</link>
- we'll dive into the source code for the example and show how to use JBoss DNA in
your own applications. </para>
- <para>JBoss DNA uses Maven 2 for its build system, as is this example. Using Maven
2 has several advantages, including
- the ability to manage dependencies. If a library is needed, Maven automatically finds
and downloads that library, plus
- everything that library needs. This means that it's very easy to build the
examples - or even create a maven project that
- depends on the JBoss DNA JARs.</para>
- <note>
- <para>
- To use Maven with JBoss DNA, you'll need to have <ulink
url="http://java.sun.com/javase/downloads/index_jdk5.jsp">JDK 5 or
6</ulink>
- and Maven 2.0.7 (or higher).</para>
- <para>
- Maven can be downloaded from <ulink
url="http://maven.apache.org/">http://maven.apache.org/</...;, and is
installed by unzipping the
- <code>maven-2.0.7-bin.zip</code> file to a convenient location on your
local disk. Simply add <code>$MAVEN_HOME/bin</code>
- to your path and add the following profile to your
<code>~/.m2/settings.xml</code> file:</para>
- <programlisting role="XML"><![CDATA[
-<settings>
- <profiles>
- <profile>
- <id>jboss.repository</id>
- <activation>
- <property>
- <name>!jboss.repository.off</name>
- </property>
- </activation>
- <repositories>
- <repository>
- <id>snapshots.jboss.org</id>
- <
url>http://snapshots.jboss.org/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>repository.jboss.org</id>
- <
url>http://repository.jboss.org/maven2</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>repository.jboss.org</id>
- <
url>http://repository.jboss.org/maven2</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots.jboss.org</id>
- <
url>http://snapshots.jboss.org/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
-</settings>
-]]></programlisting>
- <para>This profile informs Maven of the two JBoss repositories (snapshots and
releases) that contain
- all of the JARs for JBoss DNA and all dependent libraries.</para>
- </note>
- <sect1 id="downloading">
- <title>Downloading and compiling</title>
- <para>The next step is to <ulink
url="http://www.jboss.org/file-access/default/members/dna/downloads/...
- the example for this Getting Started guide, and extract the contents to a
convenient location on your local disk.
- You'll find the example contains the following files, which are organized
according to the standard Maven directory structure:</para>
- <programlisting><![CDATA[
-examples/pom.xml
- sequencers/pom.xml
- /src/main/assembly
- /config
- /java
- /resources
- /test/java
- /resources
- repository/pom.xml
- /src/main/assembly
- /config
- /java
- /resources
- /test/java
- /resources
-]]></programlisting>
- <para>There are essentially three Maven projects: a
<code>sequencers</code> project, a <code>repository</code>
project,
- and a parent project. All of the source for the sequencing example is located in the
<code>sequencers</code> subdirectory,
- while all of the source for the federation example is located in the
<code>repository</code> subdirectory. And you may have noticed that none
- of the JBoss DNA libraries are there. This is where Maven comes in. The two
<code>pom.xml</code> files tell
- Maven everything it needs to know about what libraries are required and how to
build the example.</para>
- <para>In a terminal, go to the <code>examples</code> directory and
run <emphasis role="strong"><code>mvn
install</code></emphasis>.
- This command downloads all of the JARs necessary to compile and build the example,
including the JBoss DNA libraries,
- the libraries they depend on, and any missing Maven components. (These are
downloaded from the JBoss repositories
- only once and saved on your machine. This means that the next time you run Maven,
all the libraries will
- already be available locally, and the build will run much faster.) The command
then continues by compiling the example's source
- code (and unit tests) and running the unit tests. The build is successful if you
see the following:</para>
- <programlisting><![CDATA[
-$ mvn install
-...
-[INFO] ------------------------------------------------------------------------
-[INFO] Reactor Summary:
-[INFO] ------------------------------------------------------------------------
-[INFO] Getting Started examples .............................. SUCCESS [2.106s]
-[INFO] Sequencer Examples .................................... SUCCESS [9.768s]
-[INFO] ------------------------------------------------------------------------
-[INFO] ------------------------------------------------------------------------
-[INFO] BUILD SUCCESSFUL
-[INFO] ------------------------------------------------------------------------
-[INFO] Total time: 12 seconds
-[INFO] Finished at: Wed May 07 12:00:06 CDT 2008
-[INFO] Final Memory: 14M/28M
-[INFO] ------------------------------------------------------------------------
-$ ]]></programlisting>
- <para>If there are errors, check whether you have the correct version of Maven
installed and that you've correctly updated
- your Maven settings as described above.</para>
- <para>If you've successfully built the examples, there will be a new
<code>examples/sequencers/target/</code> directory that contains
- all of the generated output for the sequencers example, including a
<code>dna-example-sequencers-basic.dir/</code> subdirectory
- that contains the following:
- <itemizedlist>
- <listitem>
- <para><emphasis
role="strong"><code>run.sh</code></emphasis> is the *nix
shell script that will run the sequencer example application.</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>log4j.properties</code></emphasis>
- is the Log4J configuration file.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>jackrabbitConfig.xml</code></emphasis>
- is the Jackrabbit configuration file, which is set up to use a transient
in-memory repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>jackrabbitNodeTypes.cnd</code></emphasis>
- defines the additional JCR node types used by this example.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>sample1.mp3</code></emphasis>
- is a sample MP3 audio file you'll use later to upload into the
repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>caution.gif</code></emphasis>,
<emphasis
role="strong"><code>caution.png</code></emphasis>, and
<emphasis
role="strong"><code>caution.jpg</code></emphasis>
- are images that you'll use later and upload into the repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>project1</code></emphasis> subdirectory
contains some Java source that can be loaded
- into the repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>lib</code></emphasis> subdirectory
contains the JARs for all of the JBoss DNA artifacts
- as well as those for other libraries required by JBoss DNA and the sequencer
example.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <para>JBoss DNA &versionNumber; and the sequencer example uses <ulink
url="http://jackrabbit.apache.org/">Apache Jackrabbit</ulink> version
1.4.5.
- This version is stable and used by a number of other projects and applications.
However, you should be able to use any
- version of Jackrabbit, as long as that version uses the same JCR
API.</para>
- <para>Just remember, if the version of Jackrabbit you want to use for these
examples is not in the Maven repository,
- you'll have to either add it or add it locally. For more information, see the
<ulink
url="http://maven.apache.org/">Maven documentation</ulink>.
- </para>
- </note>
- <para>Similarly, the <code>examples/repository/target/</code>
directory contains all of the generated output for the repository example, including
- a <code>dna-example-repository-basic.dir/</code> subdirectory that
contains the following:
- <itemizedlist>
- <listitem>
- <para><emphasis
role="strong"><code>run.sh</code></emphasis> is the *nix
shell script that will run the repository example application.</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>log4j.properties</code></emphasis> is
the Log4J configuration file.</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>aircraft.xml</code></emphasis> is an
XML file containing the information that the
- example application imports into its "Aircraft" repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>cars.xml</code></emphasis> is an XML
file containing the information that the
- example application imports into its "Cars" repository.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>configRepository.xml</code></emphasis>
is an XML file containing the information that the
- example application imports into its "Configuration" repository and
which defines how the application sets up access
- to the other example repositories.
- </para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong"><code>lib</code></emphasis> subdirectory
contains the JARs for all of the JBoss DNA artifacts
- as well as those for other libraries required by JBoss DNA and the repository
example.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect1>
- <sect1 id="running_sequencer_example">
- <title>Running the sequencing example</title>
- <para>The sequencing example consists of a client application that sets up an
in-memory JCR repository and that allows a user to
- upload files into that repository. The client also sets up the DNA services with
two sequencers so that if any of the
- uploaded files are PNG, JPEG, GIF, BMP or other images, DNA will automatically
extract the image's metadata (e.g., image
- format, physical size, pixel density, etc.) and store that in the repository.
Alternatively, if the uploaded file
- is an MP3 audio file, DNA will extract some of the ID3 metadata (e.g., the author,
title, album, year and comment)
- and store that in the repository.</para>
- <para>
- To run the client application, go to the
<code>examples/sequencers/target/dna-example-sequencers-basic.dir/</code>
- directory and type <code>./run.sh</code>. You should see the
command-line client and its menus in your terminal:
- <figure id="xample-sequencer-cli-client">
- <title>Example client</title>
- <graphic align="center" scale="100"
fileref="example-sequencer-client.png"/>
- </figure>
- From this menu, you can upload a file into the repository, search for media in the
repository, print sequencing statistics,
- or quit the application.</para>
- <para>
- The first step is to upload one of the example images. If you type 'u' and
press return, you'll be prompted to supply the
- path to the file you want to upload. Since the application is running from within
the
-
<code>examples/sequencers/target/dna-example-sequencers-basic.dir/</code>
directory, you can specify any of the files
- in that directory without specifying the path:
- <figure id="example-sequencer-upload">
- <title>Uploading an image using the example client</title>
- <graphic align="center" scale="100"
fileref="example-sequencer-upload.png"/>
- </figure>
- You can specify any fully-qualified or relative path. The application will notify
you if it cannot find the file you
- specified. The example client configures JBoss DNA to sequence MP3 audio files,
Java source files, or image files with one of
- the following extensions (technically, nodes that have names ending in the
following):
- <code>jpg</code>, <code>jpeg</code>,
<code>gif</code>, <code>bmp</code>, <code>pcx</code>,
<code>png</code>,
- <code>iff</code>, <code>ras</code>,
<code>pbm</code>, <code>pgm</code>, <code>ppm</code>,
and <code>psd</code>.
- Files with other extensions in the repository path will be ignored. For your
convenience, the example provides several
- files that will be sequenced (<code>caution.png</code>,
<code>caution.jpg</code>, <code>caution.gif</code>, and
- <code>sample1.mp3</code>) and one image that will not be sequenced
(<code>caution.pict</code>). Feel free to try other files.
- </para>
- <para>
- After you have specified the file you want to upload, the example application asks
you where in the repository you'd like to
- place the file. (If you want to use the suggested location, just press
<code>return</code>.) The client application
- uses the JCR API to upload the file to that location in the repository, creating
any nodes (of type <code>nt:folder</code>)
- for any directories that don't exist, and creating a node (of type
<code>nt:file</code>) for the file. And, per the JCR specification,
- the application creates a <code>jcr:content</code> node (of type
<code>nt:resource</code>) under the file node.
- The file contents are placed on this <code>jcr:content</code> node in the
<code>jcr:data</code> property. For example, if you specify
- <code>/a/b/caution.png</code>, the following structure will be created
in the repository:</para>
- <programlisting><![CDATA[
-/a (nt:folder)
- /b (nt:folder)
- /caution.png (nt:file)
- /jcr:content (nt:resource)
- @jcr:data = {contents of the file}
- @jcr:mimeType = {mime type of the file}
- @jcr:lastModified = {now}
-]]></programlisting>
- <para>Other kinds of files are treated in a similar way.</para>
- <para>When the client uploads the file using the JCR API, DNA gets notified of
the changes, consults the sequencers to see whether
- any of them are interested in the new or updated content, and if so runs those
sequencers. The image sequencer processes image
- files for metadata, and any metadata found is stored under the
<code>/images</code> branch of the repository. The MP3 sequencer
- processes MP3 audio files for metadata, and any metadata found is stored under the
<code>/mp3s</code>
- branch of the repository. And metadata about Java classes are stored under the
<code>/java</code> area of the repository.
- All of this happens asynchronously, so any DNA activity doesn't impede or slow
down the client activities.
- </para>
- <para>So, after the file is uploaded, you can search the repository for the image
metadata using the "s" menu option:
- <figure id="example-sequencer-search">
- <title>Searching for media using the example client</title>
- <graphic align="center" scale="100"
fileref="example-sequencer-search.png"/>
- </figure>
- Here are the search results after the <code>sample1.mp3</code> audio
file has been uploaded (to the <code>/a/b/sample1.mp3</code> location):
- <figure id="example-sequencer-search-with-mp3">
- <title>Searching for media using the example client</title>
- <graphic align="center" scale="100"
fileref="example-sequencer-search-with-mp3.png"/>
- </figure>
- You can also display the sequencing statistics using the "d" menu option:
- <figure id="example-sequencer-statistics">
- <title>Sequencing statistics using the example client</title>
- <graphic align="center" scale="100"
fileref="example-sequencer-statistics.png"/>
- </figure>
- These stats show how many nodes were sequenced, and how many nodes were skipped
because they didn't apply to the sequencer's
- criteria.
- </para>
- <note>
- <para>There will probably be more nodes skipped than sequenced, since there are
more <code>nt:folder</code> and <code>nt:resource</code>
- nodes than there are <code>nt:file</code> nodes with acceptable
names.</para>
- </note>
- <para>You can repeat this process with other files. Any file that isn't an
image or MP3 files (as recognized by the sequencing configurations
- that we'll describe later) will not be sequenced.</para>
- </sect1>
- <sect1 id="running_repository_example">
- <title>Running the repository example</title>
- <para>The repository example consists of a client application that sets up three
DNA repositories (named "Cars", "Airplanes", and
- "Configuration") as well as a federated repository ("Vehicles")
that dynamically federates the information from the three other
- repositories and a cache repository (named "Cache") in which the federated
content is stored.
- The client application allows you to interactively navigate each of these repositories
just as you would navigate the
- directory structure on a file system.</para>
- <para>This collection of repositories is shown in the following figure:
- <figure id="example-repositories">
- <title>Repositories used in the example client</title>
- <graphic align="center" scale="100"
fileref="example-repositories.png"/>
- </figure>
- Most of the repositories are in-memory repositories (using the In-Memory repository
connector), but the federated "Vehicles" repository
- content is federated from the other repositories and cached into the "Cache"
repository. This is shown in the following figure:
- <figure id="example-federated-repository">
- <title>Vehicles repository content is federated from the Cars, Airplanes and
Configuration repositories</title>
- <graphic align="center" scale="100"
fileref="example-federated-repository.png"/>
- </figure>
- </para>
- <para>
- To run the client application, go to the
<code>examples/repository/target/dna-example-repositories-basic.dir/</code>
- directory and type <code>./run.sh</code>. You should see the
command-line client and its menus in your terminal:
- <figure id="example-repositories-client">
- <title>Example Client</title>
- <graphic align="center" scale="100"
fileref="example-repositories-client.png"/>
- </figure>
- From this menu, you can see the list of repositories, select one, and navigate
through that repository in a manner similar
- to a *nix command-line shell (although the client itself uses the JCR API to
interact with the repositories).
- Here are some of the commands you can use:</para>
- <table frame='all'>
- <title>Repository client commands to navigate a repository</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row><entry>Command</entry><entry>Description</entry></row>
- </thead>
- <tbody>
- <row><entry>pwd</entry><entry>Print the path of the current
node (e.g., the "working directory")</entry></row>
- <row><entry>ls
[<emphasis>path</emphasis>]</entry><entry>List the children and
properties of the node at the supplied path,
- where "<emphasis>path</emphasis>" can be any relative
path or absolute path. If "<emphasis>path</emphasis>" is not
supplied,
- the current working node's path is used.</entry></row>
- <row><entry>cd
<emphasis>path</emphasis></entry><entry>Change to the specified
node, where "<emphasis>path</emphasis>"
- can be any relative path or absolute path. For example, "<code>cd
alpha</code>" changes the current node to be a child named
- "<code>alpha</code>"; "<code>cd
..</code>" changes the current node to the parent node; "<code>cd
/a/b</code>" changes
- the current node to be the "<code>/a/b</code>"
node.</entry></row>
- <row><entry>exit</entry><entry>Exit this repository and
return the list of repositories.</entry></row>
- </tbody>
- </tgroup>
- </table>
- <para>If you were to select the "Cars" repository and use some of the
commands, you should see something similar to:
- <figure id="example-repositories-navigating">
- <title>Navigating the Cars repository</title>
- <graphic align="center" scale="100"
fileref="example-repositories-navigating.png"/>
- </figure>
- </para>
- <para>You can also choose to navigate the "Vehicles" repository, which
projects the "Cars" repository content under the
- <code>/Vehicles/Cars</code> node, the "Airplanes" content under
the <code>/Vehicles/Airplanes</code> branch,
- and the "Configuration" content under
<code>/dna:system</code>.
- </para>
- <para>Try using the client to walk the different repositories. And while this
is a contrived application, it does demonstrate
- the use of JBoss DNA to federate repositories and provide access through
JCR.</para>
- </sect1>
- <sect1 id="downloading_and_running_review">
- <title>Summarizing what we just did</title>
- <para>In this chapter you downloaded, installed, and built the two example
applicationss. With the sequencer client, you could upload files into a
- JCR repository, while JBoss DNA automatically sequenced the image, MP3, or Java
source files you uploaded, extracted the metadata from the
- files, and stored that metadata inside the repository. The repository client
allowed you to walk through multiple repositories,
- including one whose content was federated from multiple other
repositories.</para>
- <para>These example applications were very simplistic. In fact, running through
the examples probably only took you a few minutes.
- So while these applications won't win any awards, they hopefully showed you the
basics of what JBoss DNA can do.</para>
- <para>In the next two chapters, we'll venture into the code to get an
understanding of how JBoss DNA actually works.
- The <link linkend="using_dna_for_sequencing">next chapter</link>
reviews the sequencer application and talks about
- how you can use DNA sequencers in your own applications. Then in the <link
linkend="using_dna_repositories">following chapter</link>
- we'll venture into the repositories example code to show how you can use DNA
repositories, including federated repositories,
- in your own applications.</para>
- </sect1>
-</chapter>
Copied:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml
(from rev 553,
trunk/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml)
===================================================================
---
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml
(rev 0)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/downloading_and_running.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="downloading_and_running">
+ <title>Running the example applications</title>
+ <para>
+ This chapter provides instructions for downloading and running a sample application
that demonstrates how JBoss DNA works
+ with a JCR repository to automatically sequence changing content to extract useful
information. So read on to get the simple
+ application running, and then in the <link linkend="using_dna">next
chapter</link>
+ we'll dive into the source code for the example and show how to use JBoss DNA in
your own applications. </para>
+ <para>JBoss DNA uses Maven 2 for its build system, as is this example. Using Maven
2 has several advantages, including
+ the ability to manage dependencies. If a library is needed, Maven automatically finds
and downloads that library, plus
+ everything that library needs. This means that it's very easy to build the
examples - or even create a maven project that
+ depends on the JBoss DNA JARs.</para>
+ <note>
+ <para>
+ To use Maven with JBoss DNA, you'll need to have <ulink
url="http://java.sun.com/javase/downloads/index_jdk5.jsp">JDK 5 or
6</ulink>
+ and Maven 2.0.9 (or higher).</para>
+ <para>
+ Maven can be downloaded from <ulink
url="http://maven.apache.org/">http://maven.apache.org/</...;, and is
installed by unzipping the
+ <code>maven-2.0.9-bin.zip</code> file to a convenient location on your
local disk. Simply add <code>$MAVEN_HOME/bin</code>
+ to your path and add the following profile to your
<code>~/.m2/settings.xml</code> file:</para>
+ <programlisting role="XML"><![CDATA[
+<settings>
+ <profiles>
+ <profile>
+ <id>jboss.repository</id>
+ <activation>
+ <property>
+ <name>!jboss.repository.off</name>
+ </property>
+ </activation>
+ <repositories>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <
url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>repository.jboss.org</id>
+ <
url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>repository.jboss.org</id>
+ <
url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ <pluginRepository>
+ <id>snapshots.jboss.org</id>
+ <
url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
+]]></programlisting>
+ <para>This profile informs Maven of the two JBoss repositories (snapshots and
releases) that contain
+ all of the JARs for JBoss DNA and all dependent libraries.</para>
+ </note>
+ <sect1 id="downloading">
+ <title>Downloading and compiling</title>
+ <para>The next step is to <ulink
url="http://www.jboss.org/file-access/default/members/dna/downloads/...
+ the example for this Getting Started guide, and extract the contents to a
convenient location on your local disk.
+ You'll find the example contains the following files, which are organized
according to the standard Maven directory structure:</para>
+ <programlisting><![CDATA[
+examples/pom.xml
+ sequencers/pom.xml
+ /src/main/assembly
+ /config
+ /java
+ /resources
+ /test/java
+ /resources
+ repository/pom.xml
+ /src/main/assembly
+ /config
+ /java
+ /resources
+ /test/java
+ /resources
+]]></programlisting>
+ <para>
+ There are essentially three Maven projects: a <code>sequencers</code>
project, a <code>repository</code> project,
+ and a parent project. All of the source for the sequencing example is located in the
<code>sequencers</code> subdirectory,
+ while all of the source for the repository example is located in the
<code>repository</code> subdirectory.
+ </para>
+ <para>
+ And you may have noticed that none of the JBoss DNA libraries are there. This is
where Maven comes in.
+ The two <code>pom.xml</code> files tell Maven everything it needs to know
about what libraries are required and
+ how to build the example.
+ </para>
+ <para>
+ In a terminal, go to the <code>examples</code> directory and run:
+ </para>
+ <programlisting>$ mvn install</programlisting>
+ <para>
+ This command downloads all of the JARs necessary to compile and build the example,
including the JBoss DNA libraries,
+ the libraries they depend on, and any missing Maven components. (These are
downloaded from the JBoss repositories
+ only once and saved on your machine. This means that the next time you run Maven,
all the libraries will
+ already be available locally, and the build will run much faster.) The command
then continues by compiling the example's source
+ code (and unit tests) and running the unit tests. The build is successful if you
see the following:
+ </para>
+ <programlisting><![CDATA[
+$ mvn install
+...
+[INFO] ------------------------------------------------------------------------
+[INFO] Reactor Summary:
+[INFO] ------------------------------------------------------------------------
+[INFO] Getting Started examples .............................. SUCCESS [2.106s]
+[INFO] Sequencer Examples .................................... SUCCESS [9.768s]
+[INFO] ------------------------------------------------------------------------
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 12 seconds
+[INFO] Finished at: Wed May 07 12:00:06 CDT 2008
+[INFO] Final Memory: 14M/28M
+[INFO] ------------------------------------------------------------------------
+$ ]]></programlisting>
+ <para>If there are errors, check whether you have the correct version of Maven
installed and that you've correctly updated
+ your Maven settings as described above.</para>
+ <para>If you've successfully built the examples, there will be a new
<code>examples/sequencers/target/</code> directory that contains
+ all of the generated output for the sequencers example, including a
<code>dna-example-sequencers-basic.dir/</code> subdirectory
+ that contains the following:
+ <itemizedlist>
+ <listitem>
+ <para><emphasis
role="strong"><code>run.sh</code></emphasis> is the *nix
shell script that will run the sequencer example application.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>log4j.properties</code></emphasis>
+ is the Log4J configuration file.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>jackrabbitConfig.xml</code></emphasis>
+ is the Jackrabbit configuration file, which is set up to use a transient
in-memory repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>jackrabbitNodeTypes.cnd</code></emphasis>
+ defines the additional JCR node types used by this example.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>sample1.mp3</code></emphasis>
+ is a sample MP3 audio file you'll use later to upload into the
repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>caution.gif</code></emphasis>,
<emphasis
role="strong"><code>caution.png</code></emphasis>, and
<emphasis
role="strong"><code>caution.jpg</code></emphasis>
+ are images that you'll use later and upload into the repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>project1</code></emphasis> subdirectory
contains some Java source that can be loaded
+ into the repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>lib</code></emphasis> subdirectory
contains the JARs for all of the JBoss DNA artifacts
+ as well as those for other libraries required by JBoss DNA and the sequencer
example.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <note>
+ <para>JBoss DNA &versionNumber; and the sequencer example uses <ulink
url="http://jackrabbit.apache.org/">Apache Jackrabbit</ulink> version
1.4.5.
+ This version is stable and used by a number of other projects and applications.
However, you should be able to use any
+ version of Jackrabbit, as long as that version uses the same JCR
API.</para>
+ <para>Just remember, if the version of Jackrabbit you want to use for these
examples is not in the Maven repository,
+ you'll have to either add it or add it locally. For more information, see the
<ulink
url="http://maven.apache.org/">Maven documentation</ulink>.
+ </para>
+ </note>
+ <para>Similarly, the <code>examples/repository/target/</code>
directory contains all of the generated output for the repository example, including
+ a <code>dna-example-repository-basic.dir/</code> subdirectory that
contains the following:
+ <itemizedlist>
+ <listitem>
+ <para><emphasis
role="strong"><code>run.sh</code></emphasis> is the *nix
shell script that will run the repository example application.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>log4j.properties</code></emphasis> is
the Log4J configuration file.</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>aircraft.xml</code></emphasis> is an
XML file containing the information that the
+ example application imports into its "Aircraft" repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>cars.xml</code></emphasis> is an XML
file containing the information that the
+ example application imports into its "Cars" repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>configRepository.xml</code></emphasis>
is an XML file containing the information that the
+ example application imports into its "Configuration" repository and
which defines how the application sets up access
+ to the other example repositories.
+ </para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong"><code>lib</code></emphasis> subdirectory
contains the JARs for all of the JBoss DNA artifacts
+ as well as those for other libraries required by JBoss DNA and the repository
example.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+ <sect1 id="running_sequencer_example">
+ <title>Running the sequencing example</title>
+ <para>The sequencing example consists of a client application that sets up an
in-memory JCR repository and that allows a user to
+ upload files into that repository. The client also sets up the DNA services with
two sequencers so that if any of the
+ uploaded files are PNG, JPEG, GIF, BMP or other images, DNA will automatically
extract the image's metadata (e.g., image
+ format, physical size, pixel density, etc.) and store that in the repository.
Alternatively, if the uploaded file
+ is an MP3 audio file, DNA will extract some of the ID3 metadata (e.g., the author,
title, album, year and comment)
+ and store that in the repository.</para>
+ <para>
+ To run the client application, go to the
<code>examples/sequencers/target/dna-example-sequencers-basic.dir/</code>
+ directory and type <code>./run.sh</code>. You should see the
command-line client and its menus in your terminal:
+ <figure id="xample-sequencer-cli-client">
+ <title>Example client</title>
+ <graphic align="center" scale="100"
fileref="example-sequencer-client.png"/>
+ </figure>
+ From this menu, you can upload a file into the repository, search for media in the
repository, print sequencing statistics,
+ or quit the application.</para>
+ <para>
+ The first step is to upload one of the example images. If you type 'u' and
press return, you'll be prompted to supply the
+ path to the file you want to upload. Since the application is running from within
the
+
<code>examples/sequencers/target/dna-example-sequencers-basic.dir/</code>
directory, you can specify any of the files
+ in that directory without specifying the path:
+ <figure id="example-sequencer-upload">
+ <title>Uploading an image using the example client</title>
+ <graphic align="center" scale="100"
fileref="example-sequencer-upload.png"/>
+ </figure>
+ You can specify any fully-qualified or relative path. The application will notify
you if it cannot find the file you
+ specified. The example client configures JBoss DNA to sequence MP3 audio files,
Java source files, or image files with one of
+ the following extensions (technically, nodes that have names ending in the
following):
+ <code>jpg</code>, <code>jpeg</code>,
<code>gif</code>, <code>bmp</code>, <code>pcx</code>,
<code>png</code>,
+ <code>iff</code>, <code>ras</code>,
<code>pbm</code>, <code>pgm</code>, <code>ppm</code>,
and <code>psd</code>.
+ Files with other extensions in the repository path will be ignored. For your
convenience, the example provides several
+ files that will be sequenced (<code>caution.png</code>,
<code>caution.jpg</code>, <code>caution.gif</code>, and
+ <code>sample1.mp3</code>) and one image that will not be sequenced
(<code>caution.pict</code>). Feel free to try other files.
+ </para>
+ <para>
+ After you have specified the file you want to upload, the example application asks
you where in the repository you'd like to
+ place the file. (If you want to use the suggested location, just press
<code>return</code>.) The client application
+ uses the JCR API to upload the file to that location in the repository, creating
any nodes (of type <code>nt:folder</code>)
+ for any directories that don't exist, and creating a node (of type
<code>nt:file</code>) for the file. And, per the JCR specification,
+ the application creates a <code>jcr:content</code> node (of type
<code>nt:resource</code>) under the file node.
+ The file contents are placed on this <code>jcr:content</code> node in the
<code>jcr:data</code> property. For example, if you specify
+ <code>/a/b/caution.png</code>, the following structure will be created
in the repository:</para>
+ <programlisting><![CDATA[
+/a (nt:folder)
+ /b (nt:folder)
+ /caution.png (nt:file)
+ /jcr:content (nt:resource)
+ @jcr:data = {contents of the file}
+ @jcr:mimeType = {mime type of the file}
+ @jcr:lastModified = {now}
+]]></programlisting>
+ <para>Other kinds of files are treated in a similar way.</para>
+ <para>When the client uploads the file using the JCR API, DNA gets notified of
the changes, consults the sequencers to see whether
+ any of them are interested in the new or updated content, and if so runs those
sequencers. The image sequencer processes image
+ files for metadata, and any metadata found is stored under the
<code>/images</code> branch of the repository. The MP3 sequencer
+ processes MP3 audio files for metadata, and any metadata found is stored under the
<code>/mp3s</code>
+ branch of the repository. And metadata about Java classes are stored under the
<code>/java</code> area of the repository.
+ All of this happens asynchronously, so any DNA activity doesn't impede or slow
down the client activities.
+ </para>
+ <para>So, after the file is uploaded, you can search the repository for the image
metadata using the "s" menu option:
+ <figure id="example-sequencer-search">
+ <title>Searching for media using the example client</title>
+ <graphic align="center" scale="100"
fileref="example-sequencer-search.png"/>
+ </figure>
+ Here are the search results after the <code>sample1.mp3</code> audio
file has been uploaded (to the <code>/a/b/sample1.mp3</code> location):
+ <figure id="example-sequencer-search-with-mp3">
+ <title>Searching for media using the example client</title>
+ <graphic align="center" scale="100"
fileref="example-sequencer-search-with-mp3.png"/>
+ </figure>
+ You can also display the sequencing statistics using the "d" menu option:
+ <figure id="example-sequencer-statistics">
+ <title>Sequencing statistics using the example client</title>
+ <graphic align="center" scale="100"
fileref="example-sequencer-statistics.png"/>
+ </figure>
+ These stats show how many nodes were sequenced, and how many nodes were skipped
because they didn't apply to the sequencer's
+ criteria.
+ </para>
+ <note>
+ <para>There will probably be more nodes skipped than sequenced, since there are
more <code>nt:folder</code> and <code>nt:resource</code>
+ nodes than there are <code>nt:file</code> nodes with acceptable
names.</para>
+ </note>
+ <para>You can repeat this process with other files. Any file that isn't an
image or MP3 files (as recognized by the sequencing configurations
+ that we'll describe later) will not be sequenced.</para>
+ </sect1>
+ <sect1 id="running_repository_example">
+ <title>Running the repository example</title>
+ <para>The repository example consists of a client application that sets up three
DNA repositories (named "Cars", "Airplanes", and
+ "Configuration") as well as a federated repository ("Vehicles")
that dynamically federates the information from the three other
+ repositories and a cache repository (named "Cache") in which the federated
content is stored.
+ The client application allows you to interactively navigate each of these repositories
just as you would navigate the
+ directory structure on a file system.</para>
+ <para>This collection of repositories is shown in the following figure:
+ <figure id="example-repositories">
+ <title>Repositories used in the example client</title>
+ <graphic align="center" scale="100"
fileref="example-repositories.png"/>
+ </figure>
+ Most of the repositories are in-memory repositories (using the In-Memory repository
connector), but the federated "Vehicles" repository
+ content is federated from the other repositories and cached into the "Cache"
repository. This is shown in the following figure:
+ <figure id="example-federated-repository">
+ <title>Vehicles repository content is federated from the Cars, Airplanes and
Configuration repositories</title>
+ <graphic align="center" scale="100"
fileref="example-federated-repository.png"/>
+ </figure>
+ </para>
+ <para>
+ To run the client application, go to the
<code>examples/repository/target/dna-example-repositories-basic.dir/</code>
+ directory and type <code>./run.sh</code>. You should see the
command-line client and its menus in your terminal:
+ <figure id="example-repositories-client">
+ <title>Example Client</title>
+ <graphic align="center" scale="100"
fileref="example-repositories-client.png"/>
+ </figure>
+ From this menu, you can see the list of repositories, select one, and navigate
through that repository in a manner similar
+ to a *nix command-line shell (although the client itself uses the JCR API to
interact with the repositories).
+ Here are some of the commands you can use:</para>
+ <table frame='all'>
+ <title>Repository client commands to navigate a repository</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row><entry>Command</entry><entry>Description</entry></row>
+ </thead>
+ <tbody>
+ <row><entry>pwd</entry><entry>Print the path of the current
node (e.g., the "working directory")</entry></row>
+ <row><entry>ls
[<emphasis>path</emphasis>]</entry><entry>List the children and
properties of the node at the supplied path,
+ where "<emphasis>path</emphasis>" can be any relative
path or absolute path. If "<emphasis>path</emphasis>" is not
supplied,
+ the current working node's path is used.</entry></row>
+ <row><entry>cd
<emphasis>path</emphasis></entry><entry>Change to the specified
node, where "<emphasis>path</emphasis>"
+ can be any relative path or absolute path. For example, "<code>cd
alpha</code>" changes the current node to be a child named
+ "<code>alpha</code>"; "<code>cd
..</code>" changes the current node to the parent node; "<code>cd
/a/b</code>" changes
+ the current node to be the "<code>/a/b</code>"
node.</entry></row>
+ <row><entry>exit</entry><entry>Exit this repository and
return the list of repositories.</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>If you were to select the "Cars" repository and use some of the
commands, you should see something similar to:
+ <figure id="example-repositories-navigating">
+ <title>Navigating the Cars repository</title>
+ <graphic align="center" scale="100"
fileref="example-repositories-navigating.png"/>
+ </figure>
+ </para>
+ <para>You can also choose to navigate the "Vehicles" repository, which
projects the "Cars" repository content under the
+ <code>/Vehicles/Cars</code> node, the "Airplanes" content under
the <code>/Vehicles/Airplanes</code> branch,
+ and the "Configuration" content under
<code>/dna:system</code>.
+ </para>
+ <para>Try using the client to walk the different repositories. And while this
is a contrived application, it does demonstrate
+ the use of JBoss DNA to federate repositories and provide access through
JCR.</para>
+ </sect1>
+ <sect1 id="downloading_and_running_review">
+ <title>Summarizing what we just did</title>
+ <para>In this chapter you downloaded, installed, and built the two example
applicationss. With the sequencer client, you could upload files into a
+ JCR repository, while JBoss DNA automatically sequenced the image, MP3, or Java
source files you uploaded, extracted the metadata from the
+ files, and stored that metadata inside the repository. The repository client
allowed you to walk through multiple repositories,
+ including one whose content was federated from multiple other
repositories.</para>
+ <para>These example applications were very simplistic. In fact, running through
the examples probably only took you a few minutes.
+ So while these applications won't win any awards, they hopefully showed you the
basics of what JBoss DNA can do.</para>
+ <para>In the next two chapters, we'll venture into the code to get an
understanding of how JBoss DNA actually works.
+ The <link linkend="using_dna_for_sequencing">next chapter</link>
reviews the sequencer application and talks about
+ how you can use DNA sequencers in your own applications. Then in the <link
linkend="using_dna_repositories">following chapter</link>
+ we'll venture into the repositories example code to show how you can use DNA
repositories, including federated repositories,
+ in your own applications.</para>
+ </sect1>
+</chapter>
Deleted: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml
===================================================================
--- trunk/docs/gettingstarted/src/main/docbook/en-US/content/future.xml 2008-09-26
16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="future">
- <title>Looking to the future</title>
- <para>What's next for JBoss DNA? Well, the sequencing system is just the
beginning. With this release, the sequencing system
- is stable enough so that more <link
linkend="sequencers">sequencers</link> can be developed and used within
your own applications.
- If you're interested in getting involved with the JBoss DNA project, consider
picking up one of the sequencers on our
- <ulink
url="http://jira.jboss.org/jira/browse/DNA?report=com.atlassian.jira...;.
- Or, check out <ulink
url="http://jira.jboss.org/jira/secure/IssueNavigator.jspa?reset=tru...
- for the list of sequencers we've thought of. If you think of one that's not
there, please add it to JIRA! </para>
- <para>Other components on our roadmap include a web user interface, a REST-ful
server, and a view system that allows domain-specific
- views of information in the repository. These components are farther out on our
roadmap, and at this time have not been
- targeted to a particular release. If any of these are of interest to you, please
<link linkend="preface">get involved</link>
- in the community.</para>
-</chapter>
Copied: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml (from
rev 553, trunk/docs/gettingstarted/src/main/docbook/en-US/content/future.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml
(rev 0)
+++ tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/future.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="future">
+ <title>Looking to the future</title>
+ <para>What's next for JBoss DNA? Well, the sequencing system is just the
beginning. With this release, the sequencing system
+ is stable enough so that more <link
linkend="sequencers">sequencers</link> can be developed and used within
your own applications.
+ We've also established the foundation for JBoss DNA repositories, including a
number of <link linkend="repository-connectors">connectors</link>.
+ We'll continue to expand our library of sequencers and connectors, as well as
expand our support of JCR.
+ Other components on our roadmap include a web user interface, a REST-ful server, and a
view system that allows domain-specific
+ views of information in the repository. These components are farther out on our
roadmap, and at this time have not been
+ targeted to a particular release.
+ </para>
+ <para>
+ If you're interested in getting involved with the JBoss DNA project, consider
picking up one of the sequencers on our
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA?report=com.atlassian.jira...;.
+ Or, check out <ulink
url="http://jira.jboss.org/jira/secure/IssueNavigator.jspa?reset=tru...
+ for the list of sequencers we've thought of. If you think of one that's not
there, please add it to JIRA! </para>
+</chapter>
Deleted: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml
===================================================================
--- trunk/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="introduction">
- <title>Introduction</title>
- <para>There are a lot of choices for how applications can store information
persistently so that it can be accessed at a
- later time and by other processes. The challenge developers face is how to use an
approach that most closely matches the
- needs of their application. This choice becomes more important as developers choose
to focus their efforts on
- application-specific logic, delegating much of the responsibilities for persistence
to libraries and frameworks.</para>
- <para>
- Perhaps one of the easiest techniques is to simply store information in
- <emphasis>files</emphasis>
- . The Java language makes working with files relatively easy, but Java really
doesn't provide many bells and whistles. So
- using files is an easy choice when the information is either not complicated (for
example property files), or when users may
- need to read or change the information outside of the application (for example log
files or configuration files). But using
- files to persist information becomes more difficult as the information becomes more
complex, as the volume of it increases,
- or if it needs to be accessed by multiple processes. For these situations, other
techniques often offer better choices.
- </para>
- <para>
- Another technique built into the Java language is
- <emphasis>Java serialization</emphasis>
- , which is capable of persisting the state of an object graph so that it can be read
back in at a later time. However, Java
- serialization can quickly become tricky if the classes are changed, and so it's
beneficial usually when the information is
- persisted for a very short period of time. For example, serialization is sometimes
used to send an object graph from one
- process to another.
- </para>
- <para>
- One of the more popular persistence technologies is the
- <emphasis>relational database</emphasis>
- . Relational database management systems have been around for decades and are very
capable. The Java Database Connectivity
- (JDBC) API provides a standard interface for connecting to and interacting with
relational databases. However, it is a
- low-level API that requires a lot of code to use correctly, and it still doesn't
abstract away the DBMS-specific SQL
- grammar. Also, working with relational data in an object-oriented language can feel
somewhat unnatural, so many developers
- map this data to classes that fit much more cleanly into their application. The
problem is that manually creating this
- mapping layer requires a lot of repetitive and non-trivial JDBC code.
- </para>
- <para>
- <emphasis>Object-relational mapping</emphasis>
- libraries automate the creation of this mapping layer and result in far less code
that is much more maintainable with
- performance that is often as good as (if not better than) handwritten JDBC code. The
new
- <ulink
url="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"...
Persistence API (JPA)</ulink>
- provide a standard mechanism for defining the mappings (through annotations) and
working with these entity objects. Several
- commercial and open-source libraries implement JPA, and some even offer additional
capabilities and features that go beyond
- JPA. For example,
- <ulink url="http://www.hibernate.org">Hibernate</ulink>
- is one of the most feature-rich JPA implementations and offers object caching,
statement caching, extra association
- mappings, and other features that help to improve performance and usefulness.
- </para>
- <para>
- While relational databases and JPA are solutions that work for many applications,
they become more limited in cases when the
- information structure is highly flexible, is not known
- <emphasis>a priori</emphasis>
- , or is subject to frequent change and customization. In these situations,
- <emphasis>content repositories</emphasis>
- may offer a better choice for persistence. Content repositories are almost a hybrid
between relational databases and file
- systems, and typically provide other capabilities as well, including versioning,
indexing, search, access control,
- transactions, and observation. Because of this, content repositories are used by
content management systems (CMS), document
- management systems (DMS), and other applications that manage electronic files (e.g.,
documents, images, multi-media, web
- content, etc.) and metadata associated with them (e.g., author, date, status,
security information, etc.). The
- <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">Content
Repository for Java technology API</ulink>
- provides a standard Java API for working with content repositories. Abbreviated
"JCR", this API was developed as part of the
- Java Community Process under
- <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">JSR-170</ul...
- and is being revised under
- <ulink
url="http://www.jcp.org/en/jsr/detail?id=283">JSR-283</ul...
- .
- </para>
- <para>
- The
- <emphasis>JBoss DNA project</emphasis>
- is building the tools and services that surround content repositories. 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
- meaningful information from that content and store it in the repository, where it can
then be searched, accessed, and
- analyzed using the JCR API.
- </para>
- <para> JBoss DNA is building other features as well. One goal of JBoss DNA is to
create federated repositories that
- dynamically merge the information from multiple databases, services, applications,
and other JCR repositories. Another is to
- create customized views based upon the type of data and the role of the user that is
accessing the data. And yet another is
- to create a REST-ful API to allow the JCR content to be accessed easily by other
applications written in other languages.
- </para>
- <para>
- The
- <link linkend="understanding_dna">next chapter</link>
- in this book goes into more detail about JBoss DNA and its architecture, the
different components, what's available now, and
- what's coming in future releases.
- <link linkend="downloading_and_running">Chapter 3</link>
- then provides instructions for downloading and running the sequencer examples for the
current release.
- <link linkend="using_dna">Chapter 4</link>
- walks through how to use JBoss DNA in your applications, while
- <link linkend="custom_sequencers">Chapter 5</link>
- goes over how to create custom sequencers. Finally,
- <link linkend="future">Chapter 6</link>
- wraps things up with a discussion about the future of JBoss DNA.
- </para>
-</chapter>
Copied: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml
(from rev 553, trunk/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml
(rev 0)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/introduction.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="introduction">
+ <title>Introduction</title>
+ <para>There are a lot of ways for applications to store information persistently
so that it can be accessed at a
+ later time and by other processes. The challenge developers face is how to use an
approach that most closely matches the
+ needs of their application. This choice becomes more important as developers choose
to focus their efforts on
+ application-specific logic, delegating much of the responsibilities for persistence
to libraries and frameworks.</para>
+ <para>
+ Perhaps one of the easiest techniques is to simply store information in
+ <emphasis>files</emphasis>
+ . The Java language makes working with files relatively easy, but Java really
doesn't provide many bells and whistles. So
+ using files is an easy choice when the information is either not complicated (for
example property files), or when users may
+ need to read or change the information outside of the application (for example log
files or configuration files). But using
+ files to persist information becomes more difficult as the information becomes more
complex, as the volume of it increases,
+ or if it needs to be accessed by multiple processes. For these situations, other
techniques often have more benefits.
+ </para>
+ <para>
+ Another technique built into the Java language is
+ <emphasis>Java serialization</emphasis>
+ , which is capable of persisting the state of an object graph so that it can be read
back in at a later time. However, Java
+ serialization can quickly become tricky if the classes are changed, and so it's
beneficial usually when the information is
+ persisted for a very short period of time. For example, serialization is sometimes
used to send an object graph from one
+ process to another. Using serialization for longer-term storage of information is
more risky.
+ </para>
+ <para>
+ One of the more popular and widely-used persistence technologies is the
<emphasis>relational database</emphasis>.
+ Relational database management systems have been around for decades and are very
capable. The Java Database Connectivity
+ (JDBC) API provides a standard interface for connecting to and interacting with
relational databases. However, it is a
+ low-level API that requires a lot of code to use correctly, and it still doesn't
abstract away the DBMS-specific SQL
+ grammar. Also, working with relational data in an object-oriented language can feel
somewhat unnatural, so many developers
+ map this data to classes that fit much more cleanly into their application. The
problem is that manually creating this
+ mapping layer requires a lot of repetitive and non-trivial JDBC code.
+ </para>
+ <para>
+ <emphasis>Object-relational mapping</emphasis>
+ libraries automate the creation of this mapping layer and result in far less code
that is much more maintainable with
+ performance that is often as good as (if not better than) handwritten JDBC code. The
new
+ <ulink
url="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"...
Persistence API (JPA)</ulink>
+ provide a standard mechanism for defining the mappings (through annotations) and
working with these entity objects. Several
+ commercial and open-source libraries implement JPA, and some even offer additional
capabilities and features that go beyond
+ JPA. For example, <ulink
url="http://www.hibernate.org">Hibernate</ulink> is one of the most
feature-rich JPA implementations
+ and offers object caching, statement caching, extra association
+ mappings, and other features that help to improve performance and usefulness. Plus,
Hibernate is open-source (with support
+ offered by <ulink url="http://www.jboss.com">JBoss</ulink>).
+ </para>
+ <para>
+ While relational databases and JPA are solutions that work well for many
applications, they are more limited in cases when the
+ information structure is highly flexible, the structure is not known
<emphasis>a priori</emphasis>, or that structure is
+ subject to frequent change and customization. In these situations,
<emphasis>content repositories</emphasis>
+ may offer a better choice for persistence. Content repositories are almost a hybrid
with the storage capabilities of
+ relational databases and the flexibility offered by other systems, such as using
files. Content repositories also
+ typically provide other capabilities as well, including versioning, indexing, search,
access control,
+ transactions, and observation. Because of this, content repositories are used by
content management systems (CMS), document
+ management systems (DMS), and other applications that manage electronic files (e.g.,
documents, images, multi-media, web
+ content, etc.) and metadata associated with them (e.g., author, date, status,
security information, etc.). The
+ <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">Content
Repository for Java technology API</ulink>
+ provides a standard Java API for working with content repositories. Abbreviated
"JCR", this API was developed as part of the
+ Java Community Process under <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">JSR-170</ul...
+ and is being revised under <ulink
url="http://www.jcp.org/en/jsr/detail?id=283">JSR-283</ul...;.
+ </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
+ 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
+ meaningful information from that content and store it in the repository, where it can
then be searched, accessed, and
+ analyzed using the JCR API.
+ </para>
+ <para> JBoss DNA has other features as well. You can create federated
repositories that dynamically merge the information
+ from multiple databases, services, applications, and other JCR repositories. JBoss
DNA also will allow you to
+ create customized views based upon the type of data and the role of the user that is
accessing the data. And yet another is
+ to create a REST-ful API to allow the JCR content to be accessed easily by other
applications written in other languages.
+ </para>
+ <para>
+ The <link linkend="understanding_dna">next chapter</link> in
this book goes into more detail about JBoss DNA and its architecture,
+ the different components, what's available now, and what's coming in future
releases.
+ <link linkend="downloading_and_running">Chapter 3</link> then
provides instructions for downloading and running the sequencer
+ examples for the current release. <link linkend="using_dna">Chapter
4</link> walks through how to use JBoss DNA sequencers
+ in your applications, while <link linkend="custom_sequencers">Chapter
5</link> shows how to use JBoss DNA repositories.
+ <link linkend="custom_sequencers">Chapter 6</link> goes over how
to create custom sequencers, and finally,
+ <link linkend="future">Chapter 7</link> wraps things up with a
discussion about the future of JBoss DNA.
+ </para>
+</chapter>
Deleted: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml
===================================================================
--- trunk/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-
-<legalnotice id="Legal_Notice">
- <title>Legal Notice</title>
- <para>
- <address>
- <street>1801 Varsity Drive</street>
- <city>Raleigh</city>,
<state>NC</state><postcode>27606-2072</postcode><country>USA</country>
- <phone>Phone: +1 919 754 3700</phone>
- <phone>Phone: 888 733 4281</phone>
- <fax>Fax: +1 919 754 3701</fax>
- <pob>PO Box 13588</pob><city>Research Triangle
Park</city>,
<state>NC</state><postcode>27709</postcode><country>USA</country>
- </address>
- </para>
- <para>
- Copyright <trademark class="copyright"/> 2007 by Red Hat, Inc.
This copyrighted material is made available to
- anyone wishing to use, modify, copy, or redistribute it subject to the terms and
conditions of the
- GNU <ulink
url="http://www.gnu.org/licenses/lgpl-2.1.html">Lesser
General Public License</ulink>, as published
- by the Free Software Foundation.
- </para>
- <para>
- Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of
Red Hat, Inc. in the United States and other countries.
- </para>
- <para>
- All other trademarks referenced herein are the property of their respective
owners.
- </para>
- <para>
- The GPG fingerprint of the security(a)redhat.com key is:
- </para>
- <para>
- CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
- </para>
-</legalnotice>
Copied: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml
(from rev 553, trunk/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml
(rev 0)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<legalnotice id="Legal_Notice">
+ <title>Legal Notice</title>
+ <para>
+ <address>
+ <street>1801 Varsity Drive</street>
+ <city>Raleigh</city>,
<state>NC</state><postcode>27606-2072</postcode><country>USA</country>
+ <phone>Phone: +1 919 754 3700</phone>
+ <phone>Phone: 888 733 4281</phone>
+ <fax>Fax: +1 919 754 3701</fax>
+ <pob>PO Box 13588</pob><city>Research Triangle
Park</city>,
<state>NC</state><postcode>27709</postcode><country>USA</country>
+ </address>
+ </para>
+ <para>
+ Copyright <trademark class="copyright"/> 2008 by Red Hat, Inc.
This copyrighted material is made available to
+ anyone wishing to use, modify, copy, or redistribute it subject to the terms and
conditions of the
+ GNU <ulink
url="http://www.gnu.org/licenses/lgpl-2.1.html">Lesser
General Public License</ulink>, as published
+ by the Free Software Foundation.
+ </para>
+ <para>
+ Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of
Red Hat, Inc. in the United States and other countries.
+ </para>
+ <para>
+ All other trademarks referenced herein are the property of their respective
owners.
+ </para>
+ <para>
+ The GPG fingerprint of the security(a)redhat.com key is:
+ </para>
+ <para>
+ CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
+ </para>
+</legalnotice>
Deleted:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
===================================================================
---
trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,541 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="understanding_dna">
- <title>Understanding JBoss DNA</title>
- <sect1 id="jboss_dna_overview">
- <title>Overview</title>
- <para>JBoss DNA is a repository and set of tools that make it easy to capture,
version, analyze, and understand the
- fundamental building blocks of information. As models, service and process
definitions, schemas, source code, and other
- artifacts are added to the repository, JBoss DNA "sequences" the makeup
of these components and extracts their structure
- and interdependencies. The JBoss DNA web application allows end users to access,
visualize, and edit this information in
- the terminology and structure they are familiar with. Such domain-specific
solutions can be easily created with little or
- no programming.</para>
- <para> JBoss DNA supports the Java Content Repository (JCR) standard and is
able to provide a single integrated view of
- multiple repositories, external databases, services, and applications, ensuring
that JBoss DNA has access to the latest
- and most reliable master data. For instance, DNA could provide in a single view
valuable insight into the business
- processes and process-level services impacted by a change to in an intermediary web
server operation defined via WSDL.
- Similarly, a user could quickly view and navigate the dependencies between the data
source models and transformation
- information stored within a content repository, the code base stored within a
version control system, and the database
- schemas used by an application.</para>
- </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,
- 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>
- <mediaobject>
- <imageobject role="fo">
- <imagedata align="center"
fileref="images/dna-architecture.png" />
- </imageobject>
- <imageobject role="html">
- <imagedata align="center"
fileref="images/dna-architecture.png" />
- </imageobject>
- </mediaobject>
- <para>
- As shown in the diagram above, the major components are (starting at the top):
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">DNA Eclipse Plugins</emphasis>
- enable Eclipse users to access the contents of a JBoss DNA repository.
- </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.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Remote JCR</emphasis>
- is a client-side component for accessing remote JCR repositories.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Web Application</emphasis>
- is used by end users and domain experts to visualize, search, edit, change
and tag the repository content. The web
- application uses views to define how different types of information are to be
presented and edited in
- domain-specific ways. The goal is that this web application is easily
customized and branded for inclusion into
- other solutions and application systems. The DNA Web Application operates
upon any JCR-compliant repository,
- although it does rely upon the DNA analysis and templating services.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA Publishing
Server</emphasis>
- allows content to be downloaded, uploaded, and edited using the Atom
Publishing Protocol. With the DNA Publishing
- Server, the content of the repository can easily be created, read, edited,
and deleted using the standard HTTP
- operations of POST, GET, PUT, and DELETE (respectively). More and more tools
are being created that support working
- with Atom Publishing servers. The DNA Publishing Server operates upon any
JCR-compliant repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">DNA WebDAV Server</emphasis>
- allows clients such as Microsoft Windows and Apple OS X to connect to, read,
and edit the content in the repository
- using the WebDAV standard. Since WebDAV is an extension of HTTP, web browsers
are able to read (but not modify) the
- content served by a WebDAV compliant server. The DNA WebDAV Server operates
upon any JCR-compliant repository.
- </para>
- </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 Federation</emphasis>
- is an implementation of the JCR API that builds the content within the
repository by accessing and integrating
- information from multiple sources. 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.
- </para>
- </sect1>
- <sect1 id="sequencers">
- <title>Sequencing content</title>
- <para> The current JBoss DNA release contains a sequencing framework that is
designed to sequence data (typically files)
- stored in a JCR repository to automatically extract meaningful and useful
information. This additional information is then
- saved back into the repository, where it can be accessed and used.</para>
- <para> In other words, you can just upload various kinds of files into a JCR
repository, and DNA automatically processes
- those files to extract meaningful structured information. For example, load DDL
files into the repository, and let
- sequencers extract the structure and metadata for the database schema. Load
Hibernate configuration files into the
- repository, and let sequencers extract the schema and mapping information. Load
Java source into the repository, and let
- sequencers extract the class structure, JavaDoc, and annotations. Load a PNG, JPEG,
or other image into the repository,
- and let sequencers extract the metadata from the image and save it in the
repository. The same with XSDs, WSDL, WS
- 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
- 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>
- <listitem>
- <para>
- <emphasis role="strong">Image sequencer</emphasis>
- - A sequencer that processes the binary content of an image file, extracts
the metadata for the image, and then
- 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...
- .)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">MP3 sequencer</emphasis>
- - 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...
- .)
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- As the community develops additional sequencers, they will also be included in
JBoss DNA. Some of those that have been
- identified as being useful include:
- <itemizedlist>
- <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
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-32">DNA-32</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Web Service Definition Language
(WSDL) Sequencer</emphasis>
- - Process WSDL files and extract the services, bindings, ports, operations,
parameters, and other information. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-33">DNA-33</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Hibernate File
Sequencer</emphasis>
- - Process Hibernate configuration (cfg.xml) and mapping (hbm.xml) files to
extract the configuration and mapping
- information. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-61">DNA-61</ul...
- )
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">XML Metadata Interchange (XMI)
Sequencer</emphasis>
- - Process XMI documents that contain UML models or models using another
metamodel, extracting the model structure
- into the repository. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-31">DNA-31</ul...
- )
- </para>
- </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...
- )
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Java Class File
Sequencer</emphasis>
- - Process Java class files (bytecode) to extract the class structure
(including annotations) into the repository.
- (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-62">DNA-62</ul...
- )
- </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. (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...
- )
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Maven 2 POM
Sequencer</emphasis>
- - Process Maven 2 Project Object Model (POM) files to extract the project
information, dependencies, plugins, and
- other content. (See
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-24">DNA-24</ul...
- )
- </para>
- </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
- <ulink
url="http://jira.jboss.org/jira/browse/DNA-30">DNA-30</ul...
- )
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- The
- <link linkend="using_dna">examples</link>
- in this book go into more detail about how sequencers are managed and used, and
- <link linkend="custom_sequencers">Chapter 5</link>
- goes into detail about how to write custom sequencers.
- </para>
- </sect1>
- <sect1 id="federation">
- <title>Federating content</title>
- <para>There is a lot of information stored in many of different places:
databases, repositories, SCM systems,
- registries, file systems, services, etc. The purpose of the federation engine is to
allow applications to use the JCR API
- 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
- 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>
- <para>The JBoss DNA allows lets us leave the information where it is, yet
provide access to that information through
- the JCR API. The first benefit is that any existing applications that already use
that information can keep using it.
- Plus, if the underlying information changes, all the client applications see the
correct information. JCR clients
- even get the benefit of using JCR observation to be notified of the changes. And if a
JBoss DNA repository is
- configured to allow updates, client applications can change the information in the
repository and JBoss DNA will propagate
- those changes down to the original source.</para>
- <sect2 id="federation_connectors">
- <title>Connecting to information sources</title>
- <para>
- JBoss DNA uses connectors to interact with different information sources to get
at the content
- in those systems. Some ideas for connectors include:</para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">In-Memory Connector</emphasis>
- - Creates a transient, in-memory repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">JBoss Cache
Connector</emphasis>
- - Uses a JBoss Cache instance as a repository. JBoss Cache is a powerful
cache capable of persisting the information
- and being clustered for concurrent use by multiple processes.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Federation
Connector</emphasis>
- - Creates a single repository by accessing and federating the information in
multiple other repository sources.
- This is a powerful connector that is discussed in more detail in the <link
linkend="federated_repositories">next section</link>.
- </para>
- </listitem>
- </itemizedlist>
- <para>There are also a number of connectors that are planned:</para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">JCR Repository
Connector</emphasis>
- - Connect to and interact with other JCR repositories.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">File System
Connector</emphasis>
- - Expose the files and directories on a file system through JCR.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Maven 2 Repository
Connector</emphasis>
- - Access and expose the contents of a Maven 2 repository (either on the local
file system or via HTTP) through
- JCR.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">JDBC Metadata
Connector</emphasis>
- - Connect to relational databases via JDBC and expose their schema as content
in a repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">UDDI Connector</emphasis>
- - Interact with UDDI registries to integrate their content into a
repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">SVN Connector</emphasis>
- - Interact with Subversion software configuration management (SCM)
repositories to expose the managed resources
- through JCR. Consider using the
- <ulink
url="http://svnkit.com/">SVNkit</ulink>
- (dual license) library for an API into Subversion.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">CVS Connector</emphasis>
- - Interact with CVS software configuration management (SCM) repositories to
expose the managed resources through
- JCR.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">JDBC Storage
Connector</emphasis>
- - Store and access information in a relational database. Also useful for
persisting information in the federated
- repository not stored elsewhere.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">Distributed Database
Connector</emphasis>
- - Store and access information in a
- <ulink
url="http://www.hypertable.org/">Hypertable</ulink>
- or
- <ulink
url="http://hadoop.apache.org/hbase/">HBase</ulink>
- distributed databases. Also useful for persisting information in the
federated repository not stored elsewhere.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- If the connectors allow the information they contribute to be updated, they must
provide an
- <code>XAResource</code>
- implementation that can be used with a Java Transaction Service. Connectors that
provide read-only access need not
- provide an implementation.
- </para>
- <para>
- Also, connectors talk to
- <emphasis>sources</emphasis>
- of information, and it's quite likely that the same connector is used to talk
to different sources. Each source contains
- the configuration details (e.g., connection information, location, properties,
options, etc.) for working with that
- particular source, as well as a reference to the connector that should be used to
establish connections to the source.
- And of course, sources can be added or removed without having to stop and restart
the federated repository.
- </para>
- </sect2>
- <sect2 id="federated_repositories">
- <title>Federated repositories</title>
- <para> The federation connector works by effectively building up a single
graph by querying each source and merging or
- unifying the responses. This information is cached, which improves performance,
reduces the number of (potentially
- expensive) remote calls, reduces the load on the sources, and helps mitigate
problems with source availability. As
- clients interact with the repository, this cache is consulted first. When the
requested portion of the graph (or
- "subgraph") is contained completely in the cache, it is retuned
immediately. However, if any part of the requested
- subgraph is not in the cache, each source is consulted for their contributions to
that subgraph, and any results are
- cached.</para>
- <para> This basic flow makes it possible for the federated repository to
build up a local cache of the integrated graph
- (or at least the portions that are used by clients). In fact, the federated
repository caches information in a manner
- that is similar to that of the Domain Name System (DNS). As sources are consulted
for their contributions, the source
- also specifies whether it is the authoritative source for this information (some
sources that are themselves federated
- may not be the information's authority), whether the information may be
modified, the time-to-live (TTL) value (the time
- after which the cached information should be refreshed), and the expiration time
(the time after which the cached
- information is no longer valid). In effect, the source has complete control over
how the information it contributes is
- cached and used.</para>
- <para>
- The federated repository also needs to incorporate
- <emphasis>negative caching</emphasis>
- , which is storage of the knowledge that something does not exist. Sources can be
configured to contribute information
- only below certain paths (e.g.,
- <code>/A/B/C</code>
- ), and the federation engine can take advantage of this by never consulting that
source for contributions to information
- on other paths. However, below that path, any negative responses must also be
cached (with appropriate TTL and expiry
- parameters) to prevent the exclusion of that source (in case the source has
information to contribute at a later time)
- or the frequent checking with the source.
- </para>
- </sect2>
- <sect2 id="federation_queries">
- <title>Searching and querying</title>
- <para> The JBoss DNA federated repository will support queries against the
integrated and unified graph. In some
- situations the query can be determined to apply to a single source, but in most
situations the query must be planned
- (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
- information is to be compared.) JBoss DNA will incorporate a search engine (e.g.,
likely to be Lucene) and will populate
- the engine's indexes using the federated content and the cached information.
Notifications of changing information will
- be reflected in the indexes, but some sources may want to explicitly allow or
disallow periodic crawling of their
- content.</para>
- </sect2>
- <sect2 id="federation_updates">
- <title>Updating content</title>
- <para>
- The JBoss DNA federated repositories also make it possible for client
applications to make changes to the unified graph
- within the context of distributed transactions. According to the JCR API, client
applications use the Java Transaction
- API (JTA) to control the boundaries of their transactions. Meanwhile, the
federated repository uses a
- <ulink
url="http://www.jboss.org/jbosstm/">distributed
transaction service</ulink>
- to coordinate the XA resources provided by the connectors.
- </para>
- <para> It is quite possible that clients add properties to nodes in the
unified graph, and that this information cannot be
- handled by the same underlying source that contributed to the node. In this case,
the federated repository can be
- configured with a fallback source that will be used used to store this
"extra" information.</para>
- <para>
- It is a goal that non-XA sources (i.e., sources that use connectors without XA
resources) can participate in distributed
- transactions through the use of
- <emphasis>compensating transactions</emphasis>
- . Because the JBoss DNA federation engine implements the JCR observation system,
it is capable of recording all of the
- changes made to the distributed graph (and those changes sent to each updatable
source). Therefore, if a non-XA source
- is involved in a distributed transaction that must be rolled back, any changes
made to non-XA sources can be undone. (Of
- course, this does not make the underlying source transactional: non-transactional
sources still may expose the interim
- changes to other clients.)
- </para>
- </sect2>
- <sect2 id="federation_events">
- <title>Observing changes</title>
- <para> The JCR API supports observing a repository to receive notifications
of additions, changes and deletions of nodes
- and properties. The JBoss DNA federated repository will support this API through
two primary means.</para>
- <para> When the changes are made through the federated repository, the JBoss
DNA federation engine is well aware of the
- set of changes that have been (or are being) made to the unified graph. These
events are directly propagated to
- listeners.</para>
- <para> Sources have the ability to publish events, making it possible for the
JBoss DNA federation engine and clients that
- have registered listeners to be notified of changes in the information managed by
that source. These events are first
- processed by the federation engine and possibly altered based upon contributions
from other sources. (The federation
- engine also uses these events to update or purge information in the cache, which
may add to the event set.) The
- resulting (and possibly altered) event set is then sent to all client
listeners.</para>
- </sect2>
- </sect1>
-</chapter>
Copied:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
(from rev 553,
trunk/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml
(rev 0)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/understanding_dna.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,548 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="understanding_dna">
+ <title>Understanding JBoss DNA</title>
+ <sect1 id="jboss_dna_overview">
+ <title>Overview</title>
+ <para>JBoss DNA is a repository and set of tools that make it easy to capture,
version, analyze, and understand the
+ fundamental building blocks of information. As models, service and process
definitions, schemas, source code, and other
+ artifacts are added to the repository, JBoss DNA "sequences" the makeup
of these components and extracts their structure
+ and interdependencies. The JBoss DNA web application allows end users to access,
visualize, and edit this information in
+ the terminology and structure they are familiar with. Such domain-specific
solutions can be easily created with little or
+ no programming.</para>
+ <para> JBoss DNA supports the Java Content Repository (JCR) standard and is
able to provide a single integrated view of
+ multiple repositories, external databases, services, and applications, ensuring
that JBoss DNA has access to the latest
+ and most reliable master data. For instance, DNA could provide in a single view
valuable insight into the business
+ processes and process-level services impacted by a change to in an intermediary web
server operation defined via WSDL.
+ Similarly, a user could quickly view and navigate the dependencies between the data
source models and transformation
+ information stored within a content repository, the code base stored within a
version control system, and the database
+ schemas used by an application.</para>
+ </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,
+ 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>
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata align="center"
fileref="images/dna-architecture.png" />
+ </imageobject>
+ <imageobject role="html">
+ <imagedata align="center"
fileref="images/dna-architecture.png" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ As shown in the diagram above, the major components are (starting at the top):
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Eclipse Plugins</emphasis>
+ enable Eclipse users to access the contents of a JBoss DNA repository.
+ </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.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Remote JCR</emphasis>
+ is a client-side component for accessing remote JCR repositories.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Web Application</emphasis>
+ is used by end users and domain experts to visualize, search, edit, change
and tag the repository content. The web
+ application uses views to define how different types of information are to be
presented and edited in
+ domain-specific ways. The goal is that this web application is easily
customized and branded for inclusion into
+ other solutions and application systems. The DNA Web Application operates
upon any JCR-compliant repository,
+ although it does rely upon the DNA analysis and templating services.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA Publishing
Server</emphasis>
+ allows content to be downloaded, uploaded, and edited using the Atom
Publishing Protocol. With the DNA Publishing
+ Server, the content of the repository can easily be created, read, edited,
and deleted using the standard HTTP
+ operations of POST, GET, PUT, and DELETE (respectively). More and more tools
are being created that support working
+ with Atom Publishing servers. The DNA Publishing Server operates upon any
JCR-compliant repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">DNA WebDAV Server</emphasis>
+ allows clients such as Microsoft Windows and Apple OS X to connect to, read,
and edit the content in the repository
+ using the WebDAV standard. Since WebDAV is an extension of HTTP, web browsers
are able to read (but not modify) the
+ content served by a WebDAV compliant server. The DNA WebDAV Server operates
upon any JCR-compliant repository.
+ </para>
+ </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.
+ </para>
+ </sect1>
+ <sect1 id="sequencers">
+ <title>Sequencing content</title>
+ <para> The current JBoss DNA release contains a sequencing framework that is
designed to sequence data (typically files)
+ stored in a JCR repository to automatically extract meaningful and useful
information. This additional information is then
+ saved back into the repository, where it can be accessed and used.</para>
+ <para> In other words, you can just upload various kinds of files into a JCR
repository, and DNA automatically processes
+ those files to extract meaningful structured information. For example, load DDL
files into the repository, and let
+ sequencers extract the structure and metadata for the database schema. Load
Hibernate configuration files into the
+ repository, and let sequencers extract the schema and mapping information. Load
Java source into the repository, and let
+ sequencers extract the class structure, JavaDoc, and annotations. Load a PNG, JPEG,
or other image into the repository,
+ and let sequencers extract the metadata from the image and save it in the
repository. The same with XSDs, WSDL, WS
+ 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
+ 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>
+ <listitem>
+ <para>
+ <emphasis role="strong">Image sequencer</emphasis>
+ - A sequencer that processes the binary content of an image file, extracts
the metadata for the image, and then
+ 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...
+ .)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">MP3 sequencer</emphasis>
+ - 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...
+ .)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ As the community develops additional sequencers, they will also be included in
JBoss DNA. Some of those that have been
+ identified as being useful include:
+ <itemizedlist>
+ <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
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-32">DNA-32</ul...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Web Service Definition Language
(WSDL) Sequencer</emphasis>
+ - Process WSDL files and extract the services, bindings, ports, operations,
parameters, and other information. (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-33">DNA-33</ul...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Hibernate File
Sequencer</emphasis>
+ - Process Hibernate configuration (cfg.xml) and mapping (hbm.xml) files to
extract the configuration and mapping
+ information. (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-61">DNA-61</ul...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">XML Metadata Interchange (XMI)
Sequencer</emphasis>
+ - Process XMI documents that contain UML models or models using another
metamodel, extracting the model structure
+ into the repository. (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-31">DNA-31</ul...
+ )
+ </para>
+ </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...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Java Class File
Sequencer</emphasis>
+ - Process Java class files (bytecode) to extract the class structure
(including annotations) into the repository.
+ (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-62">DNA-62</ul...
+ )
+ </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. (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...
+ )
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Maven 2 POM
Sequencer</emphasis>
+ - Process Maven 2 Project Object Model (POM) files to extract the project
information, dependencies, plugins, and
+ other content. (See
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-24">DNA-24</ul...
+ )
+ </para>
+ </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
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA-30">DNA-30</ul...
+ )
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The
+ <link linkend="using_dna">examples</link>
+ in this book go into more detail about how sequencers are managed and used, and
+ <link linkend="custom_sequencers">Chapter 5</link>
+ goes into detail about how to write custom sequencers.
+ </para>
+ </sect1>
+ <sect1 id="federation">
+ <title>JCR and federated repositories</title>
+ <para>There is a lot of information stored in many of different places:
databases, repositories, SCM systems,
+ registries, file systems, services, etc. The purpose of the federation engine is to
allow applications to use the JCR API
+ 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
+ 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>
+ <para>The JBoss DNA allows lets us leave the information where it is, yet
provide access to that information through
+ the JCR API. The first benefit is that any existing applications that already use
that information can keep using it.
+ Plus, if the underlying information changes, all the client applications see the
correct information. JCR clients
+ even get the benefit of using JCR observation to be notified of the changes. And if a
JBoss DNA repository is
+ configured to allow updates, client applications can change the information in the
repository and JBoss DNA will propagate
+ those changes down to the original source.</para>
+ <sect2 id="repository-connectors">
+ <title>Connecting to information sources</title>
+ <para>
+ JBoss DNA uses connectors to interact with different information sources to get
at the content
+ in those systems. Some ideas for connectors include:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">In-Memory Connector</emphasis>
+ - Creates a transient, in-memory repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">JBoss Cache
Connector</emphasis>
+ - Uses a JBoss Cache instance as a repository. JBoss Cache is a powerful
cache capable of persisting the information
+ and being clustered for concurrent use by multiple processes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Federation
Connector</emphasis>
+ - Creates a single repository by accessing and federating the information in
multiple other repository sources.
+ This is a powerful connector that is discussed in more detail in the <link
linkend="federated_repositories">next section</link>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>There are also a number of connectors that are planned:</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">JCR Repository
Connector</emphasis>
+ - Connect to and interact with other JCR repositories.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">File System
Connector</emphasis>
+ - Expose the files and directories on a file system through JCR.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Maven 2 Repository
Connector</emphasis>
+ - Access and expose the contents of a Maven 2 repository (either on the local
file system or via HTTP) through
+ JCR.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">JDBC Metadata
Connector</emphasis>
+ - Connect to relational databases via JDBC and expose their schema as content
in a repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">UDDI Connector</emphasis>
+ - Interact with UDDI registries to integrate their content into a
repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">SVN Connector</emphasis>
+ - Interact with Subversion software configuration management (SCM)
repositories to expose the managed resources
+ through JCR. Consider using the
+ <ulink
url="http://svnkit.com/">SVNkit</ulink>
+ (dual license) library for an API into Subversion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">CVS Connector</emphasis>
+ - Interact with CVS software configuration management (SCM) repositories to
expose the managed resources through
+ JCR.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">JDBC Storage
Connector</emphasis>
+ - Store and access information in a relational database. Also useful for
persisting information in the federated
+ repository not stored elsewhere.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">Distributed Database
Connector</emphasis>
+ - Store and access information in a
+ <ulink
url="http://www.hypertable.org/">Hypertable</ulink>
+ or
+ <ulink
url="http://hadoop.apache.org/hbase/">HBase</ulink>
+ distributed databases. Also useful for persisting information in the
federated repository not stored elsewhere.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If the connectors allow the information they contribute to be updated, they must
provide an
+ <code>XAResource</code>
+ implementation that can be used with a Java Transaction Service. Connectors that
provide read-only access need not
+ provide an implementation.
+ </para>
+ <para>
+ Also, connectors talk to
+ <emphasis>sources</emphasis>
+ of information, and it's quite likely that the same connector is used to talk
to different sources. Each source contains
+ the configuration details (e.g., connection information, location, properties,
options, etc.) for working with that
+ particular source, as well as a reference to the connector that should be used to
establish connections to the source.
+ And of course, sources can be added or removed without having to stop and restart
the federated repository.
+ </para>
+ </sect2>
+ <sect2 id="federated_repositories">
+ <title>Federated repositories</title>
+ <para> The federation connector works by effectively building up a single
graph by querying each source and merging or
+ unifying the responses. This information is cached, which improves performance,
reduces the number of (potentially
+ expensive) remote calls, reduces the load on the sources, and helps mitigate
problems with source availability. As
+ clients interact with the repository, this cache is consulted first. When the
requested portion of the graph (or
+ "subgraph") is contained completely in the cache, it is retuned
immediately. However, if any part of the requested
+ subgraph is not in the cache, each source is consulted for their contributions to
that subgraph, and any results are
+ cached.</para>
+ <para> This basic flow makes it possible for the federated repository to
build up a local cache of the integrated graph
+ (or at least the portions that are used by clients). In fact, the federated
repository caches information in a manner
+ that is similar to that of the Domain Name System (DNS). As sources are consulted
for their contributions, the source
+ also specifies whether it is the authoritative source for this information (some
sources that are themselves federated
+ may not be the information's authority), whether the information may be
modified, the time-to-live (TTL) value (the time
+ after which the cached information should be refreshed), and the expiration time
(the time after which the cached
+ information is no longer valid). In effect, the source has complete control over
how the information it contributes is
+ cached and used.</para>
+ <para>
+ The federated repository also needs to incorporate
+ <emphasis>negative caching</emphasis>
+ , which is storage of the knowledge that something does not exist. Sources can be
configured to contribute information
+ only below certain paths (e.g.,
+ <code>/A/B/C</code>
+ ), and the federation engine can take advantage of this by never consulting that
source for contributions to information
+ on other paths. However, below that path, any negative responses must also be
cached (with appropriate TTL and expiry
+ parameters) to prevent the exclusion of that source (in case the source has
information to contribute at a later time)
+ or the frequent checking with the source.
+ </para>
+ </sect2>
+ <sect2 id="federation_queries">
+ <title>Searching and querying</title>
+ <para> The JBoss DNA federated repository will support queries against the
integrated and unified graph. In some
+ situations the query can be determined to apply to a single source, but in most
situations the query must be planned
+ (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
+ information is to be compared.) JBoss DNA will incorporate a search engine (e.g.,
likely to be Lucene) and will populate
+ the engine's indexes using the federated content and the cached information.
Notifications of changing information will
+ be reflected in the indexes, but some sources may want to explicitly allow or
disallow periodic crawling of their
+ content.</para>
+ </sect2>
+ <sect2 id="federation_updates">
+ <title>Updating content</title>
+ <para>
+ The JBoss DNA federated repositories also make it possible for client
applications to make changes to the unified graph
+ within the context of distributed transactions. According to the JCR API, client
applications use the Java Transaction
+ API (JTA) to control the boundaries of their transactions. Meanwhile, the
federated repository uses a
+ <ulink
url="http://www.jboss.org/jbosstm/">distributed
transaction service</ulink>
+ to coordinate the XA resources provided by the connectors.
+ </para>
+ <para> It is quite possible that clients add properties to nodes in the
unified graph, and that this information cannot be
+ handled by the same underlying source that contributed to the node. In this case,
the federated repository can be
+ configured with a fallback source that will be used used to store this
"extra" information.</para>
+ <para>
+ It is a goal that non-XA sources (i.e., sources that use connectors without XA
resources) can participate in distributed
+ transactions through the use of
+ <emphasis>compensating transactions</emphasis>
+ . Because the JBoss DNA federation engine implements the JCR observation system,
it is capable of recording all of the
+ changes made to the distributed graph (and those changes sent to each updatable
source). Therefore, if a non-XA source
+ is involved in a distributed transaction that must be rolled back, any changes
made to non-XA sources can be undone. (Of
+ course, this does not make the underlying source transactional: non-transactional
sources still may expose the interim
+ changes to other clients.)
+ </para>
+ </sect2>
+ <sect2 id="federation_events">
+ <title>Observing changes</title>
+ <para> The JCR API supports observing a repository to receive notifications
of additions, changes and deletions of nodes
+ and properties. The JBoss DNA federated repository will support this API through
two primary means.</para>
+ <para> When the changes are made through the federated repository, the JBoss
DNA federation engine is well aware of the
+ set of changes that have been (or are being) made to the unified graph. These
events are directly propagated to
+ listeners.</para>
+ <para> Sources have the ability to publish events, making it possible for the
JBoss DNA federation engine and clients that
+ have registered listeners to be notified of changes in the information managed by
that source. These events are first
+ processed by the federation engine and possibly altered based upon contributions
from other sources. (The federation
+ engine also uses these events to update or purge information in the cache, which
may add to the event set.) The
+ resulting (and possibly altered) event set is then sent to all client
listeners.</para>
+ </sect2>
+ </sect1>
+</chapter>
Deleted:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml
===================================================================
---
trunk/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,267 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="using_dna_repositories">
- <title>Using JBoss DNA Repositories</title>
- <para>As we've mentioned before, one of the capabilities of JBoss DNA is to
provide access through
- <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">JCR</ulink>
to different kinds of repositories and storage systems.
- Your applications work with the JCR API, but through JBoss DNA are able to accesses the
content from where the information
- exists - not just a single purpose-built repository. This is fundamentally what makes
JBoss DNA different.</para>
- <para>How does JBoss DNA do this? At the heart of JBoss DNA and it's JCR
implementation is a simple graph-based connector
- system. Essentially, the JBoss DNA JCR implementation makes use of a single repository
source, from which all the
- content is accessed.
- <figure id="dnajcr-and-connector">
- <title>JBoss DNA's JCR implementation delegates to a repository
source</title>
- <graphic align="center" scale="100"
fileref="dnajcr-and-connector.png"/>
- </figure>
- That single repository source could be an in-memory repository, a JBoss Cache instance,
or a federated repository.
- <figure id="dna-connectors-0.2">
- <title>JBoss DNA can put JCR on top of multiple kinds of systems</title>
- <graphic align="center" scale="100"
fileref="dna-connectors-0.2.png"/>
- </figure>
- And the JBoss DNA project has plans to create other connectors, too. For instance,
we're going to build a connector
- to other JCR repositories. And another to a file system, so that the files and
directories on an area of the file system
- can be accessed through JCR. Of course, if we don't have a connector to suit
your needs, you can write your own.
- <figure id="dna-connectors-future">
- <title>Future JBoss DNA connectors</title>
- <graphic align="center" scale="100"
fileref="dna-connectors-future.png"/>
- </figure>
- </para>
- <note>
- <para>You might be thinking that these connectors are interesting, but what do
they really provide? Is it really useful
- to use JCR to access a relational database rather than JDBC? Or, why access the
files on a file system when there
- are already mechanisms to do that?</para>
- <para>While putting JCR on top of a single system (like a JDBC database)
probably isn't that interesting, what
- <emphasis>is</emphasis> interesting is accessing the information in
multiple systems <emphasis>as if all that information were
- in a single JCR repository</emphasis>. That's what the federated
repository source is all about.</para>
- <para>Think of it this way: use JCR to get to the schemas of multiple relational
databases <emphasis>and</emphasis> the schemas
- defined by DDL files in your SVN repository <emphasis>and</emphasis> the
schemas defined by logical models stored on your file system.
- </para>
- </note>
- <para>So with this very high-level summary, let's dive a little deeper and
look at how to configure and use JBoss DNA and JCR.</para>
- <sect1 id="repository_service">
- <title>Configuring the Repository Service</title>
- <para>The JBoss DNA <emphasis>repository service</emphasis> is the
component that manages the <emphasis>repositories</emphasis>
- and connections to them. The service reads its configuration from a
<code>RepositorySource</code> instance (i.e., the
- "configuration repository") and automatically sets up the repositories
given the <code>RepositorySource</code> instances
- found in the configuration repository.</para>
- <note>
- <para>Configuring JBoss DNA services is a bit more manual than is ideal. As
you'll see, JBoss DNA uses dependency
- injection to allow a great deal of flexibility in how it can be configured and
customized. But this flexibility
- makes it more difficult for you to use. We understand this, and will soon provide
a much easier way to set up
- and manage JBoss DNA. Current plans are to use the <ulink
url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>
- along with a configuration repository.</para>
- </note>
- <para>To set up the repository service, we need to first set up a few other
objects:
- <itemizedlist>
- <listitem>
- <para>A <emphasis>factory for execution contexts</emphasis>.
Execution contexts define the context (or environment)
- in which the service runs and in which operations against repositories are
performed. <code>ExecutionContext</code>
- instances can be created using JAAS application contexts, meaning that they
contain the information about the subject
- that the software represents. Execution contexts also provide access to the all
of the factories and utilities
- used throughout the services and components, and it is through this mechanism
that you can inject your own behavior.
- For example, if your application already had a notion of namespaces, you could
override the execution context's
- <code>NamespaceRegistry</code> to use the namespaces defined in your
application.</para>
- </listitem>
- <listitem>
- <para>A <emphasis>repository library</emphasis> that manages the
list of <code>RepositorySource</code> instances.
- The library makes sure to inject the environments into each repository source,
and it provides for each source
- a configurable pool of connections.</para>
- </listitem>
- <listitem>
- <para>A <emphasis>configuration repository</emphasis> that
contains descriptions of all of the repository sources
- as well as any information those sources need. Because this is a regular
repository, this could be a simple
- repository with content loaded from an XML file (as in this example). Or it
could be a shared
- central repository with information about all of the JBoss DNA processes across
your company.</para>
- </listitem>
- </itemizedlist>
- With these components in place, we can then instantiate the
<code>RepositoryService</code> and start it (using its
- <code>ServiceAdministrator</code>). During startup, the service reads the
configuration repository and loads any
- defined <code>RepositorySource</code> instances into the repository
library, using the class loader factory
- (available in the <code>ExecutionContext</code>) to obtain.
- </para>
- <para>Here's sample code that shows how to set up and start the repository
service. You can see something similar
- in the example application in the <code>startRepositories()</code> method
of the <code>org.jboss.example.dna.repository.RepositoryClient</code>
class.</para>
- <programlisting role="JAVA"><![CDATA[
- // Create the factory for execution contexts.
- ExecutionContextFactory contextFactory = new BasicExecutionContextFactory();
-
- // Create the execution context that we'll use for the services. If we'd want
to use JAAS, we'd
- // create the context by supplying LoginContext, AccessControlContext, or even Subject
with
- // CallbackHandlers. But this example doesn't use JAAS in this example.
- ExecutionContext context = contextFactory.create();
-
- // Create the library for the RepositorySource instances ...
- RepositoryLibrary sources = new RepositoryLibrary(contextFactory);
-
- // Load into the source manager the repository source for the configuration repository
...
- InMemoryRepositorySource configSource = new InMemoryRepositorySource();
- configSource.setName("Configuration");
- sources.addSource(configSource);
-
- // Now instantiate the Repository Service ...
- RepositoryService service = new RepositoryService(sources, configSource.getName(),
context);
- service.getAdministrator().start();
- ]]></programlisting>
- <para>After startup completes, the repositories are ready to be used. The client
application obtains the list of repositories
- and presents them to the user. When the user selects one, the client application
starts navigating that repository
- starting at its root node (e.g., the "/" path). As you type a command to
list the contents of the current node or to
- "change directories" to a different node, the client application obtains the
information for the node using a simple
- procedure:
- <orderedlist>
- <listitem>
- <para>Get a connection to the repository.</para>
- </listitem>
- <listitem>
- <para>Using the connection, find the current node and read its properties and
children, putting the information
- into a simple Java plain old Java object (POJO).</para>
- </listitem>
- <listitem>
- <para>Close the connection to the repository (in a finally block to ensure it
always happens).</para>
- </listitem>
- </orderedlist>
- </para>
- <sect2 id="using_jcr_with_dna">
- <title>Using JCR to read repository</title>
- <para>If we want to perform these steps using JCR, a JCR
<code>Session</code> represents our connection.
- So after we create a <code>JcrRepository</code> instance pointing to our
repository library, we can
- then login to obtain a JCR session:</para>
- <programlisting role="JAVA"><![CDATA[
- JcrRepository jcrRepository = new JcrRepository(contextFactory, sources);
- Session session = jcrRepository.login(sourceName);
- ]]></programlisting>
- <para>Now, the above code doesn't do any authentication; it essentially
trusts the caller has the appropriate privileges.
- Normally, your application will need to authenticate the user, so let's look at
how that's done.</para>
- <para>JBoss DNA uses the <ulink
url="http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutoria...
- Authentication and Authorization Service (JAAS)</ulink>, making it possible to
use any existing JAAS security provider.</para>
- <note>
- <para>There are numerous JAAS providers, but one of the best open-source
implementations is
- <ulink
url="http://www.jboss.org/jbosssecurity/">JBoss
Security</ulink>, which can authenticate using LDAP, certificates,
- the operating system, and federated SSO (among others).</para>
- </note>
- <para>The JCR API defines a <code>Credentials</code> marker
interface, an instance of which can be passed to the
- <code>Session.login(...)</code> method. Rather than provide a concrete
implementation of this interface, JBoss DNA
- allows you to pass any implementation of <code>Credentials</code> that
also has one of the following methods:
- <itemizedlist>
- <listitem>
- <para><code>getLoginContext()</code> that returns a
<code>javax.security.auth.login.LoginContext</code> instance.</para>
- </listitem>
- <listitem>
- <para><code>getAccessControlContext()</code> that returns a
<code>java.security.AccessControlContext</code> instance.</para>
- </listitem>
- </itemizedlist>
- This way, your application can obtain the JAAS <code>LoginContext</code>
or <code>AccessControlContext</code> however it wants,
- and then merely passes that into DNA through the JCR
<code>Credentials</code>. No interfaces or classes specific to JBoss DNA are
required.
- </para>
- <para>The following code shows how this is done, using an anonymous inner class
for the <code>Credentials</code> implementation.</para>
- <programlisting role="JAVA"><![CDATA[
- CallbackHandler callbackHandler = // as needed by your app, according to JAAS
- final LoginContext loginContext = new
LoginContext("MyAppContextName",callbackHandler);
- Credentials credentials = new Credentials() {
- public LoginContext getLoginContext() { return loginContext; }
- };
- JcrRepository jcrRepository = new JcrRepository(contextFactory, sources);
- Session session = jcrRepository.login(credentials, sourceName);
- ]]></programlisting>
- <para>Once you have a JCR session, you can then use it to find the node of
interest and access the necessary information. All of this
- code will use only the JCR API - there's nothing specific to JBoss DNA's
implementation. And remember, when you're finished with
- the session, be sure to logout (usually in a <code>finally</code>
block):</para>
- <programlisting role="JAVA"><![CDATA[
- if (session != null) session.logout();
- ]]></programlisting>
- <para>Like many people recommend with JCR, you can create either long-lived or
short-lived JCR <code>Session</code>s. The
- JBoss DNA implementation of JCR was designed to efficiently do either.</para>
- </sect2>
- <sect2 id="using_dna_repositories_with_dna_api">
- <title>Using JBoss DNA's API to read repository</title>
- <para>Although we recommend using JCR, JBoss DNA has an internal command-based
API that completely side-steps JCR and provides
- very simple graph-based operations. For more information, see the
<code>RepositoryClient</code> class in the example.</para>
- <note>
- <para>This API is likely to undergo changes in the next few releases, and using
it at this time is not suggested.</para>
- </note>
- </sect2>
- </sect1>
- <sect1 id="shutting_down_repository_service">
- <title>Shutting down the Repository Service</title>
- <para>In the first part of this chapter, we saw how to instantiate, configure,
and start the <code>RepositoryService</code>.
- We then saw how to use JCR to access the repository service by creating JCR
<code>Session</code>s, and how to log out of those
- sessions when no longer needed.</para>
- <para>In this short section we'll see how to shut down the
<code>RepositoryService</code> and <code>RepositoryLibrary</code>
- when you're finished with all of the repositories. It's a simple but
important step, since this closes all outstanding
- connections that may be sitting unused in the library's connection
pools.</para>
- <para>Shutting down these components is very straightforward: get the
<code>ServiceAdministrator</code> on each, and call
<code>shutdown()</code>.</para>
- <programlisting role="JAVA"><![CDATA[
- // Shut down the repository service ...
- repositoryService.getAdministrator().shutdown();
-
- // Shut down the manager of the RepositorySource instances, waiting until all
connections are closed
- sources.getAdministrator().shutdown();
- sources.getAdministrator().awaitTermination(1, TimeUnit.SECONDS);
- ]]></programlisting>
- <para>The <code>shutdown()</code> method attempts to close all open
and unused resources (such as open and unused connections in the pool).
- No more connections can be created, and any connections that are currently in use are
not closed but allowed to be used and closed normally.
- When the last connection is used, the service then transitions to a
<emphasis>terminated</emphasis> state, which you can wait for using
- the <code>awaitTermination(int,TimeUnit)</code> method.</para>
- <para>If you want to shutdown the services immediately, then you could call
<code>shutdownNow()</code>, which blocks while it attempts to immediately
- close all connections - <emphasis>even those currently in use</emphasis>.
So, while you generally want to use <code>shutdown()</code>,
- it is good to be aware that this <code>shutdownNow()</code> method does
exist.</para>
- </sect1>
- <sect1 id="example_repository_application_review">
- <title>Reviewing the example repository application</title>
- <para>Recall that the example repository application consists of a client
application that sets up a repository service and the
- repositories defined in a configuration repository, allowing the user to pick a
repository and interactively navigate
- the selected repository. Several repositories are set up, including several in-memory
repositories and one federated repository
- that dynamically federates the content from the other repositories.</para>
- <para>
- The example is comprised of 2 classes and 1 interface, located in the
<code>src/main/java</code> directory:</para>
- <programlisting><![CDATA[
- org/jboss/example/dna/repositories/ConsoleInput.java
- /RepositoryClient.java
- /UserInterface.java
- ]]></programlisting>
- <para><code>RepositoryClient</code> is the class that contains the
main application. It uses an instance of the
- <code>UserInterface</code> interface to methods that will be called at
runtime to obtain information about the
- files that are imported into the in-memory repositories and the JAAS
<code>CallbackHandler</code> implementation
- that will be used by JAAS to prompt the user for authentication information.
Finally, the <code>ConsoleInput</code>
- is an implementation of this that creates a text user interface, allowing the user to
operate the client from the command-line.
- We can easily create a graphical implementation of
<code>UserInterface</code> at a later date, or we can also create a mock
- implementation for testing purposes that simulates a user entering data. This allows
us to check the behavior of the client
- automatically using conventional JUnit test cases, as demonstrated by the code in the
<code>src/test/java</code> directory:</para>
- <programlisting><![CDATA[
- org/jboss/example/dna/sequencers/RepositoryClientTest.java
- /RepositoryClientUsingJcrTest.java
- ]]></programlisting>
- <para>The code we presented earlier in this chapter represent the bulk of the
JBoss DNA and JCR-specific code used in the
- <code>RepositoryClient</code>, so we won't cover it in more detail
here. If you want to see that detail, please refer
- to the sample client code.</para>
- </sect1>
- <sect1 id="using_dna_repositories_review">
- <title>Summarizing what we just did</title>
- <para>In this chapter we covered the different JBoss DNA components used for
accessing repositories through JCR, including
- repositories that federate their content from the content of other repositories.
Specifically, we described how the
- <code>RepositoryService</code> and <code>JcrRepository</code>
can be configured and used.</para>
- </sect1>
-</chapter>
-
Copied:
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml
(from rev 553,
trunk/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml)
===================================================================
---
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml
(rev 0)
+++
tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/content/using_dna_repositories.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<chapter id="using_dna_repositories">
+ <title>Using JBoss DNA Repositories</title>
+ <para>One of the capabilities of JBoss DNA is to provide access through
+ <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">JCR</ulink>
to different kinds of repositories and storage systems.
+ Your applications work with the JCR API, but through JBoss DNA you're able to
accesses the content from where the information
+ exists - not just a single purpose-built repository. This is fundamentally what makes
JBoss DNA different.</para>
+ <para>How does JBoss DNA do this? At the heart of JBoss DNA and it's JCR
implementation is a simple connector
+ system that is designed around creating and accessing graphs. The JBoss DNA JCR
implementation actually just sits on
+ top of a single repository source, which it uses to access of the repositories
content.
+ <figure id="dnajcr-and-connector">
+ <title>JBoss DNA's JCR implementation delegates to a repository
source</title>
+ <graphic align="center" scale="100"
fileref="dnajcr-and-connector.png"/>
+ </figure>
+ That single repository source could be an in-memory repository, a JBoss Cache instance,
or a federated repository.
+ <figure id="dna-connectors-0.2">
+ <title>JBoss DNA can put JCR on top of multiple kinds of systems</title>
+ <graphic align="center" scale="100"
fileref="dna-connectors-0.2.png"/>
+ </figure>
+ And the JBoss DNA project has plans to create other connectors, too. For instance,
we're going to build a connector
+ to other JCR repositories. And another to a file system, so that the files and
directories on an area of the file system
+ can be accessed through JCR. Of course, if we don't have a connector to suit
your needs, you can write your own.
+ <figure id="dna-connectors-future">
+ <title>Future JBoss DNA connectors</title>
+ <graphic align="center" scale="100"
fileref="dna-connectors-future.png"/>
+ </figure>
+ </para>
+ <note>
+ <para>You might be thinking that these connectors are interesting, but what do
they really provide? Is it really useful
+ to use JCR to access a relational database rather than JDBC? Or, why access the
files on a file system when there
+ are already mechanisms to do that?</para>
+ <para>Maybe putting JCR on top of a single system (like a JDBC database)
isn't that interesting. What
+ <emphasis>is</emphasis> interesting, though, is accessing the information
in multiple systems <emphasis>as if all that information were
+ in a single JCR repository</emphasis>. That's what the federated
repository source is all about. The JBoss DNA connector
+ system just makes it possible to interact with all these systems in the same
way.</para>
+ <para>Think of it this way: with JBoss DNA, you can use JCR to get to the schemas
of multiple relational databases <emphasis>and</emphasis> the schemas
+ defined by DDL files in your SVN repository <emphasis>and</emphasis> the
schemas defined by logical models stored on your file system.
+ </para>
+ </note>
+ <para>So with this very high-level summary, let's dive a little deeper and
look at how to configure and use JBoss DNA and JCR.</para>
+ <sect1 id="repository_service">
+ <title>Configuring the Repository Service</title>
+ <para>The JBoss DNA <emphasis>repository service</emphasis> is the
component that manages the <emphasis>repositories</emphasis>
+ and connections to them. The service reads its configuration from a
<code>RepositorySource</code> instance (i.e., the
+ "configuration repository") and automatically sets up the repositories
given the <code>RepositorySource</code> instances
+ found in the configuration repository.</para>
+ <note>
+ <para>Configuring JBoss DNA services is more manual and complex than we want. As
you'll see, JBoss DNA uses dependency
+ injection to allow a great deal of flexibility in how it can be configured and
customized. But this flexibility
+ makes it more difficult for you to use. We understand this, and will soon provide
a much easier way to set up
+ and manage JBoss DNA. Current plans are to use the <ulink
url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>
+ along with a configuration repository that makes it very easy to set up and manage
JBoss DNA, whether it's used in
+ a simple application or a cluster of processes.</para>
+ </note>
+ <para>To set up the repository service, we need to first set up a few other
objects:
+ <itemizedlist>
+ <listitem>
+ <para>A <emphasis>factory for execution contexts</emphasis>.
Execution contexts define the context (or environment)
+ in which the service runs and in which operations against repositories are
performed. <code>ExecutionContext</code>
+ instances can be created using JAAS application contexts, meaning that they
contain the information about the subject
+ that the software represents. Execution contexts also provide access to the all
of the factories and utilities
+ used throughout the services and components, and it is through this mechanism
that you can inject your own behavior.
+ For example, if your application already had a notion of namespaces, you could
override the execution context's
+ <code>NamespaceRegistry</code> to use the namespaces defined in your
application.</para>
+ </listitem>
+ <listitem>
+ <para>A <emphasis>repository library</emphasis> that manages the
list of <code>RepositorySource</code> instances.
+ The library makes sure to inject the environments into each repository source,
and it provides for each source
+ a configurable pool of connections.</para>
+ </listitem>
+ <listitem>
+ <para>A <emphasis>configuration repository</emphasis> that
contains descriptions of all of the repository sources
+ as well as any information those sources need. Because this is a regular
repository, this could be a simple
+ repository with content loaded from an XML file (as in this example). Or it
could be a shared
+ central repository with information about all of the JBoss DNA processes across
your company.</para>
+ </listitem>
+ </itemizedlist>
+ With these components in place, we can then instantiate the
<code>RepositoryService</code> and start it (using its
+ <code>ServiceAdministrator</code>). During startup, the service reads the
configuration repository and loads any
+ defined <code>RepositorySource</code> instances into the repository
library, using the class loader factory
+ (available in the <code>ExecutionContext</code>) to obtain.
+ </para>
+ <para>Here's sample code that shows how to set up and start the repository
service. You can see something similar
+ in the example application in the <code>startRepositories()</code> method
of the <code>org.jboss.example.dna.repository.RepositoryClient</code>
class.</para>
+ <programlisting role="JAVA"><![CDATA[
+ // Create the factory for execution contexts.
+ ExecutionContextFactory contextFactory = new BasicExecutionContextFactory();
+
+ // Create the execution context that we'll use for the services. If we'd want
to use JAAS, we'd
+ // create the context by supplying LoginContext, AccessControlContext, or even Subject
with
+ // CallbackHandlers. But this example doesn't use JAAS in this example.
+ ExecutionContext context = contextFactory.create();
+
+ // Create the library for the RepositorySource instances ...
+ RepositoryLibrary sources = new RepositoryLibrary(contextFactory);
+
+ // Load into the source manager the repository source for the configuration repository
...
+ InMemoryRepositorySource configSource = new InMemoryRepositorySource();
+ configSource.setName("Configuration");
+ sources.addSource(configSource);
+
+ // Now instantiate the Repository Service ...
+ RepositoryService service = new RepositoryService(sources, configSource.getName(),
context);
+ service.getAdministrator().start();
+ ]]></programlisting>
+ <para>After startup completes, the repositories are ready to be used. The client
application obtains the list of repositories
+ and presents them to the user. When the user selects one, the client application
starts navigating that repository
+ starting at its root node (e.g., the "/" path). As you type a command to
list the contents of the current node or to
+ "change directories" to a different node, the client application obtains the
information for the node using a simple
+ procedure:
+ <orderedlist>
+ <listitem>
+ <para>Get a connection to the repository.</para>
+ </listitem>
+ <listitem>
+ <para>Using the connection, find the current node and read its properties and
children, putting the information
+ into a simple Java plain old Java object (POJO).</para>
+ </listitem>
+ <listitem>
+ <para>Close the connection to the repository (in a finally block to ensure it
always happens).</para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <sect2 id="using_jcr_with_dna">
+ <title>Using JCR to read repository</title>
+ <para>If we want to perform these steps using JCR, a JCR
<code>Session</code> represents our connection.
+ So after we create a <code>JcrRepository</code> instance pointing to our
repository library, we can
+ then login to obtain a JCR session:</para>
+ <programlisting role="JAVA"><![CDATA[
+ JcrRepository jcrRepository = new JcrRepository(contextFactory, sources);
+ Session session = jcrRepository.login(sourceName);
+ ]]></programlisting>
+ <para>Now, the above code doesn't do any authentication; it essentially
trusts the caller has the appropriate privileges.
+ Normally, your application will need to authenticate the user, so let's look at
how that's done.</para>
+ <para>JBoss DNA uses the <ulink
url="http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutoria...
+ Authentication and Authorization Service (JAAS)</ulink>, making it possible to
use any existing JAAS security provider.
+ There are numerous JAAS providers, but one of the best open-source implementations is
+ <ulink
url="http://www.jboss.org/jbosssecurity/">JBoss
Security</ulink>, which can authenticate using LDAP, certificates,
+ the operating system, and federated single-sign-on (among others).
+ </para>
+ <para>
+ The JCR API defines a <code>Credentials</code> marker interface, an
instance of which can be passed to the
+ <code>Session.login(...)</code> method. Rather than provide a concrete
implementation of this interface, JBoss DNA
+ allows you to pass any implementation of <code>Credentials</code> that
also has one of the following methods:
+ <itemizedlist>
+ <listitem>
+ <para><code>getLoginContext()</code> that returns a
<code>javax.security.auth.login.LoginContext</code> instance.</para>
+ </listitem>
+ <listitem>
+ <para><code>getAccessControlContext()</code> that returns a
<code>java.security.AccessControlContext</code> instance.</para>
+ </listitem>
+ </itemizedlist>
+ This way, your application can obtain the JAAS <code>LoginContext</code>
or <code>AccessControlContext</code> however it wants,
+ and then merely passes that into DNA through the JCR
<code>Credentials</code>. No interfaces or classes specific to JBoss DNA are
required.
+ </para>
+ <para>The following code shows how this is done, using an anonymous inner class
for the <code>Credentials</code> implementation.</para>
+ <programlisting role="JAVA"><![CDATA[
+ CallbackHandler callbackHandler = // as needed by your app, according to JAAS
+ final LoginContext loginContext = new
LoginContext("MyAppContextName",callbackHandler);
+ Credentials credentials = new Credentials() {
+ public LoginContext getLoginContext() { return loginContext; }
+ };
+ JcrRepository jcrRepository = new JcrRepository(contextFactory, sources);
+ Session session = jcrRepository.login(credentials, sourceName);
+ ]]></programlisting>
+ <para>Once you have a JCR session, you can then use it to find the node of
interest and access the necessary information. All of this
+ code will use only the JCR API - there's nothing specific to JBoss DNA's
implementation. And remember, when you're finished with
+ the session, be sure to logout (usually in a <code>finally</code>
block):</para>
+ <programlisting role="JAVA"><![CDATA[
+ if (session != null) session.logout();
+ ]]></programlisting>
+ <para>Like many people recommend with JCR, you can create either long-lived or
short-lived JCR <code>Session</code>s. The
+ JBoss DNA implementation of JCR was designed to efficiently do either.</para>
+ </sect2>
+ <!--
+ <sect2 id="using_dna_repositories_with_dna_api">
+ <title>Using JBoss DNA's API to read repository</title>
+ <para>Although we recommend using JCR, JBoss DNA has an internal command-based
API that completely side-steps JCR and provides
+ very simple graph-based operations. For more information, see the
<code>RepositoryClient</code> class in the example.</para>
+ <note>
+ <para>This API is likely to undergo changes in the next few releases, and using
it at this time is not suggested.</para>
+ </note>
+ </sect2>
+ -->
+ </sect1>
+ <sect1 id="shutting_down_repository_service">
+ <title>Shutting down the Repository Service</title>
+ <para>In the first part of this chapter, we saw how to instantiate, configure,
and start the <code>RepositoryService</code>.
+ We then saw how to use JCR to access the repository service by creating JCR
<code>Session</code>s, and how to log out of those
+ sessions when no longer needed.</para>
+ <para>In this short section we'll see how to shut down the
<code>RepositoryService</code> and <code>RepositoryLibrary</code>
+ when you're finished with all of the repositories. It's a simple but
important step, since this closes all outstanding
+ connections that may be sitting unused in the library's connection
pools.</para>
+ <para>Shutting down these components is very straightforward: get the
<code>ServiceAdministrator</code> on each, and call
<code>shutdown()</code>.</para>
+ <programlisting role="JAVA"><![CDATA[
+ // Shut down the repository service ...
+ repositoryService.getAdministrator().shutdown();
+
+ // Shut down the manager of the RepositorySource instances, waiting until all
connections are closed
+ sources.getAdministrator().shutdown();
+ sources.getAdministrator().awaitTermination(1, TimeUnit.SECONDS);
+ ]]></programlisting>
+ <para>The <code>shutdown()</code> method attempts to close all open
and unused resources (such as open and unused connections in the pool).
+ No more connections can be created, and any connections that are currently in use are
not closed but allowed to be used and closed normally.
+ When the last connection is used, the service then transitions to a
<emphasis>terminated</emphasis> state, which you can wait for using
+ the <code>awaitTermination(int,TimeUnit)</code> method.</para>
+ <para>If you want to shutdown the services immediately, then you could call
<code>shutdownNow()</code>, which blocks while it attempts to immediately
+ close all connections - <emphasis>even those currently in use</emphasis>.
So, while you generally want to use <code>shutdown()</code>,
+ it is good to be aware that this <code>shutdownNow()</code> method does
exist.</para>
+ </sect1>
+ <sect1 id="example_repository_application_review">
+ <title>Reviewing the example repository application</title>
+ <para>Recall that the example repository application consists of a client
application that sets up a repository service and the
+ repositories defined in a configuration repository, allowing the user to pick a
repository and interactively navigate
+ the selected repository. Several repositories are set up, including several in-memory
repositories and one federated repository
+ that dynamically federates the content from the other repositories.</para>
+ <para>
+ The example is comprised of 2 classes and 1 interface, located in the
<code>src/main/java</code> directory:</para>
+ <programlisting><![CDATA[
+ org/jboss/example/dna/repositories/ConsoleInput.java
+ /RepositoryClient.java
+ /UserInterface.java
+ ]]></programlisting>
+ <para><code>RepositoryClient</code> is the class that contains the
main application. It uses an instance of the
+ <code>UserInterface</code> interface to methods that will be called at
runtime to obtain information about the
+ files that are imported into the in-memory repositories and the JAAS
<code>CallbackHandler</code> implementation
+ that will be used by JAAS to prompt the user for authentication information.
Finally, the <code>ConsoleInput</code>
+ is an implementation of this that creates a text user interface, allowing the user to
operate the client from the command-line.
+ We can easily create a graphical implementation of
<code>UserInterface</code> at a later date, or we can also create a mock
+ implementation for testing purposes that simulates a user entering data. This allows
us to check the behavior of the client
+ automatically using conventional JUnit test cases, as demonstrated by the code in the
<code>src/test/java</code> directory:</para>
+ <programlisting><![CDATA[
+ org/jboss/example/dna/sequencers/RepositoryClientTest.java
+ /RepositoryClientUsingJcrTest.java
+ ]]></programlisting>
+ <para>
+ The code we presented earlier in this chapter represent the bulk of the JBoss DNA and
JCR-specific code used in the
+ <code>RepositoryClient</code>, so we won't cover it in any more detail
here. Please refer to the sample client code
+ if you want to see more.
+ </para>
+ </sect1>
+ <sect1 id="using_dna_repositories_review">
+ <title>Summarizing what we just did</title>
+ <para>In this chapter we covered the different JBoss DNA components used for
accessing repositories through JCR, including
+ repositories that federate their content from the content of other repositories.
Specifically, we described how the
+ <code>RepositoryService</code> and <code>JcrRepository</code>
can be configured and used.
+ </para>
+ </sect1>
+</chapter>
+
Deleted: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml
===================================================================
--- trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml 2008-09-26 16:10:20 UTC
(rev 547)
+++ tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml 2008-09-26 21:12:43
UTC (rev 555)
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ 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.">
-]>
-<book lang="en">
- <bookinfo>
- <title>JBoss DNA</title>
- <subtitle>Getting Started Guide</subtitle>
- <releaseinfo>&versionNumber;</releaseinfo>
- <productnumber>&versionNumber;</productnumber>
- <issuenum>1</issuenum>
- <mediaobject>
- <imageobject role="fo">
- <imagedata fileref="dna-logo.png" align="center"/>
- </imageobject>
- <imageobject role="html">
- <imagedata fileref="dna-logo.png" depth="3cm"/>
- </imageobject>
- </mediaobject>
- <copyright>
- <year>©rightYear;</year>
- <holder>©rightHolder;</holder>
- </copyright>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/author_group.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/legal_notice.xml"/>
- </bookinfo>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/preface.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/introduction.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/understanding_dna.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/downloading_and_running.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/using_dna_for_sequencing.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/using_dna_repositories.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/custom_sequencers.xml"/>
- <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/future.xml"/>
-</book>
Copied: tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml (from rev 553,
trunk/docs/gettingstarted/src/main/docbook/en-US/master.xml)
===================================================================
--- tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml
(rev 0)
+++ tags/dna-0.2/docs/gettingstarted/src/main/docbook/en-US/master.xml 2008-09-26 21:12:43
UTC (rev 555)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ 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.2">
+<!ENTITY copyrightYear "2008">
+<!ENTITY copyrightHolder "Red Hat Middleware, LLC.">
+]>
+<book lang="en">
+ <bookinfo>
+ <title>JBoss DNA</title>
+ <subtitle>Getting Started Guide</subtitle>
+ <releaseinfo>&versionNumber;</releaseinfo>
+ <productnumber>&versionNumber;</productnumber>
+ <issuenum>1</issuenum>
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="dna-logo.png" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="dna-logo.png" depth="3cm"/>
+ </imageobject>
+ </mediaobject>
+ <copyright>
+ <year>©rightYear;</year>
+ <holder>©rightHolder;</holder>
+ </copyright>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/author_group.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/legal_notice.xml"/>
+ </bookinfo>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/preface.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/introduction.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/understanding_dna.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/downloading_and_running.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/using_dna_for_sequencing.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/using_dna_repositories.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/custom_sequencers.xml"/>
+ <xi:include
xmlns:xi="http://www.w3.org/2001/XInclude"
href="content/future.xml"/>
+</book>
Deleted: tags/dna-0.2/docs/pom.xml
===================================================================
--- trunk/docs/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,18 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna.docs</groupId>
- <artifactId>dna-docs</artifactId>
- <packaging>pom</packaging>
- <name>JBoss DNA Documents</name>
- <
url>http://www.jboss.org/dna</url>
- <description>JBoss DNA Documentation</description>
- <modules>
- <module>gettingstarted</module>
- <module>reference</module>
- </modules>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/pom.xml (from rev 554, trunk/docs/pom.xml)
===================================================================
--- tags/dna-0.2/docs/pom.xml (rev 0)
+++ tags/dna-0.2/docs/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,18 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna.docs</groupId>
+ <artifactId>dna-docs</artifactId>
+ <packaging>pom</packaging>
+ <name>JBoss DNA Documents</name>
+ <
url>http://www.jboss.org/dna</url>
+ <description>JBoss DNA Documentation</description>
+ <modules>
+ <module>gettingstarted</module>
+ <module>reference</module>
+ </modules>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/reference/pom.xml
===================================================================
--- trunk/docs/reference/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/reference/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,75 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <!--
- parent> <groupId>org.jboss</groupId>
<artifactId>documentation</artifactId> <version>1.0</version>
</parent
- -->
- <groupId>org.jboss.dna</groupId>
- <artifactId>reference-guide-en</artifactId>
- <version>0.2-SNAPSHOT</version>
- <packaging>jdocbook</packaging>
- <name>JBoss DNA Reference Guide</name>
- <description>The reference guide for JBoss DNA developers and advanced
users</description>
- <build>
- <plugins>
- <plugin>
- <groupId>org.jboss.maven.plugins</groupId>
- <artifactId>maven-jdocbook-plugin</artifactId>
- <version>2.1.2</version>
- <extensions>true</extensions>
- <dependencies>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-docbook-xslt</artifactId>
- <version>1.1.0.Beta1</version>
- </dependency>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-jdocbook-style</artifactId>
- <version>1.1.0.Beta1</version>
- <type>jdocbook-style</type>
- </dependency>
- </dependencies>
- <configuration>
- <sourceDocumentName>master.xml</sourceDocumentName>
- <imageResource>
-
<directory>${basedir}/src/main/docbook/en-US/images</directory>
- <includes>
- <include>*.png</include>
- </includes>
- </imageResource>
- <!-- cssResource>
- <directory>${basedir}/src/main/docbook/css</directory>
- </cssResource-->
- <targetDirectory>${basedir}/target/docbook/en-US</targetDirectory>
- <formats>
- <format>
- <formatName>html</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <!--
- <format>
- <formatName>html_single</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- -->
- <format>
- <formatName>pdf</formatName>
-
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
- <finalName>userguide_en.pdf</finalName>
- </format>
- </formats>
- <options>
- <xincludeSupported>true</xincludeSupported>
- <xmlTransformerType>saxon</xmlTransformerType>
- <!-- needed for uri-resolvers; can be ommitted if using 'current'
uri scheme -->
- <!-- could also locate the docbook dependency and inspect its
version... -->
- <docbookVersion>1.72.0</docbookVersion>
- </options>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/docs/reference/pom.xml (from rev 554, trunk/docs/reference/pom.xml)
===================================================================
--- tags/dna-0.2/docs/reference/pom.xml (rev 0)
+++ tags/dna-0.2/docs/reference/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,73 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <!--
+ parent> <groupId>org.jboss</groupId>
<artifactId>documentation</artifactId> <version>1.0</version>
</parent -->
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>reference-guide-en</artifactId>
+ <version>0.2</version>
+ <packaging>jdocbook</packaging>
+ <name>JBoss DNA Reference Guide</name>
+ <description>The reference guide for JBoss DNA developers and advanced
users</description>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ <version>2.1.2</version>
+ <extensions>true</extensions>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-docbook-xslt</artifactId>
+ <version>1.1.0.Beta1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-jdocbook-style</artifactId>
+ <version>1.1.0.Beta1</version>
+ <type>jdocbook-style</type>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <sourceDocumentName>master.xml</sourceDocumentName>
+ <imageResource>
+
<directory>${basedir}/src/main/docbook/en-US/images</directory>
+ <includes>
+ <include>*.png</include>
+ </includes>
+ </imageResource>
+ <!-- cssResource>
+ <directory>${basedir}/src/main/docbook/css</directory>
+ </cssResource-->
+ <targetDirectory>${basedir}/target/docbook/en-US</targetDirectory>
+ <formats>
+ <format>
+ <formatName>html</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <!--
+ <format>
+ <formatName>html_single</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ -->
+ <format>
+ <formatName>pdf</formatName>
+
<stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource>
+ <finalName>userguide_en.pdf</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>true</xincludeSupported>
+ <xmlTransformerType>saxon</xmlTransformerType>
+ <!-- needed for uri-resolvers; can be ommitted if using 'current'
uri scheme -->
+ <!-- could also locate the docbook dependency and inspect its
version... -->
+ <docbookVersion>1.72.0</docbookVersion>
+ </options>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/development_tools.xml 2008-09-26
16:10:20 UTC (rev 547)
+++
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,401 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
-%CustomDTD;
-]>
-<chapter id="development-tools">
- <title>Developer tools</title>
- <para>
- The JBoss DNA project uses <link linkend="maven">Maven</link> as
its primary build tool, <link linkend="svn">Subversion</link>
- for its source code repository, <link linkend="jira">JIRA</link>
for the issue management and bug tracking system,
- and <link linkend="hudson">Hudson</link> for the continuous
integration system. We do not stipulate a specific integrated
- development environment (IDE), although most of us use <link
linkend="eclipse">Eclipse</link> and rely upon the code formatting
- and compile preferences to ensure no warnings or errors.
- </para>
- <para>
- The rest of this chapter talks in more detail about these different tools and how to
set them up.
- </para>
- <sect1 id="jdk">
- <title>JDK</title>
- <para>
- Currently, JBoss DNA is developed and built using <ulink
url="http://java.sun.com/javase/downloads/index_jdk5.jsp">JDK
5</ulink>,
- so if you're a contributor, you should have that installed and should use it
before committing any changes. Note that you
- should be able to use the <ulink
url="http://java.sun.com/javase/downloads/index.jsp">latest JDK</ulink>
(which is currently
- JDK 6).
- </para>
- <para>
- Why do we build using JDK 5 and not 6? The main reason is that if we were to use JDK
6, then JBoss DNA couldn't really be used in any
- applications or projects that still used JDK 5. Plus, anybody using JDK 6 can still
use JBoss DNA.
- However, considering that the end-of-life for Java 5 is
- <ulink
url="http://java.sun.com/products/archive/eol.policy.html">O...
2009</ulink>, we may be switching to
- Java 6 in the coming months.
- </para>
- <para>
- When installing, simply follow the procedure for your particular platform. On most
platforms, this should set the
- <code>JAVA_HOME</code> environment variable. But if you run into any
problems, first check that this environment
- variable was set to the correct location, and then check that you're running the
version you expect by running
- the following command:
- </para>
- <programlisting role="XML"><![CDATA[ java -version
]]></programlisting>
- <para>
- If you don't see the correct version, double-check your installation.
- </para>
- </sect1>
- <sect1 id="svn">
- <title>Subversion</title>
- <para>JBoss DNA uses Subversion as its source code management system, and
specifically the instance at
- <ulink url="http://www.jboss.org">JBoss.org</ulink>. Although
you can view the
- <ulink url="&Subversion;trunk/">trunk</ulink> of the
Subversion repository
- (or using <ulink url="&Fisheye;trunk">FishEye</ulink>)
through your browser,
- it order to get more than just a few files of the latest version of the source code,
you probably want
- to have an SVN client installed. Several IDE's have SVN support included (or
available as plugins),
- but having the command-line SVN client is recommended. See
- <ulink
url="http://subversion.tigris.org/">http://subversion.tigris...
for downloads and instructions for your
- particular platform.
- </para>
- <para>
- Here are some useful URLs for the JBoss DNA Subversion:
- </para>
- <table frame='all'>
- <title>SVN URLs for JBoss DNA</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Repository</entry>
- <entry>URL</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Anonymous Access URL</entry>
- <entry><ulink
url="&Subversion;trunk/">&Subversion;trunk/</ulink></entry>
- </row>
- <row>
- <entry>Secure Developer Access URL</entry>
- <entry><ulink
url="&Fisheye;trunk/">&Fisheye;trunk/</ulink></entry>
- </row>
- <row>
- <entry>FishEye Code Browser</entry>
- <entry><ulink
url="&SecureSubversion;trunk/">&SecureSubversion;trunk/</ulink></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect1>
- <sect1 id="maven">
- <title>Maven</title>
- <para>JBoss DNA uses Maven 2 for its build system, as is this example. Using
Maven 2 has several advantages, including
- the ability to manage dependencies. If a library is needed, Maven automatically
finds and downloads that library, plus
- everything that library needs. This means that it's very easy to build the
examples - or even create a maven project that
- depends on the JBoss DNA JARs.</para>
- <para>
- To use Maven with JBoss DNA, you'll need to have <link
linkend="jdk">JDK 5 or 6</link> and Maven 2.0.9 (or
higher).</para>
- <para>
- Maven can be downloaded from <ulink
url="http://maven.apache.org/">http://maven.apache.org/</...;, and is
installed by unzipping the
- <code>maven-2.0.7-bin.zip</code> file to a convenient location on your
local disk. Simply add <code>$MAVEN_HOME/bin</code>
- to your path and add the following profile to your
<code>~/.m2/settings.xml</code> file:
- </para>
- <programlisting role="XML"><![CDATA[
-<settings>
- <profiles>
- <profile>
- <id>jboss.repository</id>
- <activation>
- <property>
- <name>!jboss.repository.off</name>
- </property>
- </activation>
- <repositories>
- <repository>
- <id>snapshots.jboss.org</id>
- <
url>http://snapshots.jboss.org/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>repository.jboss.org</id>
- <
url>http://repository.jboss.org/maven2</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>repository.jboss.org</id>
- <
url>http://repository.jboss.org/maven2</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots.jboss.org</id>
- <
url>http://snapshots.jboss.org/maven2</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
-</settings>
-]]></programlisting>
- <para>This profile informs Maven of the two JBoss repositories (<ulink
url="http://repository.jboss.org/maven2">snapshots</ulink...
- and <ulink
url="http://snapshots.jboss.org/maven2">releases</ulink>) that contain
all of the JARs for JBoss DNA and all dependent libraries.
- </para>
- <note>
- <para>
- It is a policy of the project that the <emphasis>source code and
JARs</emphasis> for <emphasis>all</emphasis> dependencies
- <emphasis>must</emphasis> be loaded into the JBoss repository. This is
so that the project can always be built
- and that all source code is always available.
- </para>
- <para>
- For more information about the JBoss Maven repository, see the <ulink
url="http://wiki.jboss.org/wiki/Maven">JBoss.org Wiki</ulink>.
- </para>
- </note>
- <para>
- There are just a few commands that are useful for building JBoss DNA (and it's
<link linkend="modules">subprojects</link>).
- Usually, these are issued while at the top level of the code (usually just below
<code>trunk/</code>), although issuing
- them inside a subproject just applies to that subproject.
- </para>
- <table frame='all'>
- <title>Useful Maven commands</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Command</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><code>mvn clean</code></entry>
- <entry>Clean up all built artifacts (e.g., the
<code>target/</code> directory in each project)</entry>
- </row>
- <row>
- <entry><code>mvn clean install</code></entry>
- <entry>Clean up all built artifacts, then compile, run the unit tests, and
install the resulting JAR artifact(s)
- into your local Maven repository (e.g, usually
<code>~/.m2/repository</code>).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect1>
- <sect1 id="hudson">
- <title>Continuous integration with Hudson</title>
- <para>JBoss DNA's continuous integration is done with several Hudson jobs on
<ulink url="http://www.jboss.org">JBoss.org</ulink>.
- These jobs run periodically and basically run the Maven build process. Any build
failures or test failures are reported,
- as are basic statistics and history for each job.
- </para>
- <table frame='all'>
- <title>Continuous integration jobs</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Job</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><ulink
url="http://hudson.jboss.org/hudson/job/DNA%20continuous%20on%20JDK1...
on JDK 5</ulink></entry>
- <entry>Continuous build that runs after changes are committed to SVN. SVN is
polled every 15 minutes.</entry>
- </row>
- <row>
- <entry><ulink
url="http://hudson.jboss.org/hudson/job/DNA%20nightly%20integration%...
on JDK 5</ulink></entry>
- <entry>Build that runs every night (about 2 a.m. EDT), regardless of whether
changes have been committed to SVN
- since the previous night.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect1>
- <sect1 id="eclipse">
- <title>Eclipse IDE</title>
- <para>Many of the JBoss DNA committers use the Eclipse IDE, and all project files
required by Eclipse are committed in SVN, making
- it pretty easy to get an Eclipse workspace running with all of the JBoss DNA
projects.
- Many of the JBoss DNA committers use the Eclipse IDE, and all project files required
by Eclipse are committed in SVN, making
- it pretty easy to get an Eclipse workspace running with all of the JBoss DNA
projects.
- </para>
- <para>We're using the latest released version of Eclipse (3.4, called
"Ganymede"),
- available from <ulink
url="http://www.eclipse.org/">Eclipse.org</ulink>. Simply follow the
instructions for your platform.
- </para>
- <para>
- After Eclipse is installed, create a new workspace. Before importing the JBoss DNA
projects, import (via "File->Import->Preferences")
- the subset of the Eclipse preferences by importing the
<code>eclipse-preferences.epf</code> file (located under
<code>trunk</code>).
- Then, open the Eclipse preferences and open the "Java->Code Style->
Formatter" preference page, and press the "Import" button and
- choose the <code>eclipse-code-formatter-profile.xml</code> file (located
under <code>trunk</code>). This will load the code
- formatting preferences for the JBoss DNA project.
- </para>
- <para>
- Then install Eclipse plugins for SVN and Maven. (Remember, you will have to restart
Eclipse after installing them.)
- We use the following plugins:
- </para>
- <table frame='all'>
- <title>Continuous integration jobs</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Eclipse Plugins</entry>
- <entry>Update Site URLs</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Subversive SVN Client</entry>
- <entry>
- <ulink
url="http://www.polarion.org/projects/subversive/download/eclipse/2....
- <ulink
url="http://www.polarion.org/projects/subversive/download/integratio...
- </entry>
- </row>
- <row>
- <entry>Maven Integration for Eclipse</entry>
- <entry><ulink
url="http://m2eclipse.sonatype.org/update/">http://m2eclipse...
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
- After you check out the JBoss DNA codebase, you can import the JBoss DNA Maven
projects into Eclipse as Eclipse projects.
- To do this, go to "File->Import->Existing Projects", navigate to the
<code>trunk/</code> folder in the import wizard,
- and then check each of the <link
linkend="modules">subprojects</link> that you want to have in your
workspace.
- </para>
- </sect1>
- <sect1 id="releasing">
- <title>Releasing</title>
- <para>
- This section outlines the basic process of releasing JBoss DNA. This <emphasis
role="strong">must</emphasis> be done
- either by the project lead or only after communicating with the project lead.
- </para>
- <para>
- Before continuing, your local workspace should contain no changes and should be a
perfect reflection of Subversion.
- You can verify this by getting the latest from Subversion
- </para>
- <programlisting>$ svn update</programlisting>
- <para>
- and ensuring that you have no additional changes with
- </para>
- <programlisting>$ svn status</programlisting>
- <para>
- You may also want to note the revision number for use later on in the process. The
release number is returned by
- the <code>svn update</code> command, but may also be found using
- </para>
- <programlisting>$ svn info</programlisting>
- <para>
- At this point, you're ready to verify that everything builds normally.
- </para>
- <sect2 id="build-all-artifacts-and-assemblies">
- <title>Building all artifacts and assemblies</title>
- <para>
- By default, the project's Maven build process is does
<emphasis>not</emphasis> build the documentation, JavaDocs, or assemblies.
- These take extra time, and most of our builds don't require them. So the first
step of releasing JBoss DNA
- is to use Maven to build all of regular artifacts (e.g., JARs) and these extra
documents and assemblies.
- </para>
- <note>
- <para>
- Before running Maven commands to build the releases, increase the memory available
to Maven with this command:
- </para>
- <programlisting>$ export MAVEN_OPTS=-Xmx256m</programlisting>
- </note>
- <para>
- To perform this complete build, issue the following command while in the
<code>target/</code> directory:
- </para>
- <programlisting>$ mvn -P assembly clean javadoc:javadoc
install</programlisting>
- <para>
- This command runs "clean", "javadoc:javadoc", and
"install" goals using the "assembly" profile,
- which adds the production JavaDocs, the Getting Started document, the Reference Guide
document,
- the Getting Started examples, and several ZIP archives. The order of the goals is
important,
- since the "install" goal attempts to include the JavaDoc in the archives.
- </para>
- <para>
- After completed, verify that the assemblies under <code>target/</code>
have actually been created and that
- they contain the correct information.
- At this point, we know that the actual Maven build process is building
- everything we want and will complete without errors. We can now proceed with
preparing for the release.
- </para>
- </sect2>
- <sect2 id="determine-version">
- <title>Determine the version to be released</title>
- <para>
- The version being released should match the &JIRA; road map. Make sure that all
issues related to the release are closed.
- The project lead should be notified and approve that the release is taking place.
- </para>
- </sect2>
- <sect2 id="release-dry-run">
- <title>Release dry run</title>
- <para>
- The next step is to ensure that all information in the POM is correct and contains
all the information required for
- the release process. This is called a <emphasis>dry run</emphasis>, and
is done with the Maven "release" plugin:
- </para>
- <programlisting>$ mvn release:prepare -DdryRun=true</programlisting>
- <para>This may download a lot of Maven plugins if they already haven't been
downloaded. It should then it should prompt you for
- the release version of each of the projects, the tag name for the release, and the
next development version.
- The default values are probably acceptable; if not, then check that the
"SNAPSHOT" version in each of the POM files is correct.
- </sect2>
- <sect2 id="release">
- <title>Release</title>
- <para>
-
- </para>
- </sect2>
- <sect2 id="tagging">
- <title>Building Releases</title>
- <para>
- Finally, the code can be tagged with the new release, using the following Subversion
command.
- Just remember to use the correct
<code><releaseNumber<</code>:
- </para>
- <programlisting>
-$ svn copy
https://svn.jboss.org/repos/dna/trunk \
-
https://svn.jboss.org/repos/dna/tags/dna-<emphasis><releaseN...
\
- -m "Releasing JBoss DNA <releaseNumber<"
- </programlisting>
- <para>
- Of course, this will copy of <code>HEAD</code>. To copy a particular
revision in <code>trunk/</code>, use
- the <code>-r</code> argument with the correct SVN revision number:
- </para>
- <programlisting>
-$ svn copy
https://svn.jboss.org/repos/dna/trunk
-r<emphasis><revisionNumber<</emphasis> \
-
https://svn.jboss.org/repos/dna/tags/dna-<emphasis><releaseN...
\
- -m "Releasing JBoss DNA <releaseNumber<"
-</programlisting>
- <note>
- <para>
- You can obtain the latest revision number using the <code>$ svn
info</code> command.
- </para>
- </note>
- </sect2>
- </sect1>
-</chapter>
Copied: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml
(from rev 553, trunk/docs/reference/src/main/docbook/en-US/content/development_tools.xml)
===================================================================
--- tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml
(rev 0)
+++
tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/development_tools.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
+%CustomDTD;
+]>
+<chapter id="development-tools">
+ <title>Developer tools</title>
+ <para>
+ The JBoss DNA project uses <link linkend="maven">Maven</link> as
its primary build tool, <link linkend="svn">Subversion</link>
+ for its source code repository, <link linkend="jira">JIRA</link>
for the issue management and bug tracking system,
+ and <link linkend="hudson">Hudson</link> for the continuous
integration system. We do not stipulate a specific integrated
+ development environment (IDE), although most of us use <link
linkend="eclipse">Eclipse</link> and rely upon the code formatting
+ and compile preferences to ensure no warnings or errors.
+ </para>
+ <para>
+ The rest of this chapter talks in more detail about these different tools and how to
set them up.
+ </para>
+ <sect1 id="jdk">
+ <title>JDK</title>
+ <para>
+ Currently, JBoss DNA is developed and built using <ulink
url="http://java.sun.com/javase/downloads/index_jdk5.jsp">JDK
5</ulink>.
+ So if you're trying to get JBoss DNA to compile locally, you should make sure you
have the JDK 5 installed and are using it.
+ If you're a contributor, you should make sure that you're using JDK 5 before
committing any changes.
+ </para>
+ <note>
+ <para>
+ You should be able to use the <ulink
url="http://java.sun.com/javase/downloads/index.jsp">latest
JDK</ulink>,
+ which is currently JDK 6. We periodically try to build JBoss DNA using JDK 6, but
it's not our official JDK (yet).
+ </para>
+ </note>
+ <para>
+ Why do we build using JDK 5 and not 6? The main reason is that if we were to use JDK
6, then JBoss DNA couldn't really be used in any
+ applications or projects that still used JDK 5. Plus, anybody using JDK 6 can still
use JBoss DNA.
+ However, considering that the end-of-life for Java 5 is
+ <ulink
url="http://java.sun.com/products/archive/eol.policy.html">O...
2009</ulink>, we may be switching to
+ Java 6 in the coming months.
+ </para>
+ <para>
+ When installing a JDK, simply follow the procedure for your particular platform. On
most platforms, this should set the
+ <code>JAVA_HOME</code> environment variable. But if you run into any
problems, first check that this environment
+ variable was set to the correct location, and then check that you're running the
version you expect by running
+ the following command:
+ </para>
+ <programlisting>$ java -version</programlisting>
+ <para>
+ If you don't see the correct version, double-check your JDK installation.
+ </para>
+ </sect1>
+ <sect1 id="svn">
+ <title>Subversion</title>
+ <para>JBoss DNA uses Subversion as its source code management system, and
specifically the instance at
+ <ulink url="http://www.jboss.org">JBoss.org</ulink>. Although
you can view the
+ <ulink url="&Subversion;trunk/">trunk</ulink> of the
Subversion repository directly
+ (or using <ulink url="&Fisheye;trunk">FishEye</ulink>)
through your browser,
+ it order to get more than just a few files of the latest version of the source code,
you probably want
+ to have an SVN client installed. Several IDE's have SVN support included (or
available as plugins),
+ but having the command-line SVN client is recommended. See
+ <ulink
url="http://subversion.tigris.org/">http://subversion.tigris...
for downloads and instructions for your
+ particular platform.
+ </para>
+ <para>
+ Here are some useful URLs for the JBoss DNA Subversion:
+ </para>
+ <table frame='all'>
+ <title>SVN URLs for JBoss DNA</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Repository</entry>
+ <entry>URL</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Anonymous Access URL</entry>
+ <entry><ulink
url="&Subversion;trunk/">&Subversion;trunk/</ulink></entry>
+ </row>
+ <row>
+ <entry>Secure Developer Access URL</entry>
+ <entry><ulink
url="&Fisheye;trunk/">&Fisheye;trunk/</ulink></entry>
+ </row>
+ <row>
+ <entry>FishEye Code Browser</entry>
+ <entry><ulink
url="&SecureSubversion;trunk/">&SecureSubversion;trunk/</ulink></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+ <sect1 id="maven">
+ <title>Maven</title>
+ <para>JBoss DNA uses Maven 2 for its build system, as is this example. Using
Maven 2 has several advantages, including
+ the ability to manage dependencies. If a library is needed, Maven automatically
finds and downloads that library, plus
+ everything that library needs. This means that it's very easy to build the
examples - or even create a maven project that
+ depends on the JBoss DNA JARs.</para>
+ <para>
+ To use Maven with JBoss DNA, you'll need to have <link
linkend="jdk">JDK 5 or 6</link> and Maven 2.0.9 (or
higher).</para>
+ <para>
+ Maven can be downloaded from <ulink
url="http://maven.apache.org/">http://maven.apache.org/</...;, and is
installed by unzipping the
+ <code>maven-2.0.7-bin.zip</code> file to a convenient location on your
local disk. Simply add <code>$MAVEN_HOME/bin</code>
+ to your path and add the following profile to your
<code>~/.m2/settings.xml</code> file:
+ </para>
+ <programlisting role="XML"><![CDATA[
+<settings>
+ <profiles>
+ <profile>
+ <id>jboss.repository</id>
+ <activation>
+ <property>
+ <name>!jboss.repository.off</name>
+ </property>
+ </activation>
+ <repositories>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <
url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>repository.jboss.org</id>
+ <
url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>repository.jboss.org</id>
+ <
url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ <pluginRepository>
+ <id>snapshots.jboss.org</id>
+ <
url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
+]]></programlisting>
+ <para>This profile informs Maven of the two JBoss repositories (<ulink
url="http://repository.jboss.org/maven2">snapshots</ulink...
+ and <ulink
url="http://snapshots.jboss.org/maven2">releases</ulink>) that contain
all of the JARs for JBoss DNA and all dependent libraries.
+ </para>
+ <note>
+ <para>
+ It is a policy of the project that the <emphasis>source code and
JARs</emphasis> for <emphasis>all</emphasis> dependencies
+ <emphasis>must</emphasis> be loaded into the JBoss repository. This is
so that the project can always be built
+ and that all source code is always available.
+ </para>
+ <para>
+ For more information about the JBoss Maven repository, see the <ulink
url="http://wiki.jboss.org/wiki/Maven">JBoss.org Wiki</ulink>.
+ </para>
+ </note>
+ <para>
+ There are just a few commands that are useful for building JBoss DNA (and it's
<link linkend="modules">subprojects</link>).
+ Usually, these are issued while at the top level of the code (usually just below
<code>trunk/</code>), although issuing
+ them inside a subproject just applies to that subproject.
+ </para>
+ <table frame='all'>
+ <title>Useful Maven commands</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Command</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>mvn clean</code></entry>
+ <entry>Clean up all built artifacts (e.g., the
<code>target/</code> directory in each project)</entry>
+ </row>
+ <row>
+ <entry><code>mvn clean install</code></entry>
+ <entry>Clean up all built artifacts, then compile, run the unit tests, and
install the resulting JAR artifact(s)
+ into your local Maven repository (e.g, usually
<code>~/.m2/repository</code>).
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+ <sect1 id="hudson">
+ <title>Continuous integration with Hudson</title>
+ <para>JBoss DNA's continuous integration is done with several Hudson jobs on
<ulink url="http://www.jboss.org">JBoss.org</ulink>.
+ These jobs run periodically and basically run the Maven build process. Any build
failures or test failures are reported,
+ as are basic statistics and history for each job.
+ </para>
+ <table frame='all'>
+ <title>Continuous integration jobs</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Job</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><ulink
url="http://hudson.jboss.org/hudson/job/DNA%20continuous%20on%20JDK1...
on JDK 5</ulink></entry>
+ <entry>Continuous build that runs after changes are committed to SVN. SVN is
polled every 15 minutes.</entry>
+ </row>
+ <row>
+ <entry><ulink
url="http://hudson.jboss.org/hudson/job/DNA%20nightly%20integration%...
on JDK 5</ulink></entry>
+ <entry>Build that runs every night (usually around 2 a.m. EDT), regardless of
whether changes have been committed to SVN
+ since the previous night.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect1>
+ <sect1 id="eclipse">
+ <title>Eclipse IDE</title>
+ <para>Many of the JBoss DNA committers use the Eclipse IDE, and all project files
required by Eclipse are committed in SVN, making
+ it pretty easy to get an Eclipse workspace running with all of the JBoss DNA
projects.
+ Many of the JBoss DNA committers use the Eclipse IDE, and all project files required
by Eclipse are committed in SVN, making
+ it pretty easy to get an Eclipse workspace running with all of the JBoss DNA
projects.
+ </para>
+ <para>We're using the latest released version of Eclipse (3.4, called
"Ganymede"),
+ available from <ulink
url="http://www.eclipse.org/">Eclipse.org</ulink>. Simply follow the
instructions for your platform.
+ </para>
+ <para>
+ After Eclipse is installed, create a new workspace. Before importing the JBoss DNA
projects, import (via "File->Import->Preferences")
+ the subset of the Eclipse preferences by importing the
<code>eclipse-preferences.epf</code> file (located under
<code>trunk</code>).
+ Then, open the Eclipse preferences and open the "Java->Code Style->
Formatter" preference page, and press the "Import" button and
+ choose the <code>eclipse-code-formatter-profile.xml</code> file (located
under <code>trunk</code>). This will load the code
+ formatting preferences for the JBoss DNA project.
+ </para>
+ <para>
+ Then install Eclipse plugins for SVN and Maven. (Remember, you will have to restart
Eclipse after installing them.)
+ We use the following plugins:
+ </para>
+ <table frame='all'>
+ <title>Continuous integration jobs</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Eclipse Plugins</entry>
+ <entry>Update Site URLs</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Subversive SVN Client</entry>
+ <entry>
+ <ulink
url="http://www.polarion.org/projects/subversive/download/eclipse/2....
+ <ulink
url="http://www.polarion.org/projects/subversive/download/integratio...
+ </entry>
+ </row>
+ <row>
+ <entry>Maven Integration for Eclipse</entry>
+ <entry><ulink
url="http://m2eclipse.sonatype.org/update/">http://m2eclipse...
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ After you check out the JBoss DNA codebase, you can import the JBoss DNA Maven
projects into Eclipse as Eclipse projects.
+ To do this, go to "File->Import->Existing Projects", navigate to the
<code>trunk/</code> folder in the import wizard,
+ and then check each of the <link
linkend="modules">subprojects</link> that you want to have in your
workspace.
+ Don't forget about the projects under <code>extensions/</code> or
<code>docs/</code>.
+ </para>
+ </sect1>
+ <sect1 id="releasing">
+ <title>Releasing</title>
+ <para>
+ This section outlines the basic process of releasing JBoss DNA. This <emphasis
role="strong">must</emphasis> be done
+ either by the project lead or only after communicating with the project lead.
+ </para>
+ <para>
+ Before continuing, your local workspace should contain no changes and should be a
perfect reflection of Subversion.
+ You can verify this by getting the latest from Subversion
+ </para>
+ <programlisting>$ svn update</programlisting>
+ <para>
+ and ensuring that you have no additional changes with
+ </para>
+ <programlisting>$ svn status</programlisting>
+ <para>
+ You may also want to note the revision number for use later on in the process. The
release number is returned by
+ the <code>svn update</code> command, but may also be found using
+ </para>
+ <programlisting>$ svn info</programlisting>
+ <para>
+ At this point, you're ready to verify that everything builds normally.
+ </para>
+ <sect2 id="build-all-artifacts-and-assemblies">
+ <title>Building all artifacts and assemblies</title>
+ <para>
+ By default, the project's Maven build process is does
<emphasis>not</emphasis> build the documentation, JavaDocs, or assemblies.
+ These take extra time, and most of our builds don't require them. So the first
step of releasing JBoss DNA
+ is to use Maven to build all of regular artifacts (e.g., JARs) and these extra
documents and assemblies.
+ </para>
+ <note>
+ <para>
+ Before running Maven commands to build the releases, increase the memory available
to Maven with this command:
+ <code>$ export MAVEN_OPTS=-Xmx256m</code>
+ </para>
+ </note>
+ <para>
+ To perform this complete build, issue the following command while in the
<code>target/</code> directory:
+ </para>
+ <programlisting>$ mvn -P assembly clean javadoc:javadoc
install</programlisting>
+ <para>
+ This command runs the "clean", "javadoc:javadoc", and
"install" goals using the "assembly" profile,
+ which adds the production of JavaDocs, the Getting Started document, the Reference
Guide document,
+ the Getting Started examples, and several ZIP archives. The order of the goals is
important,
+ since the "install" goal attempts to include the JavaDoc in the archives.
+ </para>
+ <para>
+ After this build has completed, verify that the assemblies under
<code>target/</code> have actually been created and that
+ they contain the correct information.
+ At this point, we know that the actual Maven build process is building
+ everything we want and will complete without errors. We can now proceed with
preparing for the release.
+ </para>
+ </sect2>
+ <sect2 id="determine-version">
+ <title>Determine the version to be released</title>
+ <para>
+ The version being released should match the <ulink
url="&JIRA;">JIRA</ulink> road map. Make sure that all issues
related to the release are closed.
+ The project lead should be notified and approve that the release is taking place.
+ </para>
+ </sect2>
+ <sect2 id="release-dry-run">
+ <title>Release dry run</title>
+ <para>
+ The next step is to ensure that all information in the POM is correct and contains
all the information required for
+ the release process. This is called a <emphasis>dry run</emphasis>, and
is done with the Maven "release" plugin:
+ </para>
+ <programlisting>$ mvn -Passembly release:prepare
-DdryRun=true</programlisting>
+ <para>
+ This may download a lot of Maven plugins if they already haven't been downloaded,
but it will eventually prompt you for
+ the release version of each of the Maven projects, the tag name for the release, and
the next development versions
+ (again for each of the Maven projects). The default values are probably acceptable;
if not, then check that the
+ "<code><version></code>" tags in each of the POM
files is correct and end with "-SNAPSHOT".
+ </para>
+ <para>
+ After the dry run completes you should clean up the files that the release plugin
created in the dry run:
+ </para>
+ <programlisting>$ mvn -Passembly release:clean</programlisting>
+ </sect2>
+ <sect2 id="prepare-release">
+ <title>Prepare for the release</title>
+ <para>
+ Run the prepare step (without the <code>dryRun</code> option):
+ </para>
+ <programlisting>$ mvn -Passembly release:prepare</programlisting>
+ <para>
+ You will again be prompted for the release versions and tag name. These should be the
same as what was used during the dry run.
+ This will run the same steps as the dry run, with the additional step of tagging the
release in SVN.
+ </para>
+ <para>
+ If there are any problems during this step, you should go back and try the dry run
option.
+ </para>
+ </sect2>
+ <sect2 id="release">
+ <title>Perform the release</title>
+ <para>
+ Next run the perform step which will checkout the files from the tag, do a build, and
deploy the generated artifacts.
+ </para>
+ <programlisting>$ mvn -Passembly release:perform</programlisting>
+ <para>
+ The deployment is done to the local file system (a local checkout of the JBoss Maven2
repository), so you will need to
+ commit the new files after they are deployed. For more information, see the
+ <ulink
url="http://wiki.jboss.org/wiki/Maven">JBoss
wiki</ulink>.
+ </para>
+ <para>
+ Note that the release process updates your project's
<code>pom.xml</code> files to change the "<version>"
values
+ to the next version. These will then need to be committed onto the trunk of SVN.
+ </para>
+ <para>
+ At this point, the software has been released and tagged, so now the only thing left
is to publish the release onto
+ the project's <ulink
url="&Downloads;">downloads</ulink> and <ulink
url="&Home;/docs">documentation</ulink> pages.
+ </para>
+ </sect2>
+ <!--
+ <sect2 id="tagging">
+ <title>Building Releases</title>
+ <para>
+ Finally, the code can be tagged with the new release, using the following Subversion
command.
+ Just remember to use the correct
<code><releaseNumber<</code>:
+ </para>
+ <programlisting>
+$ svn copy
https://svn.jboss.org/repos/dna/trunk \
+
https://svn.jboss.org/repos/dna/tags/dna-<emphasis><releaseN...
\
+ -m "Releasing JBoss DNA <releaseNumber<"
+ </programlisting>
+ <para>
+ Of course, this will copy of <code>HEAD</code>. To copy a particular
revision in <code>trunk/</code>, use
+ the <code>-r</code> argument with the correct SVN revision number:
+ </para>
+ <programlisting>
+$ svn copy
https://svn.jboss.org/repos/dna/trunk
-r<emphasis><revisionNumber<</emphasis> \
+
https://svn.jboss.org/repos/dna/tags/dna-<emphasis><releaseN...
\
+ -m "Releasing JBoss DNA <releaseNumber<"
+</programlisting>
+ <note>
+ <para>
+ You can obtain the latest revision number using the <code>$ svn
info</code> command.
+ </para>
+ </note>
+ </sect2>
+ -->
+ </sect1>
+</chapter>
Deleted: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/future.xml 2008-09-26 16:10:20 UTC
(rev 547)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
-%CustomDTD;
-]>
-<chapter id="future">
- <title>Looking to the future</title>
- <para>What's next for JBoss DNA? Well, the sequencing system is just the
beginning. With this release, the sequencing system
- is stable enough so that more <link
linkend="sequencers">sequencers</link> can be developed and used within
your own applications.
- If you're interested in getting involved with the JBoss DNA project, consider
picking up one of the sequencers on our
- <ulink
url="&JIRA;?report=com.atlassian.jira.plugin.system.project:roadmap-panel">roadmap</ulink>.
- Or, check out <ulink
url="http://jira.jboss.org/jira/secure/IssueNavigator.jspa?reset=tru...
- for the list of sequencers we've thought of. If you think of one that's not
there, please add it to JIRA! </para>
- <para>Other components on our roadmap include a web user interface, a REST-ful
server, and a view system that allows domain-specific
- views of information in the repository. These components are farther out on our
roadmap, and at this time have not been
- targeted to a particular release. If any of these are of interest to you, please
<link linkend="preface">get involved</link>
- in the community.</para>
-</chapter>
Copied: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml (from rev
553, trunk/docs/reference/src/main/docbook/en-US/content/future.xml)
===================================================================
--- tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml
(rev 0)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/future.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
+%CustomDTD;
+]>
+<chapter id="future">
+ <title>Looking to the future</title>
+ <para>
+ What's next for JBoss DNA? Well, the sequencing system is just the beginning.
With this release, the sequencing system
+ is stable enough so that more <link
linkend="sequencers">sequencers</link> can be developed and used within
your own applications.
+ We've also established the foundation for JBoss DNA repositories, including a
number of <link linkend="repository-connectors">connectors</link>.
+ We'll continue to expand our library of sequencers and connectors, as well as
expand our support of JCR.
+ Other components on our roadmap include a web user interface, a REST-ful server, and a
view system that allows domain-specific
+ views of information in the repository. These components are farther out on our
roadmap, and at this time have not been
+ targeted to a particular release.
+ </para>
+ <para>
+ If you're interested in getting involved with the JBoss DNA project, consider
picking up one of the sequencers on our
+ <ulink
url="http://jira.jboss.org/jira/browse/DNA?report=com.atlassian.jira...;.
+ Or, check out <ulink
url="http://jira.jboss.org/jira/secure/IssueNavigator.jspa?reset=tru...
+ for the list of sequencers we've thought of. If you think of one that's not
there, please add it to JIRA!
+ </para>
+</chapter>
Deleted: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml 2008-09-26
16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,437 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
-%CustomDTD;
-]>
-<chapter id="introduction">
- <title>Introduction to JBoss DNA</title>
- <para>
- The JBoss DNA project is building a unified metadata repository system that is <link
linkend="jcr_intro">JCR-compliant</link>
- and capable of federating information from a variety of back-end systems. To client
applications, JBoss DNA looks and behaves like a
- regular JCR repository that they search, navigate, version, and listen for changes.
But under the covers, JBoss DNA
- gets its content by federating multiple back-end systems (like databases, services,
other repositories, etc.),
- allowing those systems to continue "owning" the information but ensuring the
unified repository stays up-to-date
- and in sync. JBoss DNA also analyzes the content you put into the repository and turns
it into information you can use more effectively.
- </para>
- <para>
- This document goes into detail about JBoss DNA and its capabilities, features,
architecture, components, extension points,
- security, configuration, and testing. So whether your a developer on the project or
trying to learn the intricate details of
- how JBoss DNA works, this document hopefully serves a good reference for developers on
the project.
- </para>
- <sect1 id="use_cases">
- <title>Use cases for JBoss DNA</title>
- <para>
- JBoss DNA repositories can be used in a variety of applications. One of the most
obvious ones
- is in provisioning and management, where it's critical to understand and keep
track of the metadata for models, database, services,
- components, applications, clusters, machines, and other systems used in an enterprise.
Governance takes that a step
- farther, by tracking with those entities the policies dictating expectations and
against which performance can be verified.
- But, a JBoss DNA repository doesn't have to be large and complex - it could just
manage configuration information
- for an application. Or, provide a JCR interface on top of a couple of non-JCR systems.
In truth, there
- are a lot of ways that you could use JBoss DNA.
- </para>
- </sect1>
- <sect1 id="what_is_metadata">
- <title>What is metadata?</title>
- <para>
- Before we dive into more detail about JBoss DNA and metadata repositories, it's
probably useful to explain what we
- mean by the term "metadata." Simply put,
<emphasis>metadata</emphasis> is the information you need to manage something.
- It's the information needed to configure an operating system, or the description of
the information in an LDAP tree,
- or the topology of your network. It's the configuration of an application server or
enterprise service bus.
- It's the steps involved in validating an application before it can go into
production. It's the description of your
- database schemas, or of your services, or of the messages going in and coming out of a
service. JBoss DNA is
- designed to be a repository for all this (and more).
- </para>
- <para>
- There are a couple of important things to understand about this metadata. First, the
majority of this metadata is
- managed by other systems: databases, applications, file systems, source code management
systems, services, and
- content management systems, and even other repositories. We can't pull the
information out and duplicate it, because
- we then risk having multiple copies that are out-of-sync. But we do want to access it
through a homogenous API,
- since that will make our lives significantly easier. The answer to this apparent
dichotomy is
- <emphasis><link
linkend="dna-connector-federation">federation</link></emphasis>.
- We can connect to these back-end systems to dynamically access the content and project
it into a single, unified
- repository. We can also cache it for faster access, as long as the cache can be
invalidated based upon time or event.
- But we also need to maintain a clear picture of where all the bits come from, so users
can be sure they're looking
- at the right information. And we need to make it as easy as possible to write new
connectors, since there are
- a lot of systems out there that have information we want to federate.
- </para>
- <para>
- The second important characteristic of the metadata is that a lot of it is represented
as files, and there are
- a lot of different file formats. These include source code, configuration files, web
pages, database schemas,
- XML schemas, service definitions, policies, documents, spreadsheets, presentations,
images, audio files, workflow
- definitions, business rules, and on and on. And so even though information is added to
the repository through files
- like these, the repository should be able to automatically extract the most useful
content from these files.
- This process of extracting content and storing it in the repository is what JBoss DNA
calls
- <emphasis><link
linkend="sequencing">sequencing</link></emphasis>,
- and it's an important part of a metadata repository since more information is now
available for searching,
- navigating, relating, and analyzing.
- </para>
- <para>
- The third important characteristic of metadata is that it rarely stays the same.
Different consumers of the
- information need to see different views of it. Metadata about two similar systems is
not always the same.
- The metadata often needs to be tagged or annotated with additional information. And
the things being
- described often change over time, meaning the metadata has to change, too. As a
result, the way in which
- we store and manage the metadata has to be flexible and able to adapt, and the object
model
- we use to interact with the repository must accommodate these needs. The graph-based
nature of the JCR API provides this
- flexibility while also giving us the ability to constrain information when it needs to
be constrained.
- </para>
- </sect1>
- <sect1 id="jcr_intro">
- <title>What is JCR?</title>
- <para>There are a lot of choices for how applications can store information
persistently so that it can be accessed at a
- later time and by other processes. The challenge developers face is how to use an
approach that most closely matches the
- needs of their application. This choice becomes more important as developers choose
to focus their efforts on
- application-specific logic, delegating much of the responsibilities for persistence
to libraries and frameworks.</para>
- <para>
- Perhaps one of the easiest techniques is to simply store information in
- <emphasis>files</emphasis>
- . The Java language makes working with files relatively easy, but Java really
doesn't provide many bells and whistles. So
- using files is an easy choice when the information is either not complicated (for
example property files), or when users may
- need to read or change the information outside of the application (for example log
files or configuration files). But using
- files to persist information becomes more difficult as the information becomes more
complex, as the volume of it increases,
- or if it needs to be accessed by multiple processes. For these situations, other
techniques often offer better choices.
- </para>
- <para>
- Another technique built into the Java language is
- <emphasis>Java serialization</emphasis>
- , which is capable of persisting the state of an object graph so that it can be read
back in at a later time. However, Java
- serialization can quickly become tricky if the classes are changed, and so it's
beneficial usually when the information is
- persisted for a very short period of time. For example, serialization is sometimes
used to send an object graph from one
- process to another.
- </para>
- <para>
- One of the more popular persistence technologies is the
- <emphasis>relational database</emphasis>
- . Relational database management systems have been around for decades and are very
capable. The Java Database Connectivity
- (JDBC) API provides a standard interface for connecting to and interacting with
relational databases. However, it is a
- low-level API that requires a lot of code to use correctly, and it still doesn't
abstract away the DBMS-specific SQL
- grammar. Also, working with relational data in an object-oriented language can feel
somewhat unnatural, so many developers
- map this data to classes that fit much more cleanly into their application. The
problem is that manually creating this
- mapping layer requires a lot of repetitive and non-trivial JDBC code.
- </para>
- <para>
- <emphasis>Object-relational mapping</emphasis>
- libraries automate the creation of this mapping layer and result in far less code
that is much more maintainable with
- performance that is often as good as (if not better than) handwritten JDBC code. The
new
- <ulink
url="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"...
Persistence API (JPA)</ulink>
- provide a standard mechanism for defining the mappings (through annotations) and
working with these entity objects. Several
- commercial and open-source libraries implement JPA, and some even offer additional
capabilities and features that go beyond
- JPA. For example,
- <ulink url="http://www.hibernate.org">Hibernate</ulink>
- is one of the most feature-rich JPA implementations and offers object caching,
statement caching, extra association
- mappings, and other features that help to improve performance and usefulness.
- </para>
- <para>
- While relational databases and JPA are solutions that work for many applications,
they become more limited in cases when the
- information structure is highly flexible, is not known
- <emphasis>a priori</emphasis>
- , or is subject to frequent change and customization. In these situations,
- <emphasis>content repositories</emphasis>
- may offer a better choice for persistence. Content repositories are almost a hybrid
between relational databases and file
- systems, and typically provide other capabilities as well, including versioning,
indexing, search, access control,
- transactions, and observation. Because of this, content repositories are used by
content management systems (CMS), document
- management systems (DMS), and other applications that manage electronic files (e.g.,
documents, images, multi-media, web
- content, etc.) and metadata associated with them (e.g., author, date, status,
security information, etc.). The
- <ulink url="&JSR170;">Content Repository for Java technology
API</ulink>
- provides a standard Java API for working with content repositories. Abbreviated
"JCR", this API was developed as part of the
- Java Community Process under
- <ulink url="&JSR170;">JSR-170</ulink>
- and is being revised under
- <ulink url="&JSR283;">JSR-283</ulink>
- .
- </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
- 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
- meaningful information from that content and store it in the repository, where it
can then be searched, accessed, and
- analyzed using the JCR API.
- </para>
- <para> JBoss DNA has other features as well. You can create federated
repositories that dynamically merge the information
- from multiple databases, services, applications, and other JCR repositories. JBoss
DNA also will allow you to
- create customized views based upon the type of data and the role of the user that is
accessing the data. And yet another is
- to create a REST-ful API to allow the JCR content to be accessed easily by other
applications written in other languages.
- </para>
- </sect1>
- <sect1 id="roadmap">
- <title>Project roadmap</title>
- <para>
- The roadmap for JBoss DNA is managed in the project's
- <ulink url="&JIRA;">JIRA instance</ulink>
- . The roadmap shows the different tasks, requirements, issues and other activities
that have been targeted to each of the
- upcoming releases. (The
- <ulink
url="&JIRA;?report=com.atlassian.jira.plugin.system.project:roadmap-panel">roadmap
report</ulink>
- always shows the next three releases.)
- </para>
- <para>
- By convention, JIRA issues not immediately targeted to a release will be reviewed
periodically to determine the
- appropriate release where they can be targeted. Any issue that is reviewed and that
does not fit in a known release will
- be targeted to the
- <ulink
url="&JIRA;?report=com.atlassian.jira.plugin.system.project:roadmap-panel">Future
Releases</ulink>
- bucket.
- </para>
- <para>
- At the start of a release, the project team reviews the roadmap, identifies the goals
for the release, and targets (or retargets)
- the issues appropriately.
- </para>
- </sect1>
- <sect1 id="methodology">
- <title>Development methodology</title>
- <para>
- The JBoss DNA project doesn't use a formal methodology, but instead
incorporates techniques, activities, and processes from
- several methodologies. In fact, the committers are given a lot of freedom for how
they develop the components and features
- they work on.
- </para>
- <para>
- Nevertheless, we encourage familiarity with several major techniques, including:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong"><ulink
url="&Wikipedia;Agile_software_development">Agile software
development</ulink></emphasis>
- includes those software methodologies (e.g., Scrum) that promote development
iterations and open collaboration. While the
- JBoss DNA project doesn't follow these closely, we do emphasize the importance
of always having running software
- and using running software as a measure of progress. The JBoss DNA project also
wants to move to more frequent
- releases (on the order of 4-6 weeks)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong"><ulink
url="&Wikipedia;Test-driven_development">Test-driven development
(TDD)</ulink></emphasis>
- techniques encourage first writing test cases for new features and functionality,
then changing the code to add the
- new features and functionality, and finally the code is refactored to clean-up and
address any duplication or inconsistencies.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong"><ulink
url="http://behaviour-driven.org/">Behavior-driven development
(BDD)</ulink></emphasis>
- is an evolution of TDD, where developers specify the desired behaviors first
(rather than writing "tests").
- In reality, this BDD adopts the language of the user so that tests are written
using words that are meaningful
- to users. With recent test frameworks (like JUnit 4.4), we're able to write
our unit tests to express
- the desired behavior. For example, a test class for sequencer implementation might
have a test method
- <code>shouldNotThrowAnErrorWhenStreamIsNull()</code>, which is very
easy to understand the intent.
- The result appears to be a larger number of finer-grained test methods, but which
are more easily understood
- and easier to write. In fact, many advocates of BDD argue that one of the biggest
challenges of TDD is knowing what
- tests to write in the beginning, whereas with BDD the shift in focus and
terminology make it easier for more
- developers to enumerate the tests they need.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong"><ulink
url="&Wikipedia;Lean_software_development">Lean software
development</ulink></emphasis>
- is an adaptation of <ulink
url="&Wikipedia;Lean_manufacturing">lean manufacturing
techniques</ulink>,
- where emphasis is placed on eliminating waste (e.g., defects, unnecessary
complexity, unnecessary code/functionality/features),
- delivering as fast as possible, deferring irrevocable decisions as much as
possible,
- continuous learning (continuously adapting and improving the process), empowering
the team (or community, in our case),
- and several other guidelines. Lean software development can be thought of as an
evolution of agile techniques
- in the same way that behavior-driven development is an evolution of test-driven
development. Lean techniques
- help the developer to recognize and understand how and why features, bugs, and even
their processes impact the development
- of software.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect1>
- <sect1 id="modules">
- <title>JBoss DNA modules</title>
- <para>
- JBoss DNA consists of the following modules:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">dna-common</emphasis>
- is a low-level library of common utilities and frameworks, including logging,
progress monitoring,
- internationalization/localization, text translators, component management,
and class loader factories.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-graph</emphasis>
- defines the graph Application Programming Interface (API) and Service
Provider Interface (SPI) for DNA,
- including the repository connectors, sequencers, graph interfaces, and MIME type
detectors.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-repository</emphasis>
- is the main module and provides the repository-oriented services, including
the Repository Service, Sequencing
- Service, Observation Service, and Rules Service.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-jcr</emphasis>
- provides the JBoss DNA implementation of the JCR API, which relies upon a
repository connector, such as the
- Federation Connector (see
- <code>dna-connector-federation</code>
- ).
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-integration-tests</emphasis>
- provides a home for all of the integration tests that involve more components
that just unit tests. Integration
- tests are often more complicated, take longer, and involve testing the
integration and functionality of many
- components (whereas unit tests focus on testing a single class or component
and may use stubs or mock objects for
- other components).
- </para>
- </listitem>
- </itemizedlist>
- The following modules are optional extensions that may be used selectively and as
needed (and are located in the source
- under the
- <code>extensions/</code>
- directory):
- <itemizedlist>
- <listitem>
- <para>
- <emphasis
role="strong">dna-maven-classloader</emphasis>
- is a small library that provides a
- <code>ClassLoaderFactory</code>
- implementation that can create
- <code>java.lang.ClassLoader</code>
- instances capable of loading classes given a Maven Repository and a list of
Maven coordinates. The Maven Repository
- can be managed within a JCR repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-connector-federation</emphasis>
- is a DNA repository connector that federates, integrates and caches
information from multiple sources (via other
- repository connectors).
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-connector-inmemory</emphasis>
- is a simple DNA repository connector that manages content within memory. This
can be used as a simple cache or as a
- transient repository.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-connector-jbosscache</emphasis>
- is a DNA repository connector that manages content within a
- <ulink
url="http://www.jboss.org/jbosscache/">JBoss
Cache</ulink>
- instance. JBoss Cache is a powerful cache implementation that can serve as a
distributed cache and that can persist
- information. The cache instance can be found via JNDI or created and managed
by the connector.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-sequencer-zip</emphasis>
- is a DNA sequencer that extracts from ZIP archives the files (with content)
and folders.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-sequencer-images</emphasis>
- is a DNA sequencer that extracts the image metadata (e.g., size, date, etc.)
from PNG, JPEG, GIF, BMP, PCS, IFF,
- RAS, PBM, PGM, and PPM image files.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-sequencer-mp3</emphasis>
- is a DNA sequencer that extracts metadata (e.g., author, album name, etc.)
from MP3 audio files.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-sequencer-java</emphasis>
- is a DNA sequencer that extracts the package, class/type, member,
documentation, annotations, and other information
- from Java source files.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-sequencer-msoffice</emphasis>
- is a DNA sequencer that extracts metadata and summary information from
- <ulink
url="http://office.microsoft.com/en-us/">Microsoft
Office</ulink>
- documents. For example, the sequencer extracts from a PowerPoint presentation
the outline as well as thumbnails of
- each slide. Microsoft Word and Excel files are also supported.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="strong">dna-sequencer-cnd</emphasis>
- is a DNA sequencer that extracts JCR node definitions from JCR Compact Node
Definition (CND) files.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">dna-mimetype-detector-aperture</emphasis>
- is a DNA MIME type detector that uses the
- <ulink
url="http://aperture.sourceforge.net/">Aperture</ulink>
- library to determine the best MIME type from the filename and file contents.
- </para>
- </listitem>
- </itemizedlist>
- There are also documentation modules (located in the source under the
- <code>docs/</code>
- directory):
- <itemizedlist>
- <listitem>
- <para>
- <emphasis
role="strong">docs-getting-started</emphasis>
- is the project with the
- <ulink
url="http://www.docbook.org/">DocBook</ulink>
- source for the JBoss DNA Getting Started document.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">docs-getting-started-examples</emphasis>
- is the project with the Java source for the example application used in the
JBoss DNA Getting Started document.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis
role="strong">docs-reference-guide</emphasis>
- is the project with the
- <ulink
url="http://www.docbook.org/">DocBook</ulink>
- source for this document, the JBoss DNA Reference Guide document.
- </para>
- </listitem>
- </itemizedlist>
- Finally, there is a module that represents the whole JBoss DNA project:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">dna</emphasis>
- is the parent project that aggregates all of the other projects and that
contains some asset files to create the
- necessary Maven artifacts during a build.
- </para>
- </listitem>
- </itemizedlist>
- Each of these modules is a Maven project with a group ID of
- <code>org.jboss.dna</code>
- . All of these projects correspond to artifacts in the
- <ulink url="&JBossMaven;">JBoss Maven 2
Repository</ulink>
- .
- </para>
- </sect1>
-</chapter>
Copied: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml (from
rev 553, trunk/docs/reference/src/main/docbook/en-US/content/introduction.xml)
===================================================================
--- tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml
(rev 0)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/introduction.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
+%CustomDTD;
+]>
+<chapter id="introduction">
+ <title>Introduction to JBoss DNA</title>
+ <para>
+ The JBoss DNA project is building a unified metadata repository system that is <link
linkend="jcr_intro">JCR-compliant</link>
+ and capable of federating information from a variety of back-end systems. To client
applications, JBoss DNA looks and behaves like a
+ regular JCR repository that they search, navigate, version, and listen for changes.
But under the covers, JBoss DNA
+ gets its content by federating multiple back-end systems (like databases, services,
other repositories, etc.),
+ allowing those systems to continue "owning" the information while ensuring
the unified repository stays up-to-date
+ and in sync. JBoss DNA also analyzes the content you put into the repository and turns
it into information you can use more effectively.
+ </para>
+ <para>
+ This document goes into detail about JBoss DNA and its capabilities, features,
architecture, components, extension points,
+ security, configuration, and testing. So whether your a developer on the project, or
you're trying to learn the intricate details of
+ how JBoss DNA works, this document hopefully serves a good reference for developers on
the project.
+ </para>
+ <sect1 id="use_cases">
+ <title>Use cases for JBoss DNA</title>
+ <para>
+ JBoss DNA repositories can be used in a variety of applications. One of the most
obvious ones
+ is in provisioning and management, where it's critical to understand and keep
track of the metadata for models, database, services,
+ components, applications, clusters, machines, and other systems used in an enterprise.
Governance takes that a step
+ farther, by also tracking the policies and expectations against which performance can
be verified.
+ In these cases, a repository is an excellent mechanism for managing this complex and
highly-varied information.
+ But a JBoss DNA repository doesn't have to be large and complex: it could just
manage configuration information
+ for an application, or it could just provide a JCR interface on top of a couple of
non-JCR systems.
+ </para>
+ </sect1>
+ <sect1 id="what_is_metadata">
+ <title>What is metadata?</title>
+ <para>
+ Before we dive into more detail about JBoss DNA and metadata repositories, it's
probably useful to explain what we
+ mean by the term "metadata." Simply put,
<emphasis>metadata</emphasis> is the information you need to manage something.
+ For example, it's the information needed to configure an operating system, or the
description of the information in an LDAP tree,
+ or the topology of your network. It's the configuration of an application server or
enterprise service bus.
+ It's the steps involved in validating an application before it can go into
production. It's the description of your
+ database schemas, or of your services, or of the messages going in and coming out of a
service. JBoss DNA is
+ designed to be a repository for all this (and more).
+ </para>
+ <para>
+ There are a couple of important things to understand about metadata. First, the
majority of metadata is either found in or
+ managed by other systems: databases, applications, file systems, source code management
systems, services, and
+ content management systems, and even other repositories. We can't pull the
information out and duplicate it, because
+ then we risk having multiple copies that are out-of-sync. But we do want to access it
through a homogenous API,
+ since that will make our lives significantly easier.
+ </para>
+ <para>
+ The answer to this apparent dichotomy is <emphasis><link
linkend="dna-connector-federation">federation</link></emphasis>.
+ We can connect to these back-end systems to dynamically access the content and project
it into a single, unified
+ repository. We can also cache it for faster access, as long as the cache can be
invalidated based upon time or event.
+ But we also need to maintain a clear picture of where all the bits come from, so users
can be sure they're looking
+ at the right information. And we need to make it as easy as possible to write new
connectors, since there are
+ a lot of systems out there that have information we want to federate.
+ </para>
+ <para>
+ The second important characteristic of the metadata is that a lot of it is represented
as files, and there are
+ a lot of different file formats. These include source code, configuration files, web
pages, database schemas,
+ XML schemas, service definitions, policies, documents, spreadsheets, presentations,
images, audio files, workflow
+ definitions, business rules, and on and on. And so even though information is added to
the repository through files
+ like these, the repository should be able to automatically extract the most useful
content and place it in
+ the repository where it can be much more easily used, searched, related, and analyzed.
+ This process of extracting content and storing it in the repository is what JBoss DNA
calls
+ <emphasis><link
linkend="sequencing">sequencing</link></emphasis>,
+ and it's an important part of a metadata repository.
+ </para>
+ <para>
+ The third important characteristic of metadata is that it rarely stays the same.
Different consumers of the
+ information need to see different views of it. Metadata about two similar systems is
not always the same.
+ The metadata often needs to be tagged or annotated with additional information. And
the things being
+ described often change over time, meaning the metadata has to change, too. As a
result, the way in which
+ we store and manage the metadata has to be flexible and able to adapt, and the object
model
+ we use to interact with the repository must accommodate these needs. The graph-based
nature of the JCR API provides this
+ flexibility while also giving us the ability to constrain information when it needs to
be constrained.
+ </para>
+ </sect1>
+ <sect1 id="jcr_intro">
+ <title>What is JCR?</title>
+ <para>There are a lot of choices for how applications can store information
persistently so that it can be accessed at a
+ later time and by other processes. The challenge developers face is how to use an
approach that most closely matches the
+ needs of their application. This choice becomes more important as developers choose
to focus their efforts on
+ application-specific logic, delegating much of the responsibilities for persistence
to libraries and frameworks.</para>
+ <para>
+ Perhaps one of the easiest techniques is to simply store information in
+ <emphasis>files</emphasis>
+ . The Java language makes working with files relatively easy, but Java really
doesn't provide many bells and whistles. So
+ using files is an easy choice when the information is either not complicated (for
example property files), or when users may
+ need to read or change the information outside of the application (for example log
files or configuration files). But using
+ files to persist information becomes more difficult as the information becomes more
complex, as the volume of it increases,
+ or if it needs to be accessed by multiple processes. For these situations, other
techniques often have more benefits.
+ </para>
+ <para>
+ Another technique built into the Java language is
+ <emphasis>Java serialization</emphasis>
+ , which is capable of persisting the state of an object graph so that it can be read
back in at a later time. However, Java
+ serialization can quickly become tricky if the classes are changed, and so it's
beneficial usually when the information is
+ persisted for a very short period of time. For example, serialization is sometimes
used to send an object graph from one
+ process to another. Using serialization for longer-term storage of information is
more risky.
+ </para>
+ <para>
+ One of the more popular and widely-used persistence technologies is the
<emphasis>relational database</emphasis>.
+ Relational database management systems have been around for decades and are very
capable. The Java Database Connectivity
+ (JDBC) API provides a standard interface for connecting to and interacting with
relational databases. However, it is a
+ low-level API that requires a lot of code to use correctly, and it still doesn't
abstract away the DBMS-specific SQL
+ grammar. Also, working with relational data in an object-oriented language can feel
somewhat unnatural, so many developers
+ map this data to classes that fit much more cleanly into their application. The
problem is that manually creating this
+ mapping layer requires a lot of repetitive and non-trivial JDBC code.
+ </para>
+ <para>
+ <emphasis>Object-relational mapping</emphasis>
+ libraries automate the creation of this mapping layer and result in far less code
that is much more maintainable with
+ performance that is often as good as (if not better than) handwritten JDBC code. The
new
+ <ulink
url="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"...
Persistence API (JPA)</ulink>
+ provide a standard mechanism for defining the mappings (through annotations) and
working with these entity objects. Several
+ commercial and open-source libraries implement JPA, and some even offer additional
capabilities and features that go beyond
+ JPA. For example, <ulink
url="http://www.hibernate.org">Hibernate</ulink> is one of the most
feature-rich JPA implementations
+ and offers object caching, statement caching, extra association
+ mappings, and other features that help to improve performance and usefulness. Plus,
Hibernate is open-source (with support
+ offered by <ulink url="http://www.jboss.com">JBoss</ulink>).
+ </para>
+ <para>
+ While relational databases and JPA are solutions that work well for many
applications, they are more limited in cases when the
+ information structure is highly flexible, the structure is not known
<emphasis>a priori</emphasis>, or that structure is
+ subject to frequent change and customization. In these situations,
<emphasis>content repositories</emphasis>
+ may offer a better choice for persistence. Content repositories are almost a hybrid
with the storage capabilities of
+ relational databases and the flexibility offered by other systems, such as using
files. Content repositories also
+ typically provide other capabilities as well, including versioning, indexing,
search, access control,
+ transactions, and observation. Because of this, content repositories are used by
content management systems (CMS), document
+ management systems (DMS), and other applications that manage electronic files (e.g.,
documents, images, multi-media, web
+ content, etc.) and metadata associated with them (e.g., author, date, status,
security information, etc.). The
+ <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">Content
Repository for Java technology API</ulink>
+ provides a standard Java API for working with content repositories. Abbreviated
"JCR", this API was developed as part of the
+ Java Community Process under <ulink
url="http://www.jcp.org/en/jsr/detail?id=170">JSR-170</ul...
+ and is being revised under <ulink
url="http://www.jcp.org/en/jsr/detail?id=283">JSR-283</ul...;.
+ </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
+ 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
+ meaningful information from that content and store it in the repository, where it
can then be searched, accessed, and
+ analyzed using the JCR API.
+ </para>
+ <para> JBoss DNA has other features as well. You can create federated
repositories that dynamically merge the information
+ from multiple databases, services, applications, and other JCR repositories. JBoss
DNA also will allow you to
+ create customized views based upon the type of data and the role of the user that is
accessing the data. And yet another is
+ to create a REST-ful API to allow the JCR content to be accessed easily by other
applications written in other languages.
+ </para>
+ </sect1>
+ <sect1 id="roadmap">
+ <title>Project roadmap</title>
+ <para>
+ The roadmap for JBoss DNA is managed in the project's
+ <ulink url="&JIRA;">JIRA instance</ulink>
+ . The roadmap shows the different tasks, requirements, issues and other activities
that have been targeted to each of the
+ upcoming releases. (The
+ <ulink
url="&JIRA;?report=com.atlassian.jira.plugin.system.project:roadmap-panel">roadmap
report</ulink>
+ always shows the next three releases.)
+ </para>
+ <para>
+ By convention, JIRA issues not immediately targeted to a release will be reviewed
periodically to determine the
+ appropriate release where they can be targeted. Any issue that is reviewed and that
does not fit in a known release will
+ be targeted to the
+ <ulink
url="&JIRA;?report=com.atlassian.jira.plugin.system.project:roadmap-panel">Future
Releases</ulink>
+ bucket.
+ </para>
+ <para>
+ At the start of a release, the project team reviews the roadmap, identifies the goals
for the release, and targets (or retargets)
+ the issues appropriately.
+ </para>
+ </sect1>
+ <sect1 id="methodology">
+ <title>Development methodology</title>
+ <para>
+ Rather than use a single formal development methodology, the JBoss DNA project
incorporates those techniques, activities, and
+ processes that are practical and work for the project. In fact, the committers are
given a lot of freedom for how they develop
+ the components and features they work on.
+ </para>
+ <para>
+ Nevertheless, we do encourage familiarity with several major techniques, including:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong"><ulink
url="&Wikipedia;Agile_software_development">Agile software
development</ulink></emphasis>
+ includes those software methodologies (e.g., Scrum) that promote development
iterations and open collaboration. While the
+ JBoss DNA project doesn't follow these closely, we do emphasize the importance
of always having running software
+ and using running software as a measure of progress. The JBoss DNA project also
wants to move to more frequent
+ releases (on the order of 4-6 weeks)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong"><ulink
url="&Wikipedia;Test-driven_development">Test-driven development
(TDD)</ulink></emphasis>
+ techniques encourage first writing test cases for new features and functionality,
then changing the code to add the
+ new features and functionality, and finally the code is refactored to clean-up and
address any duplication or inconsistencies.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong"><ulink
url="http://behaviour-driven.org/">Behavior-driven development
(BDD)</ulink></emphasis>
+ is an evolution of TDD, where developers specify the desired behaviors first
(rather than writing "tests").
+ In reality, this BDD adopts the language of the user so that tests are written
using words that are meaningful
+ to users. With recent test frameworks (like JUnit 4.4), we're able to write
our unit tests to express
+ the desired behavior. For example, a test class for sequencer implementation might
have a test method
+ <code>shouldNotThrowAnErrorWhenStreamIsNull()</code>, which is very
easy to understand the intent.
+ The result appears to be a larger number of finer-grained test methods, but which
are more easily understood
+ and easier to write. In fact, many advocates of BDD argue that one of the biggest
challenges of TDD is knowing what
+ tests to write in the beginning, whereas with BDD the shift in focus and
terminology make it easier for more
+ developers to enumerate the tests they need.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong"><ulink
url="&Wikipedia;Lean_software_development">Lean software
development</ulink></emphasis>
+ is an adaptation of <ulink
url="&Wikipedia;Lean_manufacturing">lean manufacturing
techniques</ulink>,
+ where emphasis is placed on eliminating waste (e.g., defects, unnecessary
complexity, unnecessary code/functionality/features),
+ delivering as fast as possible, deferring irrevocable decisions as much as
possible,
+ continuous learning (continuously adapting and improving the process), empowering
the team (or community, in our case),
+ and several other guidelines. Lean software development can be thought of as an
evolution of agile techniques
+ in the same way that behavior-driven development is an evolution of test-driven
development. Lean techniques
+ help the developer to recognize and understand how and why features, bugs, and even
their processes impact the development
+ of software.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect1>
+ <sect1 id="modules">
+ <title>JBoss DNA modules</title>
+ <para>
+ JBoss DNA consists of the following modules:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-common</emphasis>
+ is a low-level library of common utilities and frameworks, including logging,
progress monitoring,
+ internationalization/localization, text translators, component management,
and class loader factories.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-graph</emphasis>
+ defines the graph Application Programming Interface (API) and Service
Provider Interface (SPI) for DNA,
+ including the repository connectors, sequencers, graph interfaces, and MIME type
detectors.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-repository</emphasis>
+ is the main module and provides the repository-oriented services, including
the Repository Service, Sequencing
+ Service, Observation Service, and Rules Service.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-jcr</emphasis>
+ provides the JBoss DNA implementation of the JCR API, which relies upon a
repository connector, such as the
+ Federation Connector (see
+ <code>dna-connector-federation</code>
+ ).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-integration-tests</emphasis>
+ provides a home for all of the integration tests that involve more components
that just unit tests. Integration
+ tests are often more complicated, take longer, and involve testing the
integration and functionality of many
+ components (whereas unit tests focus on testing a single class or component
and may use stubs or mock objects for
+ other components).
+ </para>
+ </listitem>
+ </itemizedlist>
+ The following modules are optional extensions that may be used selectively and as
needed (and are located in the source
+ under the
+ <code>extensions/</code>
+ directory):
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-maven-classloader</emphasis>
+ is a small library that provides a
+ <code>ClassLoaderFactory</code>
+ implementation that can create
+ <code>java.lang.ClassLoader</code>
+ instances capable of loading classes given a Maven Repository and a list of
Maven coordinates. The Maven Repository
+ can be managed within a JCR repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-connector-federation</emphasis>
+ is a DNA repository connector that federates, integrates and caches
information from multiple sources (via other
+ repository connectors).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-connector-inmemory</emphasis>
+ is a simple DNA repository connector that manages content within memory. This
can be used as a simple cache or as a
+ transient repository.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-connector-jbosscache</emphasis>
+ is a DNA repository connector that manages content within a
+ <ulink
url="http://www.jboss.org/jbosscache/">JBoss
Cache</ulink>
+ instance. JBoss Cache is a powerful cache implementation that can serve as a
distributed cache and that can persist
+ information. The cache instance can be found via JNDI or created and managed
by the connector.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-sequencer-zip</emphasis>
+ is a DNA sequencer that extracts from ZIP archives the files (with content)
and folders.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-sequencer-images</emphasis>
+ is a DNA sequencer that extracts the image metadata (e.g., size, date, etc.)
from PNG, JPEG, GIF, BMP, PCS, IFF,
+ RAS, PBM, PGM, and PPM image files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-sequencer-mp3</emphasis>
+ is a DNA sequencer that extracts metadata (e.g., author, album name, etc.)
from MP3 audio files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-sequencer-java</emphasis>
+ is a DNA sequencer that extracts the package, class/type, member,
documentation, annotations, and other information
+ from Java source files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-sequencer-msoffice</emphasis>
+ is a DNA sequencer that extracts metadata and summary information from
+ <ulink
url="http://office.microsoft.com/en-us/">Microsoft
Office</ulink>
+ documents. For example, the sequencer extracts from a PowerPoint presentation
the outline as well as thumbnails of
+ each slide. Microsoft Word and Excel files are also supported.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna-sequencer-cnd</emphasis>
+ is a DNA sequencer that extracts JCR node definitions from JCR Compact Node
Definition (CND) files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">dna-mimetype-detector-aperture</emphasis>
+ is a DNA MIME type detector that uses the
+ <ulink
url="http://aperture.sourceforge.net/">Aperture</ulink>
+ library to determine the best MIME type from the filename and file contents.
+ </para>
+ </listitem>
+ </itemizedlist>
+ There are also documentation modules (located in the source under the
+ <code>docs/</code>
+ directory):
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis
role="strong">docs-getting-started</emphasis>
+ is the project with the
+ <ulink
url="http://www.docbook.org/">DocBook</ulink>
+ source for the JBoss DNA Getting Started document.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">docs-getting-started-examples</emphasis>
+ is the project with the Java source for the example application used in the
JBoss DNA Getting Started document.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis
role="strong">docs-reference-guide</emphasis>
+ is the project with the
+ <ulink
url="http://www.docbook.org/">DocBook</ulink>
+ source for this document, the JBoss DNA Reference Guide document.
+ </para>
+ </listitem>
+ </itemizedlist>
+ Finally, there is a module that represents the whole JBoss DNA project:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">dna</emphasis>
+ is the parent project that aggregates all of the other projects and that
contains some asset files to create the
+ necessary Maven artifacts during a build.
+ </para>
+ </listitem>
+ </itemizedlist>
+ Each of these modules is a Maven project with a group ID of
+ <code>org.jboss.dna</code>
+ . All of these projects correspond to artifacts in the
+ <ulink url="&JBossMaven;">JBoss Maven 2
Repository</ulink>
+ .
+ </para>
+ </sect1>
+</chapter>
Deleted: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
16:10:20 UTC (rev 547)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
-%CustomDTD;
-]>
-<legalnotice id="Legal_Notice">
- <title>Legal Notice</title>
- <para>
- <address>
- <street>1801 Varsity Drive</street>
- <city>Raleigh</city>,
<state>NC</state><postcode>27606-2072</postcode><country>USA</country>
- <phone>Phone: +1 919 754 3700</phone>
- <phone>Phone: 888 733 4281</phone>
- <fax>Fax: +1 919 754 3701</fax>
- <pob>PO Box 13588</pob><city>Research Triangle
Park</city>,
<state>NC</state><postcode>27709</postcode><country>USA</country>
- </address>
- </para>
- <para>
- Copyright <trademark class="copyright"/> 2007 by Red Hat, Inc.
This copyrighted material is made available to
- anyone wishing to use, modify, copy, or redistribute it subject to the terms and
conditions of the
- GNU <ulink
url="http://www.gnu.org/licenses/lgpl-2.1.html">Lesser
General Public License</ulink>, as published
- by the Free Software Foundation.
- </para>
- <para>
- Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of
Red Hat, Inc. in the United States and other countries.
- </para>
- <para>
- All other trademarks referenced herein are the property of their respective
owners.
- </para>
- <para>
- The GPG fingerprint of the security(a)redhat.com key is:
- </para>
- <para>
- CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
- </para>
-</legalnotice>
Copied: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml (from
rev 553, trunk/docs/reference/src/main/docbook/en-US/content/legal_notice.xml)
===================================================================
--- tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml
(rev 0)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/legal_notice.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
+%CustomDTD;
+]>
+<legalnotice id="Legal_Notice">
+ <title>Legal Notice</title>
+ <para>
+ <address>
+ <street>1801 Varsity Drive</street>
+ <city>Raleigh</city>,
<state>NC</state><postcode>27606-2072</postcode><country>USA</country>
+ <phone>Phone: +1 919 754 3700</phone>
+ <phone>Phone: 888 733 4281</phone>
+ <fax>Fax: +1 919 754 3701</fax>
+ <pob>PO Box 13588</pob><city>Research Triangle
Park</city>,
<state>NC</state><postcode>27709</postcode><country>USA</country>
+ </address>
+ </para>
+ <para>
+ Copyright <trademark class="copyright"/> ©rightYear; by
Red Hat, Inc. This copyrighted material is made available to
+ anyone wishing to use, modify, copy, or redistribute it subject to the terms and
conditions of the
+ GNU <ulink
url="http://www.gnu.org/licenses/lgpl-2.1.html">Lesser
General Public License</ulink>, as published
+ by the Free Software Foundation.
+ </para>
+ <para>
+ Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of
Red Hat, Inc. in the United States and other countries.
+ </para>
+ <para>
+ All other trademarks referenced herein are the property of their respective
owners.
+ </para>
+ <para>
+ The GPG fingerprint of the security(a)redhat.com key is:
+ </para>
+ <para>
+ CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
+ </para>
+</legalnotice>
Deleted: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml
===================================================================
--- trunk/docs/reference/src/main/docbook/en-US/content/sequencing.xml 2008-09-26 16:10:20
UTC (rev 547)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -1,821 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ JBoss, Home of Professional Open Source.
- ~
- ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
- ~ indicated by the @author tags or express copyright attribution
- ~ statements applied by the authors. All third-party contributions are
- ~ distributed under license by Red Hat Middleware LLC.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, as published by the Free Software Foundation.
- ~
- ~ This program is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- ~ for more details.
- ~
- ~ You should have received a copy of the GNU Lesser General Public License
- ~ along with this distribution; if not, write to:
- ~ Free Software Foundation, Inc.
- ~ 51 Franklin Street, Fifth Floor
- ~ Boston, MA 02110-1301 USA
- -->
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
-%CustomDTD;
-]>
-<chapter id="sequencing">
- <title>Sequencing content</title>
- <para>As we've mentioned before, JBoss DNA is able to work with existing JCR
repositories. Your client applications
- make changes to the information in those repositories, and JBoss DNA automatically
uses its sequencers to extract
- additional information from the uploaded files.</para>
- <para>
- This chapter discusses the sequencing features of JBoss DNA and the components that are
involved.
- </para>
- <sect1 id="sequencing-service">
- <title>Sequencing Service</title>
- <para>The JBoss DNA <emphasis>sequencing service</emphasis> is the
component that manages the <emphasis>sequencers</emphasis>,
- reacting to changes in JCR repositories and then running the appropriate sequencers.
- This involves processing the changes on a node, determining which (if any)
sequencers should be run on that node,
- and for each sequencer constructing the execution environment, calling the
sequencer, and saving the information
- generated by the sequencer.</para>
- <note>
- <para>Configuring JBoss DNA services is a bit more manual than is ideal. As
you'll see, JBoss DNA uses dependency
- injection to allow a great deal of flexibility in how it can be configured and
customized. But this flexibility
- makes it more difficult for you to use. We understand this, and will soon provide
a much easier way to set up
- and manage JBoss DNA. Current plans are to use the <ulink
url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>
- along with a configuration repository.</para>
- </note>
- <para>To set up the sequencing service, an instance is created, and dependent
components are injected into
- the object. This includes among other things:
- <itemizedlist>
- <listitem>
- <para>An <emphasis>execution context</emphasis> that defines the
context in which the service runs, including
- a factory for JCR sessions given names of the repository and workspace. This
factory must be configured,
- and is how JBoss DNA knows about your JCR repositories and how to connect to
them. More on this a bit later.</para>
- </listitem>
- <listitem>
- <para>An optional <emphasis>factory for class loaders</emphasis>
used to load sequencers. If no factory is supplied,
- the service uses the current thread's context class loader (or if that is
null, the class loader that loaded the
- sequencing service class).</para>
- </listitem>
- <listitem>
- <para>An &ExecutorService; used to execute the sequencing activites. If
none
- is supplied, a new single-threaded executor is created by calling
<code>Executors.newSingleThreadExecutor()</code>.
- (This can easily be changed by subclassing and overriding the
<code>SequencerService.createDefaultExecutorService()</code>
method.)</para>
- </listitem>
- <listitem>
- <para>Filters for sequencers and events. By default, all sequencers are
considered for "node added", "property added"
- and "property changed" events.</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>As mentioned above, the &ExecutionContext; provides access to a
&SessionFactory; that is used
- by JBoss DNA to establish sessions to your JCR repositories. Two implementations
are available:
- <itemizedlist>
- <listitem>
- <para>The &JndiSessionFactory;> looks up JCR &Repository; instances
in JNDI using
- names that are supplied when creating sessions. This implementation also
has methods to set the
- JCR &Credentials; for a given workspace name.</para>
- </listitem>
- <listitem>
- <para>The &SimpleSessionFactory; has methods to register the JCR
&Repository; instances
- with names, as well as methods to set the JCR &Credentials; for a given
workspace name.</para>
- </listitem>
- </itemizedlist>
- You can use the &BasicJcrExecutionContext; implementation of
&JcrExecutionContext; and supply
- a &SessionFactory; instance, or you can provide your own
implementation.</para>
- <para>Here's an example of how to instantiate and configure the
&SequencingService;:</para>
- <programlisting>
-&SimpleSessionFactory; sessionFactory = new &SimpleSessionFactory;();
-sessionFactory.registerRepository("Main Repository", this.repository);
-&Credentials; credentials = new &SimpleCredentials;("jsmith",
"secret".toCharArray());
-sessionFactory.registerCredentials("Main Repository/Workspace1", credentials);
-ExecutionContext executionContext = new &BasicJcrExecutionContext;(sessionFactory);
-
-// Create the sequencing service, passing in the execution context ...
-&SequencingService; sequencingService = new &SequencingService;();
-sequencingService.setExecutionContext(executionContext);
-</programlisting>
- <para>After the sequencing service is created and configured, it must be started.
The &SequencingService;
- has an <emphasis>administration object</emphasis> (that is an instance
of &ServiceAdministrator;)
- with <code>start()</code>, <code>pause()</code>, and
<code>shutdown()</code> methods. The latter method will
- close the queue for sequencing, but will allow sequencing operations already
running to complete normally.
- To wait until all sequencing operations have completed, simply call the
<code>awaitTermination</code> method
- and pass it the maximum amount of time you want to wait.</para>
- <programlisting>
-sequencingService.getAdministrator().start();
-</programlisting>
- <para>The JBoss DNA services are utilizing resources and threads that must be
released before your application is ready to shut down.
- The safe way to do this is to simply obtain the &ServiceAdministrator; for each
service (via the <code>getServiceAdministrator()</code> method)
- and call <code>shutdown()</code>. As previously mentioned, the shutdown
method will simply prevent new work from being processed
- and will not wait for existing work to be completed. If you want to wait until the
service completes all its work, you must wait
- until the service terminates. Here's an example that shows how this is
done:</para>
- <programlisting>
-// Shut down the service and wait until it's all shut down ...
-sequencingService.getAdministrator().shutdown();
-sequencingService.getAdministrator().awaitTermination(5, TimeUnit.SECONDS);
-
-// Shut down the observation service ...
-observationService.getAdministrator().shutdown();
-observationService.getAdministrator().awaitTermination(5, TimeUnit.SECONDS);
-</programlisting>
- </sect1>
- <sect1 id="sequencer-configuration">
- <title>Sequencer Configurations</title>
- <para>The sequencing service must also be configured with the sequencers that it
will use. This is done using the
- <code>addSequencer(SequencerConfig)</code> method and passing a
&SequencerConfig; instance that
- you create. Here's the code that defines 3 sequencer configurations: 1 that
places image metadata into
- "<code><![CDATA[/images/<filename>]]></code>",
another that places MP3 metadata into
"<code><![CDATA[/mp3s/<filename>]]></code>",
- and a third that places a structure that represents the classes, methods, and
attributes found within Java source into
-
"<code><![CDATA[/java/<filename>]]></code>".</para>
- <programlisting>
-String name = "Image Sequencer";
-String desc = "Sequences image files to extract the characteristics of the
image";
-String classname = "org.jboss.dna.sequencer.images.ImageMetadataSequencer";
-String[] classpath = null; // Use the current classpath
-String[] pathExpressions =
{"//(*.(jpg|jpeg|gif|bmp|pcx|png)[*])/jcr:content[@jcr:data] =>
/images/$1"};
-&SequencerConfig; imageSequencerConfig = new &SequencerConfig;(name, desc,
classname,
- classpath, pathExpressions);
-sequencingService.addSequencer(imageSequencerConfig);
-
-name = "MP3 Sequencer";
-desc = "Sequences MP3 files to extract the ID3 tags from the audio file";
-classname = "org.jboss.dna.sequencer.mp3.Mp3MetadataSequencer";
-pathExpressions = {"//(*.mp3[*])/jcr:content[@jcr:data] => /mp3s/$1"};
-&SequencerConfig; mp3SequencerConfig = new &SequencerConfig;(name, desc,
classname,
- classpath, pathExpressions);
-sequencingService.addSequencer(mp3SequencerConfig);
-
-name = "Java Sequencer";
-desc = "Sequences java files to extract the characteristics of the Java
source";
-classname = "org.jboss.dna.sequencer.java.JavaMetadataSequencer";
-pathExpressions = {"//(*.java[*])/jcr:content[@jcr:data] => /java/$1"};
-&SequencerConfig; javaSequencerConfig = new &SequencerConfig;(name, desc,
classname,
- classpath, pathExpressions);
-this.sequencingService.addSequencer(javaSequencerConfig);
-</programlisting>
- <para>Each configuration defines several things, including the name,
description, and sequencer implementation class.
- The configuration also defines the classpath information, which can be passed to the
&ClassLoaderFactory; to get
- a Java &ClassLoader; with which the sequencer class can be loaded. (If no
classpath information is provided, as is done
- in the code above, the application class loader is used.) The configuration also
specifies the path expressions that
- identify the nodes that should be sequenced with the sequencer and where to store
the output generated by the sequencer.
- Path expressions are pretty straightforward but are quite powerful, so before we go
any further with the example,
- let's dive into path expressions in more detail.</para>
- <sect2 id="path_expressions">
- <title>Path Expressions</title>
- <para>Path expressions consist of two parts: a selection criteria (or an input
path) and an output path:</para>
- <programlisting><![CDATA[ inputPath => outputPath
]]></programlisting>
- <para>The <emphasis>inputPath</emphasis> part defines an expression
for the path of a node that is to be sequenced.
- Input paths consist of '<code>/</code>' separated segments,
where each segment represents a pattern for a single node's
- name (including the same-name-sibling indexes) and
'<code>@</code>' signifies a property name.</para>
- <para>Let's first look at some simple examples:</para>
- <table frame='all'>
- <title>Simple Input Path Examples</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Input Path</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row><entry>/a/b</entry><entry>Match node
"<code>b</code>" that is a child of the top level node
"<code>a</code>". Neither node
- may have any same-name-sibilings.</entry></row>
- <row><entry>/a/*</entry><entry>Match any child node of the
top level node "<code>a</code>".</entry></row>
- <row><entry>/a/*.txt</entry><entry>Match any child node of
the top level node "<code>a</code>" that also has a name ending in
"<code>.txt</code>".</entry></row>
- <row><entry>/a/*.txt</entry><entry>Match any child node of
the top level node "<code>a</code>" that also has a name ending in
"<code>.txt</code>".</entry></row>
- <row><entry>/a/b@c</entry><entry>Match the property
"<code>c</code>" of node
"<code>/a/b</code>".</entry></row>
- <row><entry>/a/b[2]</entry><entry>The second child named
"<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
- <row><entry>/a/b[2,3,4]</entry><entry>The second, third or
fourth child named "<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
- <row><entry>/a/b[*]</entry><entry>Any (and every) child
named "<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
- <row><entry>//a/b</entry><entry>Any node named
"<code>b</code>" that exists below a node named
"<code>a</code>", regardless
- of where node "<code>a</code>" occurs. Again, neither
node may have any same-name-sibilings.</entry></row>
- </tbody>
- </tgroup>
- </table>
- <para>With these simple examples, you can probably discern the most important
rules. First, the '<code>*</code>' is a wildcard character
- that matches any character or sequence of characters in a node's name (or index
if appearing in between square brackets), and
- can be used in conjunction with other characters (e.g.,
"<code>*.txt</code>").</para>
- <para>Second, square brackets (i.e., '<code>[</code>' and
'<code>]</code>') are used to match a node's same-name-sibiling
index.
- You can put a single non-negative number or a comma-separated list of non-negative
numbers. Use '0' to match a node that has no
- same-name-sibilings, or any positive number to match the specific
same-name-sibling.</para>
- <para>Third, combining two delimiters (e.g.,
"<code>//</code>") matches any sequence of nodes, regardless of what
their names are
- or how many nodes. Often used with other patterns to identify nodes at any level
matching other patterns.
- Three or more sequential slash characters are treated as two.</para>
- <para>Many input paths can be created using just these simple rules. However,
input paths can be more complicated. Here are some
- more examples:</para>
- <table frame='all'>
- <title>More Complex Input Path Examples</title>
- <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
- <colspec colname='c1' colwidth="1*"/>
- <colspec colname='c2' colwidth="1*"/>
- <thead>
- <row>
- <entry>Input Path</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row><entry>/a/(b|c|d)</entry><entry>Match children of the
top level node "<code>a</code>" that are named
"<code>a</code>",
- "<code>b</code>" or
"<code>c</code>". None of the nodes may have same-name-sibling
indexes.</entry></row>
- <row><entry>/a/b[c/d]</entry><entry>Match node
"<code>b</code>" child of the top level node
"<code>a</code>", when node
- "<code>b</code>" has a child named
"<code>c</code>", and "<code>c</code>" has a
child named "<code>d</code>".
- Node "<code>b</code>" is the selected node, while nodes
"<code>b</code>" and "<code>b</code>" are used
as criteria but are not
- selected.</entry></row>
- <row><entry>/a(/(b|c|d|)/e)[f/g/@something]</entry><entry>Match
node "<code>/a/b/e</code>",
"<code>/a/c/e</code>", "<code>/a/d/e</code>",
- or "<code>/a/e</code>" when they also have a child
"<code>f</code>" that itself has a child
"<code>g</code>" with property
- "<code>something</code>". None of the nodes may have
same-name-sibling indexes.</entry></row>
- </tbody>
- </tgroup>
- </table>
- <para>These examples show a few more advanced rules. Parentheses (i.e.,
'<code>(</code>' and '<code>)</code>') can be
used
- to define a set of options for names, as shown in the first and third rules.
Whatever part of the selected node's path
- appears between the parentheses is captured for use within the output path. Thus,
the first input path in the previous table
- would match node "<code>/a/b</code>", and "b" would
be captured and could be used within the output path using
"<code>$1</code>",
- where the number used in the output path identifies the parentheses.</para>
- <para>Square brackets can also be used to specify criteria on a node's
properties or children. Whatever appears in between the square
- brackets does not appear in the selected node.</para>
- <para>Let's go back to the previous code fragment and look at the first
path expression:</para>
- <programlisting><![CDATA[
//(*.(jpg|jpeg|gif|bmp|pcx|png)[*])/jcr:content[@jcr:data] => /images/$1
]]></programlisting>
- <para>This matches a node named
"<code>jcr:content</code>" with property
"<code>jcr:data</code>" but no siblings with the same name,
- and that is a child of a node whose name ends with
"<code>.jpg</code>", "<code>.jpeg</code>",
"<code>.gif</code>", "<code>.bmp</code>",
"<code>.pcx</code>",
- or "<code>.png</code>" that may have any same-name-sibling
index. These nodes can appear at any level in the repository.
- Note how the input path capture the filename (the segment containing the file
extension), including any same-name-sibling index.
- This filename is then used in the output path, which is where the sequenced content
is placed.</para>
- </sect2>
- </sect1>
- <sect1 id="sequencers">
- <title>JBoss DNA Sequencers</title>
- <para>
- JBoss DNA includes a number of sequencers "out of the box". These
sequencers can be used within your application to sequence
- a variety of common file formats. To use them, the only thing you have to do is
define the appropriate sequencer configurations
- and include the appropriate JAR files.
- </para>
- <sect2 id="dna-sequencer-images">
- <title>Image sequencer</title>
- <para>
- A sequencer that extracts metadata from JPEG, GIF, BMP, PCX, PNG, IFF, RAS, PBM, PGM,
PPM and PSD image files.
- This sequencer extracts the file format, image resolution, number of bits per pixel
and optionally number of images, comments
- and physical resolution, and then writes this information into the repository using
the following structure:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="strong">image:metadata</emphasis> node of
type <code>image:metadata</code>
- </para>
- </listitem>
- <listitem>
- <itemizedlist>
- <listitem>
- <para><emphasis role="strong">jcr:mimeType</emphasis>
- optional string property for the mime type of the image</para>
- </listitem>
- <listitem>
- <para><emphasis role="strong">jcr:encoding</emphasis>
- optional string property for the encoding of the image</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:formatName</emphasis> - string property for the
name of the format</para>
- </listitem>
- <listitem>
- <para><emphasis role="strong">image:width</emphasis> -
optional integer property for the image's width in pixels</para>
- </listitem>
- <listitem>
- <para><emphasis role="strong">image:height</emphasis>
- optional integer property for the image's height in pixles</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:bitsPerPixel</emphasis> - optional integer property
for the number of bits per pixel</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:progressive</emphasis> - optional boolean property
specifying whether the image is stored in a progressive
- (i.e., interlaced) form</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:numberOfImages</emphasis> - optional integer
property for the number of images stored in the file; defaults
- to 1</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:physicalWidthDpi</emphasis> - optional integer
property for the physical width of the image in dots per inch</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:physicalHeightDpi</emphasis> - optional integer
property for the physical height of the image in dots per
- inch</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:physicalWidthInches</emphasis> - optional double
property for the physical width of the image in inches</para>
- </listitem>
- <listitem>
- <para><emphasis
role="strong">image:physicalHeightInches</emphasis> - optional double
property for the physical height of the image in inches</para>
- </listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- <para>
- This structure could be extended in the future to add EXIF and IPTC metadata as child
nodes. For example, EXIF metadata is
- structured as tags in directories, where the directories form something like
namespaces, and which are used by different camera
- vendors to store custom metadata. This structure could be mapped with each directory
(e.g. "EXIF" or "Nikon Makernote" or
- "IPTC") as the name of a child node, with the EXIF tags values stored as
either properties or child nodes.
- </para>
- <para>
- To use this sequencer, simply include the
<code>dna-sequencer-images</code> JAR
- in your application and configure the Sequencing Service to use this sequencer using
something similar to:
- </para>
- <programlisting>
-String name = "Image Sequencer";
-String desc = "Sequences image files to extract the characteristics of the
image";
-String classname = "org.jboss.dna.sequencer.images.ImageMetadataSequencer";
-String[] classpath = null; // Use the current classpath
-String[] pathExpressions =
{"//(*.(jpg|jpeg|gif|bmp|pcx|png|iff|ras|pbm|pgm|ppm|psd)[*])/jcr:content[@jcr:data]
=> /images/$1"};
-&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
- classpath, pathExpressions);
-sequencingService.addSequencer(sequencerConfig);
-</programlisting>
- </sect2>
- <sect2 id="dna-sequencer-msoffice">
- <title>Microsoft Office document sequencer</title>
- <para>
- This sequencer is included in JBoss DNA and processes Microsoft Office documents,
including Excel spreadsheets
- and PowerPoint presentations. With presentations, the sequencer extracts the slides,
titles, text and slide thumbnails.
- With spreadsheets, the sequencer extracts the names of the sheets. And, the
sequencer extracts for all the files the
- general file information, including the name of the author, title, keywords, subject,
comments, and various dates.
- </para>
- <note>
- <para>
- Currently, Word documents are not supported. For more information and the latest
status, see
- <ulink url="&JIRA;-153">DNA-153</ulink>.
- </para>
- </note>
- <para>
- To use this sequencer, simply include the
<code>dna-sequencer-msoffice</code> JAR and all of the
- <ulink
url="http://poi.apache.org/">POI</ulink> JARs
- in your application and configure the Sequencing Service to use this sequencer using
something similar to:
- </para>
- <programlisting>
-String name = "Microsoft Office Document Sequencer";
-String desc = "Sequences MS Office documents, including spreadsheets and
presentations";
-String classname =
"org.jboss.dna.sequencer.msoffice.MSOfficeMetadataSequencer";
-String[] classpath = null; // Use the current classpath
-String[] pathExpressions = {"//(*.(doc|docx|ppt|pps|xls)[*])/jcr:content[@jcr:data]
=> /msoffice/$1"};
-&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
- classpath, pathExpressions);
-sequencingService.addSequencer(sequencerConfig);
-</programlisting>
- </sect2>
- <sect2 id="dna-sequencer-zip">
- <title>ZIP archive sequencer</title>
- <para>
- The ZIP file sequencer is included in JBoss DNA and extracts the files and folders
contained in the ZIP archive file,
- extracting the files and folders into the repository using JCR's
<code>nt:file</code> and <code>nt:folder</code> node types.
- </para>
- <para>
- To use this sequencer, simply include the <code>dna-sequencer-zip</code>
JAR
- in your application and configure the Sequencing Service to use this sequencer using
something similar to:
- </para>
- <programlisting>
-String name = "ZIP Sequencer";
-String desc = "Sequences ZIP archives to extract the files and folders";
-String classname = "org.jboss.dna.sequencer.zip.ZipSequencer";
-String[] pathExpressions = {"//(*.zip[*])/jcr:content[@jcr:data] =>
/zips/$1"};
-&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
- classpath, pathExpressions);
-this.sequencingService.addSequencer(sequencerConfig);
-</programlisting>
- </sect2>
- <sect2 id="dna-sequencer-java">
- <title>Java source sequencer</title>
- <para>
- One of the sequencers that included in JBoss DNA is the <emphasis
role="strong">dna-sequencer-java</emphasis> subproject.
- This sequencer parses Java source code added to the repository and extracts the basic
structure of the classes and enumerations
- defined in the code.
- This structure includes: the package structures, class declarations, class and member
attribute declarations,
- class and member method declarations with signature (but not implementation logic),
enumerations with each enumeration literal value,
- annotations, and JavaDoc information for all of the above.
- After extracting this information from the source code, the sequencer then writes
this structure into the repository,
- where it can be further processed, analyzed, searched, navigated, or referenced.
- </para>
- <para>
- To use this sequencer, simply include the <code>dna-sequencer-java</code>
JAR (plus all of the JARs that it is dependent upon)
- in your application and configure the Sequencing Service to use this sequencer using
something similar to:
- </para>
- <programlisting>
-String name = "Java Sequencer";
-String desc = "Sequences java files to extract the characteristics of the Java
source";
-String classname = "org.jboss.dna.sequencer.java.JavaMetadataSequencer";
-String[] classpath = null; // Use the current classpath
-String[] pathExpressions = {"//(*.java[*])/jcr:content[@jcr:data] =>
/java/$1"};
-&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
- classpath, pathExpressions);
-this.sequencingService.addSequencer(sequencerConfig);
-</programlisting>
- </sect2>
- <sect2 id="dna-sequencer-mp3">
- <title>MP3 audio file sequencer</title>
- <para>
- Another sequencer that is included in JBoss DNA is the <emphasis
role="strong">dna-sequencer-mp3</emphasis> sequencer project.
- This sequencer processes MP3 audio files added to a repository and extracts the
<ulink
url="http://www.id3.org/">ID3</ulink>
- metadata for the file, including the track's title, author, album name, year,
and comment.
- After extracting this information from the audio files, the sequencer then writes
this structure into the repository,
- where it can be further processed, analyzed, searched, navigated, or referenced.
- </para>
- <para>
- To use this sequencer, simply include the <code>dna-sequencer-mp3</code>
JAR and the <ulink
url="http://www.jthink.net/jaudiotagger/">JAudioTagger</u...
- library in your application and configure the Sequencing Service to use this
sequencer using something similar to:
- </para>
- <programlisting>
-String name = "MP3 Sequencer";
-String desc = "Sequences MP3 files to extract the ID3 tags of the audio file";
-String classname = "org.jboss.dna.sequencer.mp3.Mp3MetadataSequencer";
-String[] pathExpressions = {"//(*.mp3[*])/jcr:content[@jcr:data] =>
/mp3s/$1"};
-&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
- classpath, pathExpressions);
-this.sequencingService.addSequencer(sequencerConfig);
-</programlisting>
- </sect2>
- <sect2 id="dna-sequencer-cnd">
- <title>JCR Compact Node Definition (CND) file sequencer</title>
- <para>
- This sequencer is incomplete and is not currently usable. The purpose is to
sequence JCR Compact Node Definition (CND) files
- to extract the node definitions with their property definitions, and inserting these
into the repository using JCR standard notation.
- </para>
- </sect2>
- </sect1>
- <sect1 id="custom-sequencers">
- <title>Creating custom sequencers</title>
- <para>The current release of JBoss DNA comes with six sequencers. However,
it's very easy to create your own
- sequencers and to then configure JBoss DNA to use them in your own application.
- </para>
- <para>
- Creating a custom sequencer involves the following steps:
- <itemizedlist>
- <listitem>
- <para>Create a Maven 2 project for your sequencer;</para>
- </listitem>
- <listitem>
- <para>Implement the &StreamSequencer; interface with your own
implementation, and create unit tests to verify
- the functionality and expected behavior;</para>
- </listitem>
- <listitem>
- <para>Add the sequencer configuration to the JBoss DNA
&SequencingService; in your application
- as described in the <link linkend="using_dna">previous
chapter</link>; and</para>
- </listitem>
- <listitem>
- <para>Deploy the JAR file with your implementation (as well as any
dependencies), and make them available to JBoss DNA
- in your application.</para>
- </listitem>
- </itemizedlist>
- It's that simple.
- </para>
- <sect2 id="custom_sequencer_project">
- <title>Creating the Maven 2 project</title>
- <para>The first step is to create the Maven 2 project that you can use to
compile your code and build the JARs.
- Maven 2 automates a lot of the work, and since you're already <link
linkend="maven">set up to use Maven</link>,
- using Maven for your project will save you a lot of time and effort. Of course, you
don't have to use Maven 2, but then you'll
- have to get the required libraries and manage the compiling and building process
yourself.</para>
- <note>
- <para>JBoss DNA may provide in the future a Maven archetype for creating
sequencer projects. If you'd find this useful
- and would like to help create it, please <link
linkend="preface">join the community</link>.</para>
- </note>
- <note>
- <para>The <emphasis
role="strong">dna-sequencer-images</emphasis> project is a small,
self-contained sequencer implementation that
- has only the minimal dependencies. Starting with this project's source and
modifying it to suit your needs may be the easiest way to get started.
- See the subversion repository: <ulink
url="&Subversion;trunk/extensions/dna-sequencer-images/">&Subversion;trunk/sequencers/dna-sequencer-images/</ulink>
- </para>
- </note>
- <para>You can create your Maven project any way you'd like. For examples,
see the <ulink
url="http://maven.apache.org/guides/getting-started/index.html#How_d...
2 documentation</ulink>.
- Once you've done that, just add the dependencies in your project's
<code>pom.xml</code> dependencies section:</para>
- <programlisting role="XML"><![CDATA[
-<dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>0.1</version>
-</dependency>
-<dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>0.1</version>
-</dependency>
-<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
-</dependency>
- ]]></programlisting>
- <para>These are minimum dependencies required for compiling a sequencer. Of
course, you'll have to add
- other dependencies that your sequencer needs.</para>
- <para>As for testing, you probably will want to add more dependencies, such as
those listed here:</para>
- <programlisting role="XML"><![CDATA[
-<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <scope>test</scope>
-</dependency>
-<dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- <version>1.1</version>
- <scope>test</scope>
-</dependency>
-<!-- Logging with Log4J -->
-<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.4.3</version>
- <scope>test</scope>
-</dependency>
-<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- <scope>test</scope>
-</dependency>
- ]]></programlisting>
- <para>Testing JBoss DNA sequencers does not require a JCR repository or the
JBoss DNA services. (For more detail,
- see the <link linkend="testing_custom_sequencers">testing
section</link>.) However, if you want to do
- integration testing with a JCR repository and the JBoss DNA services, you'll
need additional dependencies for these libraries.</para>
- <programlisting role="XML"><![CDATA[
-<dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>0.1</version>
- <scope>test</scope>
-</dependency>
-<!-- Java Content Repository API -->
-<dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <version>1.0.1</version>
- <scope>test</scope>
-</dependency>
-<!-- Apache Jackrabbit (JCR Implementation) -->
-<dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>1.3.3</version>
- <scope>test</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
-</dependency>
-<dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- <version>1.3.3</version>
- <scope>test</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
-</dependency>
- ]]></programlisting>
- <para>At this point, your project should be set up correctly, and you're
ready to move on to
- <link linkend="custom_sequencer_implementation">writing the Java
implementation</link> for your sequencer.</para>
- </sect2>
- <sect2 id="custom_sequencer_implementation">
- <title>Implementing the StreamSequencer interface</title>
- <para>After creating the project and setting up the dependencies, the next
step is to create a Java class that implements
- the &StreamSequencer; interface. This interface is very straightforward and
involves a single method:</para>
- <programlisting>
-public interface &StreamSequencer; {
-
- /**
- * Sequence the data found in the supplied stream, placing the output
- * information into the supplied map.
- *
- * @param stream the stream with the data to be sequenced; never null
- * @param output the output from the sequencing operation; never null
- * @param progressMonitor the progress monitor that should be kept
- * updated with the sequencer's progress and that should be
- * frequently consulted as to whether this operation has been cancelled.
- */
- void sequence( &InputStream; stream, &SequencerOutput; output,
&ProgressMonitor; progressMonitor );
-</programlisting>
- <para>The job of a stream sequencer is to process the data in the supplied
stream, and place into the &SequencerOutput;
- any information that is to go into the JCR repository. JBoss DNA figures out when
your sequencer should be called
- (of course, using the sequencing configuration you'll add in a bit), and then
makes sure the generated information
- is saved in the correct place in the repository.
- </para>
- <para>The &SequencerOutput; class is fairly easy to use. There are
basically two methods you need to call.
- One method sets the property values, while the other sets references to other nodes
in the repository. Use these
- methods to describe the properties of the nodes you want to create, using relative
paths for the nodes and
- valid JCR property names for properties and references. JBoss DNA will ensure that
nodes are created or updated
- whenever they're needed.</para>
- <programlisting>
-public interface &SequencerOutput; {
-
- /**
- * Set the supplied property on the supplied node. The allowable
- * values are any of the following:
- * - primitives (which will be autoboxed)
- * - String instances
- * - String arrays
- * - byte arrays
- * - InputStream instances
- * - Calendar instances
- *
- * @param nodePath the path to the node containing the property;
- * may not be null
- * @param property the name of the property to be set
- * @param values the value(s) for the property; may be empty if
- * any existing property is to be removed
- */
- void setProperty( String nodePath, String property, Object... values );
-
- /**
- * Set the supplied reference on the supplied node.
- *
- * @param nodePath the path to the node containing the property;
- * may not be null
- * @param property the name of the property to be set
- * @param paths the paths to the referenced property, which may be
- * absolute paths or relative to the sequencer output node;
- * may be empty if any existing property is to be removed
- */
- void setReference( String nodePath, String property, String... paths );
-}
-</programlisting>
- <para>JBoss DNA will create nodes of type
<code>nt:unstructured</code> unless you specify the value for the
- <code>jcr:primaryType</code> property. You can also specify the
values for the <code>jcr:mixinTypes</code> property
- if you want to add mixins to any node.</para>
- <para>For a complete example of a sequencer, let's look at the
&ImageMetadataSequencer;
- implementation:</para>
- <programlisting>
-public class &ImageMetadataSequencer; implements &StreamSequencer; {
-
- public static final String METADATA_NODE = "image:metadata";
- public static final String IMAGE_PRIMARY_TYPE = "jcr:primaryType";
- public static final String IMAGE_MIXINS = "jcr:mixinTypes";
- public static final String IMAGE_MIME_TYPE = "jcr:mimeType";
- public static final String IMAGE_ENCODING = "jcr:encoding";
- public static final String IMAGE_FORMAT_NAME = "image:formatName";
- public static final String IMAGE_WIDTH = "image:width";
- public static final String IMAGE_HEIGHT = "image:height";
- public static final String IMAGE_BITS_PER_PIXEL = "image:bitsPerPixel";
- public static final String IMAGE_PROGRESSIVE = "image:progressive";
- public static final String IMAGE_NUMBER_OF_IMAGES =
"image:numberOfImages";
- public static final String IMAGE_PHYSICAL_WIDTH_DPI =
"image:physicalWidthDpi";
- public static final String IMAGE_PHYSICAL_HEIGHT_DPI =
"image:physicalHeightDpi";
- public static final String IMAGE_PHYSICAL_WIDTH_INCHES =
"image:physicalWidthInches";
- public static final String IMAGE_PHYSICAL_HEIGHT_INCHES =
"image:physicalHeightInches";
-
- /**
- * {@inheritDoc}
- */
- public void sequence( &InputStream; stream, &SequencerOutput; output,
- &ProgressMonitor; progressMonitor ) {
- progressMonitor.beginTask(10, &ImageSequencerI18n;.sequencerTaskName);
-
- &ImageMetadata; metadata = new &ImageMetadata;();
- metadata.setInput(stream);
- metadata.setDetermineImageNumber(true);
- metadata.setCollectComments(true);
-
- // Process the image stream and extract the metadata ...
- if (!metadata.check()) {
- metadata = null;
- }
- progressMonitor.worked(5);
- if (progressMonitor.isCancelled()) return;
-
- // Generate the output graph if we found useful metadata ...
- if (metadata != null) {
- // Place the image metadata into the output map ...
- output.setProperty(METADATA_NODE, IMAGE_PRIMARY_TYPE,
"image:metadata");
- // output.psetProperty(METADATA_NODE, IMAGE_MIXINS, "");
- output.setProperty(METADATA_NODE, IMAGE_MIME_TYPE, metadata.getMimeType());
- // output.setProperty(METADATA_NODE, IMAGE_ENCODING, "");
- output.setProperty(METADATA_NODE, IMAGE_FORMAT_NAME,
metadata.getFormatName());
- output.setProperty(METADATA_NODE, IMAGE_WIDTH, metadata.getWidth());
- output.setProperty(METADATA_NODE, IMAGE_HEIGHT, metadata.getHeight());
- output.setProperty(METADATA_NODE, IMAGE_BITS_PER_PIXEL,
metadata.getBitsPerPixel());
- output.setProperty(METADATA_NODE, IMAGE_PROGRESSIVE,
metadata.isProgressive());
- output.setProperty(METADATA_NODE, IMAGE_NUMBER_OF_IMAGES,
metadata.getNumberOfImages());
- output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_WIDTH_DPI,
metadata.getPhysicalWidthDpi());
- output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_HEIGHT_DPI,
metadata.getPhysicalHeightDpi());
- output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_WIDTH_INCHES,
metadata.getPhysicalWidthInch());
- output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_HEIGHT_INCHES,
metadata.getPhysicalHeightInch());
- }
-
- progressMonitor.done();
- }
-}
-</programlisting>
- <para>
- Notice how the image metadata is extracted and the output graph is generated. A
single node is created with the name <code>image:metadata</code>
- and with the <code>image:metadata</code> node type. No mixins are
defined for the node, but several properties are set on the node
- using the values obtained from the image metadata. After this method returns, the
constructed graph will be saved to the repository
- in all of the places defined by its configuration. (This is why only relative paths
are used in the sequencer.)
- </para>
- <para>Also note how the progress monitor is used. Reporting progress through
the supplied &ProgressMonitor;> is very easy, and it ensures that JBoss DNA
- can accurately monitor and report the status of sequencing activities to the users.
At the beginning of the operation, call
- <code>beginTask(...)</code> with a meaningful message describing
- the operation and a total for the amount of work that will be done by this
sequencer. Then perform the sequencing work,
- periodically reporting work by specifying the incremental amount of work with the
<code>worked(double)</code> method, or
- by creating a subtask with the <code>createSubtask(double)</code>
method and reporting work against that subtask
- monitor.
- </para>
- <para>Your method should periodically use the &ProgressMonitor;'s
<code>isCancelled()</code> method to check whether the operation has been
- cancelled.. If this method returns true, the implementation should abort all work
as
- soon as possible and close any resources that were acquired or opened.
- </para>
- <para>
- Finally, when your sequencing operation is completed, it should call
<code>done()</code> on the progress monitor.
- </para>
- </sect2>
- <sect2 id="testing_custom_sequencers">
- <title>Testing custom sequencers</title>
- <para>The sequencing framework was designed to make testing sequencers much
easier. In particular, the
- &StreamSequencer; interface does not make use of the JCR API. So instead of
requiring a fully-configured
- JCR repository and JBoss DNA system, unit tests for a sequencer can focus on testing
that the content is
- processed correctly and the desired output graph is generated.</para>
- <note>
- <para>For a complete example of a sequencer unit test, see the
<code>ImageMetadataSequencerTest</code> unit test
- in the <code>org.jboss.dna.sequencer.images</code> package of the
<code>dna-sequencers-image</code> project.
- </para>
- </note>
- <para>The following code fragment shows one way of testing a sequencer, using
JUnit 4.4 assertions and
- some of the classes made available by JBoss DNA. Of course,
- this example code does not do any error handling and does not make all the
assertions a real test would.</para>
- <programlisting>
-&StreamSequencer; sequencer = new &ImageMetadataSequencer;();
-MockSequencerOutput output = new MockSequencerOutput();
-&ProgressMonitor; progress = new &SimpleProgressMonitor;("Test
activity");
-&InputStream; stream = null;
-try {
- stream =
this.getClass().getClassLoader().getResource("caution.gif").openStream();
- sequencer.sequence(stream,output,progress); // writes to 'output'
- assertThat(output.getPropertyValues("image:metadata",
"jcr:primaryType"),
- is(new Object[] {"image:metadata"}));
- assertThat(output.getPropertyValues("image:metadata",
"jcr:mimeType"),
- is(new Object[] {"image/gif"}));
- // ... make more assertions here
- assertThat(output.hasReferences(), is(false));
-} finally {
- stream.close();
-}
-</programlisting>
- <para>It's also useful to test that a sequencer produces no output for
something it should not understand:</para>
- <programlisting>
-&Sequencer; sequencer = new &ImageMetadataSequencer;();
-MockSequencerOutput output = new MockSequencerOutput();
-&ProgressMonitor; progress = new &SimpleProgressMonitor;("Test
activity");
-&InputStream; stream = null;
-try {
- stream =
this.getClass().getClassLoader().getResource("caution.pict").openStream();
- sequencer.sequence(stream,output,progress); // writes to 'output'
- assertThat(output.hasProperties(), is(false));
- assertThat(output.hasReferences(), is(false));
-} finally {
- stream.close();
-}
-</programlisting>
- <para>These are just two simple tests that show ways of testing a sequencer.
Some tests may get quite involved,
- especially if a lot of output data is produced.
- </para>
- <para>It may also be useful to create some integration tests
- that <link linkend="using_dna">configure JBoss DNA</link> to
use a custom sequencer, and to then upload
- content using the JCR API, verifying that the custom sequencer did run. However,
remember that JBoss DNA
- runs sequencers asynchronously in the background, and you must synchronize your
tests to ensure that the
- sequencers have a chance to run before checking the results. (One way of doing this
(although, granted, not always reliable) is to wait for a second
- after uploading your content, shutdown the &SequencingService; and await its
termination,
- and then check that the sequencer output has been saved to the JCR repository. For
an example of this technique,
- see the <code>SequencingClientTest</code> unit test in the example
application.)
- </para>
- </sect2>
- <sect2 id="deploying_custom_sequencers">
- <title>Deploying custom sequencers</title>
- <para>The first step of deploying a sequencer consists of adding/changing the
sequencer configuration (e.g., &SequencerConfig;)
- in the &SequencingService;. This was covered in the <link
linkend="sequencing_service">previous chapter</link>.
- </para>
- <para>
- The second step is to make the sequencer implementation available to JBoss DNA. At
this time, the JAR containing
- your new sequencer, as well as any JARs that your sequencer depends on, should be
placed on your application classpath.</para>
- <note>
- <para>A future goal of JBoss DNA is to allow sequencers, connectors, and
other extensions to be easily deployed into
- a runtime repository. This process will not only be much simpler, but it will
also provide JBoss DNA
- with the information necessary to update configurations and create the
appropriate class loaders for each extension.
- Having separate class loaders for each extension helps prevent the pollution of
the common classpath,
- facilitates an isolated runtime environment to eliminate any dependency
conflicts, and may potentially
- enable hot redeployment of newer extension versions.
- </para>
- </note>
- </sect2>
- </sect1>
-</chapter>
Copied: tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml (from
rev 553, trunk/docs/reference/src/main/docbook/en-US/content/sequencing.xml)
===================================================================
--- tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml
(rev 0)
+++ tags/dna-0.2/docs/reference/src/main/docbook/en-US/content/sequencing.xml 2008-09-26
21:12:43 UTC (rev 555)
@@ -0,0 +1,821 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ JBoss, Home of Professional Open Source.
+ ~
+ ~ Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ ~ indicated by the @author tags or express copyright attribution
+ ~ statements applied by the authors. All third-party contributions are
+ ~ distributed under license by Red Hat Middleware LLC.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, as published by the Free Software Foundation.
+ ~
+ ~ This program is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ ~ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ ~ for more details.
+ ~
+ ~ You should have received a copy of the GNU Lesser General Public License
+ ~ along with this distribution; if not, write to:
+ ~ Free Software Foundation, Inc.
+ ~ 51 Franklin Street, Fifth Floor
+ ~ Boston, MA 02110-1301 USA
+ -->
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % CustomDTD SYSTEM "../custom.dtd">
+%CustomDTD;
+]>
+<chapter id="sequencing">
+ <title>Sequencing content</title>
+ <para>As we've mentioned before, JBoss DNA is able to work with existing JCR
repositories. Your client applications
+ make changes to the information in those repositories, and JBoss DNA automatically
uses its sequencers to extract
+ additional information from the uploaded files.</para>
+ <para>
+ This chapter discusses the sequencing features of JBoss DNA and the components that are
involved.
+ </para>
+ <sect1 id="sequencing-service">
+ <title>Sequencing Service</title>
+ <para>The JBoss DNA <emphasis>sequencing service</emphasis> is the
component that manages the <emphasis>sequencers</emphasis>,
+ reacting to changes in JCR repositories and then running the appropriate sequencers.
+ This involves processing the changes on a node, determining which (if any)
sequencers should be run on that node,
+ and for each sequencer constructing the execution environment, calling the
sequencer, and saving the information
+ generated by the sequencer.</para>
+ <note>
+ <para>Configuring JBoss DNA services is a bit more manual than is ideal. As
you'll see, JBoss DNA uses dependency
+ injection to allow a great deal of flexibility in how it can be configured and
customized. But this flexibility
+ makes it more difficult for you to use. We understand this, and will soon provide
a much easier way to set up
+ and manage JBoss DNA. Current plans are to use the <ulink
url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>
+ along with a configuration repository.</para>
+ </note>
+ <para>To set up the sequencing service, an instance is created, and dependent
components are injected into
+ the object. This includes among other things:
+ <itemizedlist>
+ <listitem>
+ <para>An <emphasis>execution context</emphasis> that defines the
context in which the service runs, including
+ a factory for JCR sessions given names of the repository and workspace. This
factory must be configured,
+ and is how JBoss DNA knows about your JCR repositories and how to connect to
them. More on this a bit later.</para>
+ </listitem>
+ <listitem>
+ <para>An optional <emphasis>factory for class loaders</emphasis>
used to load sequencers. If no factory is supplied,
+ the service uses the current thread's context class loader (or if that is
null, the class loader that loaded the
+ sequencing service class).</para>
+ </listitem>
+ <listitem>
+ <para>An &ExecutorService; used to execute the sequencing activites. If
none
+ is supplied, a new single-threaded executor is created by calling
<code>Executors.newSingleThreadExecutor()</code>.
+ (This can easily be changed by subclassing and overriding the
<code>SequencerService.createDefaultExecutorService()</code>
method.)</para>
+ </listitem>
+ <listitem>
+ <para>Filters for sequencers and events. By default, all sequencers are
considered for "node added", "property added"
+ and "property changed" events.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>As mentioned above, the &ExecutionContext; provides access to a
&SessionFactory; that is used
+ by JBoss DNA to establish sessions to your JCR repositories. Two implementations
are available:
+ <itemizedlist>
+ <listitem>
+ <para>The &JndiSessionFactory;> looks up JCR &Repository; instances
in JNDI using
+ names that are supplied when creating sessions. This implementation also
has methods to set the
+ JCR &Credentials; for a given workspace name.</para>
+ </listitem>
+ <listitem>
+ <para>The &SimpleSessionFactory; has methods to register the JCR
&Repository; instances
+ with names, as well as methods to set the JCR &Credentials; for a given
workspace name.</para>
+ </listitem>
+ </itemizedlist>
+ You can use the &BasicJcrExecutionContext; implementation of
&JcrExecutionContext; and supply
+ a &SessionFactory; instance, or you can provide your own
implementation.</para>
+ <para>Here's an example of how to instantiate and configure the
&SequencingService;:</para>
+ <programlisting>
+&SimpleSessionFactory; sessionFactory = new &SimpleSessionFactory;();
+sessionFactory.registerRepository("Main Repository", this.repository);
+&Credentials; credentials = new &SimpleCredentials;("jsmith",
"secret".toCharArray());
+sessionFactory.registerCredentials("Main Repository/Workspace1", credentials);
+ExecutionContext executionContext = new &BasicJcrExecutionContext;(sessionFactory);
+
+// Create the sequencing service, passing in the execution context ...
+&SequencingService; sequencingService = new &SequencingService;();
+sequencingService.setExecutionContext(executionContext);
+</programlisting>
+ <para>After the sequencing service is created and configured, it must be started.
The &SequencingService;
+ has an <emphasis>administration object</emphasis> (that is an instance
of &ServiceAdministrator;)
+ with <code>start()</code>, <code>pause()</code>, and
<code>shutdown()</code> methods. The latter method will
+ close the queue for sequencing, but will allow sequencing operations already
running to complete normally.
+ To wait until all sequencing operations have completed, simply call the
<code>awaitTermination</code> method
+ and pass it the maximum amount of time you want to wait.</para>
+ <programlisting>
+sequencingService.getAdministrator().start();
+</programlisting>
+ <para>The JBoss DNA services are utilizing resources and threads that must be
released before your application is ready to shut down.
+ The safe way to do this is to simply obtain the &ServiceAdministrator; for each
service (via the <code>getServiceAdministrator()</code> method)
+ and call <code>shutdown()</code>. As previously mentioned, the shutdown
method will simply prevent new work from being processed
+ and will not wait for existing work to be completed. If you want to wait until the
service completes all its work, you must wait
+ until the service terminates. Here's an example that shows how this is
done:</para>
+ <programlisting>
+// Shut down the service and wait until it's all shut down ...
+sequencingService.getAdministrator().shutdown();
+sequencingService.getAdministrator().awaitTermination(5, TimeUnit.SECONDS);
+
+// Shut down the observation service ...
+observationService.getAdministrator().shutdown();
+observationService.getAdministrator().awaitTermination(5, TimeUnit.SECONDS);
+</programlisting>
+ </sect1>
+ <sect1 id="sequencer-configuration">
+ <title>Sequencer Configurations</title>
+ <para>The sequencing service must also be configured with the sequencers that it
will use. This is done using the
+ <code>addSequencer(SequencerConfig)</code> method and passing a
&SequencerConfig; instance that
+ you create. Here's the code that defines 3 sequencer configurations: 1 that
places image metadata into
+ "<code><![CDATA[/images/<filename>]]></code>",
another that places MP3 metadata into
"<code><![CDATA[/mp3s/<filename>]]></code>",
+ and a third that places a structure that represents the classes, methods, and
attributes found within Java source into
+
"<code><![CDATA[/java/<filename>]]></code>".</para>
+ <programlisting>
+String name = "Image Sequencer";
+String desc = "Sequences image files to extract the characteristics of the
image";
+String classname = "org.jboss.dna.sequencer.images.ImageMetadataSequencer";
+String[] classpath = null; // Use the current classpath
+String[] pathExpressions =
{"//(*.(jpg|jpeg|gif|bmp|pcx|png)[*])/jcr:content[@jcr:data] =>
/images/$1"};
+&SequencerConfig; imageSequencerConfig = new &SequencerConfig;(name, desc,
classname,
+ classpath, pathExpressions);
+sequencingService.addSequencer(imageSequencerConfig);
+
+name = "MP3 Sequencer";
+desc = "Sequences MP3 files to extract the ID3 tags from the audio file";
+classname = "org.jboss.dna.sequencer.mp3.Mp3MetadataSequencer";
+pathExpressions = {"//(*.mp3[*])/jcr:content[@jcr:data] => /mp3s/$1"};
+&SequencerConfig; mp3SequencerConfig = new &SequencerConfig;(name, desc,
classname,
+ classpath, pathExpressions);
+sequencingService.addSequencer(mp3SequencerConfig);
+
+name = "Java Sequencer";
+desc = "Sequences java files to extract the characteristics of the Java
source";
+classname = "org.jboss.dna.sequencer.java.JavaMetadataSequencer";
+pathExpressions = {"//(*.java[*])/jcr:content[@jcr:data] => /java/$1"};
+&SequencerConfig; javaSequencerConfig = new &SequencerConfig;(name, desc,
classname,
+ classpath, pathExpressions);
+this.sequencingService.addSequencer(javaSequencerConfig);
+</programlisting>
+ <para>Each configuration defines several things, including the name,
description, and sequencer implementation class.
+ The configuration also defines the classpath information, which can be passed to the
&ClassLoaderFactory; to get
+ a Java &ClassLoader; with which the sequencer class can be loaded. (If no
classpath information is provided, as is done
+ in the code above, the application class loader is used.) The configuration also
specifies the path expressions that
+ identify the nodes that should be sequenced with the sequencer and where to store
the output generated by the sequencer.
+ Path expressions are pretty straightforward but are quite powerful, so before we go
any further with the example,
+ let's dive into path expressions in more detail.</para>
+ <sect2 id="path_expressions">
+ <title>Path Expressions</title>
+ <para>Path expressions consist of two parts: a selection criteria (or an input
path) and an output path:</para>
+ <programlisting><![CDATA[ inputPath => outputPath
]]></programlisting>
+ <para>The <emphasis>inputPath</emphasis> part defines an expression
for the path of a node that is to be sequenced.
+ Input paths consist of '<code>/</code>' separated segments,
where each segment represents a pattern for a single node's
+ name (including the same-name-sibling indexes) and
'<code>@</code>' signifies a property name.</para>
+ <para>Let's first look at some simple examples:</para>
+ <table frame='all'>
+ <title>Simple Input Path Examples</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Input Path</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry>/a/b</entry><entry>Match node
"<code>b</code>" that is a child of the top level node
"<code>a</code>". Neither node
+ may have any same-name-sibilings.</entry></row>
+ <row><entry>/a/*</entry><entry>Match any child node of the
top level node "<code>a</code>".</entry></row>
+ <row><entry>/a/*.txt</entry><entry>Match any child node of
the top level node "<code>a</code>" that also has a name ending in
"<code>.txt</code>".</entry></row>
+ <row><entry>/a/*.txt</entry><entry>Match any child node of
the top level node "<code>a</code>" that also has a name ending in
"<code>.txt</code>".</entry></row>
+ <row><entry>/a/b@c</entry><entry>Match the property
"<code>c</code>" of node
"<code>/a/b</code>".</entry></row>
+ <row><entry>/a/b[2]</entry><entry>The second child named
"<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
+ <row><entry>/a/b[2,3,4]</entry><entry>The second, third or
fourth child named "<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
+ <row><entry>/a/b[*]</entry><entry>Any (and every) child
named "<code>b</code>" below the top level node
"<code>a</code>".</entry></row>
+ <row><entry>//a/b</entry><entry>Any node named
"<code>b</code>" that exists below a node named
"<code>a</code>", regardless
+ of where node "<code>a</code>" occurs. Again, neither
node may have any same-name-sibilings.</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>With these simple examples, you can probably discern the most important
rules. First, the '<code>*</code>' is a wildcard character
+ that matches any character or sequence of characters in a node's name (or index
if appearing in between square brackets), and
+ can be used in conjunction with other characters (e.g.,
"<code>*.txt</code>").</para>
+ <para>Second, square brackets (i.e., '<code>[</code>' and
'<code>]</code>') are used to match a node's same-name-sibiling
index.
+ You can put a single non-negative number or a comma-separated list of non-negative
numbers. Use '0' to match a node that has no
+ same-name-sibilings, or any positive number to match the specific
same-name-sibling.</para>
+ <para>Third, combining two delimiters (e.g.,
"<code>//</code>") matches any sequence of nodes, regardless of what
their names are
+ or how many nodes. Often used with other patterns to identify nodes at any level
matching other patterns.
+ Three or more sequential slash characters are treated as two.</para>
+ <para>Many input paths can be created using just these simple rules. However,
input paths can be more complicated. Here are some
+ more examples:</para>
+ <table frame='all'>
+ <title>More Complex Input Path Examples</title>
+ <tgroup cols='2' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Input Path</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry>/a/(b|c|d)</entry><entry>Match children of the
top level node "<code>a</code>" that are named
"<code>a</code>",
+ "<code>b</code>" or
"<code>c</code>". None of the nodes may have same-name-sibling
indexes.</entry></row>
+ <row><entry>/a/b[c/d]</entry><entry>Match node
"<code>b</code>" child of the top level node
"<code>a</code>", when node
+ "<code>b</code>" has a child named
"<code>c</code>", and "<code>c</code>" has a
child named "<code>d</code>".
+ Node "<code>b</code>" is the selected node, while nodes
"<code>b</code>" and "<code>b</code>" are used
as criteria but are not
+ selected.</entry></row>
+ <row><entry>/a(/(b|c|d|)/e)[f/g/@something]</entry><entry>Match
node "<code>/a/b/e</code>",
"<code>/a/c/e</code>", "<code>/a/d/e</code>",
+ or "<code>/a/e</code>" when they also have a child
"<code>f</code>" that itself has a child
"<code>g</code>" with property
+ "<code>something</code>". None of the nodes may have
same-name-sibling indexes.</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>These examples show a few more advanced rules. Parentheses (i.e.,
'<code>(</code>' and '<code>)</code>') can be
used
+ to define a set of options for names, as shown in the first and third rules.
Whatever part of the selected node's path
+ appears between the parentheses is captured for use within the output path. Thus,
the first input path in the previous table
+ would match node "<code>/a/b</code>", and "b" would
be captured and could be used within the output path using
"<code>$1</code>",
+ where the number used in the output path identifies the parentheses.</para>
+ <para>Square brackets can also be used to specify criteria on a node's
properties or children. Whatever appears in between the square
+ brackets does not appear in the selected node.</para>
+ <para>Let's go back to the previous code fragment and look at the first
path expression:</para>
+ <programlisting><![CDATA[
//(*.(jpg|jpeg|gif|bmp|pcx|png)[*])/jcr:content[@jcr:data] => /images/$1
]]></programlisting>
+ <para>This matches a node named
"<code>jcr:content</code>" with property
"<code>jcr:data</code>" but no siblings with the same name,
+ and that is a child of a node whose name ends with
"<code>.jpg</code>", "<code>.jpeg</code>",
"<code>.gif</code>", "<code>.bmp</code>",
"<code>.pcx</code>",
+ or "<code>.png</code>" that may have any same-name-sibling
index. These nodes can appear at any level in the repository.
+ Note how the input path capture the filename (the segment containing the file
extension), including any same-name-sibling index.
+ This filename is then used in the output path, which is where the sequenced content
is placed.</para>
+ </sect2>
+ </sect1>
+ <sect1 id="sequencers">
+ <title>JBoss DNA Sequencers</title>
+ <para>
+ JBoss DNA includes a number of sequencers "out of the box". These
sequencers can be used within your application to sequence
+ a variety of common file formats. To use them, the only thing you have to do is
define the appropriate sequencer configurations
+ and include the appropriate JAR files.
+ </para>
+ <sect2 id="dna-sequencer-images">
+ <title>Image sequencer</title>
+ <para>
+ A sequencer that extracts metadata from JPEG, GIF, BMP, PCX, PNG, IFF, RAS, PBM, PGM,
PPM and PSD image files.
+ This sequencer extracts the file format, image resolution, number of bits per pixel
and optionally number of images, comments
+ and physical resolution, and then writes this information into the repository using
the following structure:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="strong">image:metadata</emphasis> node of
type <code>image:metadata</code>
+ </para>
+ </listitem>
+ <listitem>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="strong">jcr:mimeType</emphasis>
- optional string property for the mime type of the image</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="strong">jcr:encoding</emphasis>
- optional string property for the encoding of the image</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:formatName</emphasis> - string property for the
name of the format</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="strong">image:width</emphasis> -
optional integer property for the image's width in pixels</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="strong">image:height</emphasis>
- optional integer property for the image's height in pixles</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:bitsPerPixel</emphasis> - optional integer property
for the number of bits per pixel</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:progressive</emphasis> - optional boolean property
specifying whether the image is stored in a progressive
+ (i.e., interlaced) form</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:numberOfImages</emphasis> - optional integer
property for the number of images stored in the file; defaults
+ to 1</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:physicalWidthDpi</emphasis> - optional integer
property for the physical width of the image in dots per inch</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:physicalHeightDpi</emphasis> - optional integer
property for the physical height of the image in dots per
+ inch</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:physicalWidthInches</emphasis> - optional double
property for the physical width of the image in inches</para>
+ </listitem>
+ <listitem>
+ <para><emphasis
role="strong">image:physicalHeightInches</emphasis> - optional double
property for the physical height of the image in inches</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ <para>
+ This structure could be extended in the future to add EXIF and IPTC metadata as child
nodes. For example, EXIF metadata is
+ structured as tags in directories, where the directories form something like
namespaces, and which are used by different camera
+ vendors to store custom metadata. This structure could be mapped with each directory
(e.g. "EXIF" or "Nikon Makernote" or
+ "IPTC") as the name of a child node, with the EXIF tags values stored as
either properties or child nodes.
+ </para>
+ <para>
+ To use this sequencer, simply include the
<code>dna-sequencer-images</code> JAR
+ in your application and configure the Sequencing Service to use this sequencer using
something similar to:
+ </para>
+ <programlisting>
+String name = "Image Sequencer";
+String desc = "Sequences image files to extract the characteristics of the
image";
+String classname = "org.jboss.dna.sequencer.images.ImageMetadataSequencer";
+String[] classpath = null; // Use the current classpath
+String[] pathExpressions =
{"//(*.(jpg|jpeg|gif|bmp|pcx|png|iff|ras|pbm|pgm|ppm|psd)[*])/jcr:content[@jcr:data]
=> /images/$1"};
+&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
+ classpath, pathExpressions);
+sequencingService.addSequencer(sequencerConfig);
+</programlisting>
+ </sect2>
+ <sect2 id="dna-sequencer-msoffice">
+ <title>Microsoft Office document sequencer</title>
+ <para>
+ This sequencer is included in JBoss DNA and processes Microsoft Office documents,
including Excel spreadsheets
+ and PowerPoint presentations. With presentations, the sequencer extracts the slides,
titles, text and slide thumbnails.
+ With spreadsheets, the sequencer extracts the names of the sheets. And, the
sequencer extracts for all the files the
+ general file information, including the name of the author, title, keywords, subject,
comments, and various dates.
+ </para>
+ <note>
+ <para>
+ Currently, Word documents are not supported. For more information and the latest
status, see
+ <ulink url="&JIRA;-153">DNA-153</ulink>.
+ </para>
+ </note>
+ <para>
+ To use this sequencer, simply include the
<code>dna-sequencer-msoffice</code> JAR and all of the
+ <ulink
url="http://poi.apache.org/">POI</ulink> JARs
+ in your application and configure the Sequencing Service to use this sequencer using
something similar to:
+ </para>
+ <programlisting>
+String name = "Microsoft Office Document Sequencer";
+String desc = "Sequences MS Office documents, including spreadsheets and
presentations";
+String classname =
"org.jboss.dna.sequencer.msoffice.MSOfficeMetadataSequencer";
+String[] classpath = null; // Use the current classpath
+String[] pathExpressions = {"//(*.(doc|docx|ppt|pps|xls)[*])/jcr:content[@jcr:data]
=> /msoffice/$1"};
+&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
+ classpath, pathExpressions);
+sequencingService.addSequencer(sequencerConfig);
+</programlisting>
+ </sect2>
+ <sect2 id="dna-sequencer-zip">
+ <title>ZIP archive sequencer</title>
+ <para>
+ The ZIP file sequencer is included in JBoss DNA and extracts the files and folders
contained in the ZIP archive file,
+ extracting the files and folders into the repository using JCR's
<code>nt:file</code> and <code>nt:folder</code> node types.
+ </para>
+ <para>
+ To use this sequencer, simply include the <code>dna-sequencer-zip</code>
JAR
+ in your application and configure the Sequencing Service to use this sequencer using
something similar to:
+ </para>
+ <programlisting>
+String name = "ZIP Sequencer";
+String desc = "Sequences ZIP archives to extract the files and folders";
+String classname = "org.jboss.dna.sequencer.zip.ZipSequencer";
+String[] pathExpressions = {"//(*.zip[*])/jcr:content[@jcr:data] =>
/zips/$1"};
+&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
+ classpath, pathExpressions);
+this.sequencingService.addSequencer(sequencerConfig);
+</programlisting>
+ </sect2>
+ <sect2 id="dna-sequencer-java">
+ <title>Java source sequencer</title>
+ <para>
+ One of the sequencers that included in JBoss DNA is the <emphasis
role="strong">dna-sequencer-java</emphasis> subproject.
+ This sequencer parses Java source code added to the repository and extracts the basic
structure of the classes and enumerations
+ defined in the code.
+ This structure includes: the package structures, class declarations, class and member
attribute declarations,
+ class and member method declarations with signature (but not implementation logic),
enumerations with each enumeration literal value,
+ annotations, and JavaDoc information for all of the above.
+ After extracting this information from the source code, the sequencer then writes
this structure into the repository,
+ where it can be further processed, analyzed, searched, navigated, or referenced.
+ </para>
+ <para>
+ To use this sequencer, simply include the <code>dna-sequencer-java</code>
JAR (plus all of the JARs that it is dependent upon)
+ in your application and configure the Sequencing Service to use this sequencer using
something similar to:
+ </para>
+ <programlisting>
+String name = "Java Sequencer";
+String desc = "Sequences java files to extract the characteristics of the Java
source";
+String classname = "org.jboss.dna.sequencer.java.JavaMetadataSequencer";
+String[] classpath = null; // Use the current classpath
+String[] pathExpressions = {"//(*.java[*])/jcr:content[@jcr:data] =>
/java/$1"};
+&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
+ classpath, pathExpressions);
+this.sequencingService.addSequencer(sequencerConfig);
+</programlisting>
+ </sect2>
+ <sect2 id="dna-sequencer-mp3">
+ <title>MP3 audio file sequencer</title>
+ <para>
+ Another sequencer that is included in JBoss DNA is the <emphasis
role="strong">dna-sequencer-mp3</emphasis> sequencer project.
+ This sequencer processes MP3 audio files added to a repository and extracts the
<ulink
url="http://www.id3.org/">ID3</ulink>
+ metadata for the file, including the track's title, author, album name, year,
and comment.
+ After extracting this information from the audio files, the sequencer then writes
this structure into the repository,
+ where it can be further processed, analyzed, searched, navigated, or referenced.
+ </para>
+ <para>
+ To use this sequencer, simply include the <code>dna-sequencer-mp3</code>
JAR and the <ulink
url="http://www.jthink.net/jaudiotagger/">JAudioTagger</u...
+ library in your application and configure the Sequencing Service to use this
sequencer using something similar to:
+ </para>
+ <programlisting>
+String name = "MP3 Sequencer";
+String desc = "Sequences MP3 files to extract the ID3 tags of the audio file";
+String classname = "org.jboss.dna.sequencer.mp3.Mp3MetadataSequencer";
+String[] pathExpressions = {"//(*.mp3[*])/jcr:content[@jcr:data] =>
/mp3s/$1"};
+&SequencerConfig; sequencerConfig = new &SequencerConfig;(name, desc, classname,
+ classpath, pathExpressions);
+this.sequencingService.addSequencer(sequencerConfig);
+</programlisting>
+ </sect2>
+ <sect2 id="dna-sequencer-cnd">
+ <title>JCR Compact Node Definition (CND) file sequencer</title>
+ <para>
+ This sequencer is incomplete and is not currently usable. The purpose is to
sequence JCR Compact Node Definition (CND) files
+ to extract the node definitions with their property definitions, and inserting these
into the repository using JCR standard notation.
+ </para>
+ </sect2>
+ </sect1>
+ <sect1 id="custom-sequencers">
+ <title>Creating custom sequencers</title>
+ <para>The current release of JBoss DNA comes with six sequencers. However,
it's very easy to create your own
+ sequencers and to then configure JBoss DNA to use them in your own application.
+ </para>
+ <para>
+ Creating a custom sequencer involves the following steps:
+ <itemizedlist>
+ <listitem>
+ <para>Create a Maven 2 project for your sequencer;</para>
+ </listitem>
+ <listitem>
+ <para>Implement the &StreamSequencer; interface with your own
implementation, and create unit tests to verify
+ the functionality and expected behavior;</para>
+ </listitem>
+ <listitem>
+ <para>Add the sequencer configuration to the JBoss DNA
&SequencingService; in your application
+ as described in the <link linkend="using_dna">previous
chapter</link>; and</para>
+ </listitem>
+ <listitem>
+ <para>Deploy the JAR file with your implementation (as well as any
dependencies), and make them available to JBoss DNA
+ in your application.</para>
+ </listitem>
+ </itemizedlist>
+ It's that simple.
+ </para>
+ <sect2 id="custom_sequencer_project">
+ <title>Creating the Maven 2 project</title>
+ <para>The first step is to create the Maven 2 project that you can use to
compile your code and build the JARs.
+ Maven 2 automates a lot of the work, and since you're already <link
linkend="maven">set up to use Maven</link>,
+ using Maven for your project will save you a lot of time and effort. Of course, you
don't have to use Maven 2, but then you'll
+ have to get the required libraries and manage the compiling and building process
yourself.</para>
+ <note>
+ <para>JBoss DNA may provide in the future a Maven archetype for creating
sequencer projects. If you'd find this useful
+ and would like to help create it, please <link
linkend="preface">join the community</link>.
+ </para>
+ <para>In lieu of a Maven archetype, you may find it easier to start with a
small existing sequencer project.
+ The <emphasis role="strong">dna-sequencer-images</emphasis>
project is a small, self-contained sequencer implementation that
+ has only the minimal dependencies.
+ See the subversion repository: <ulink
url="&Subversion;trunk/extensions/dna-sequencer-images/">&Subversion;trunk/sequencers/dna-sequencer-images/</ulink>
+ </para>
+ </note>
+ <para>You can create your Maven project any way you'd like. For examples,
see the <ulink
url="http://maven.apache.org/guides/getting-started/index.html#How_d...
2 documentation</ulink>.
+ Once you've done that, just add the dependencies in your project's
<code>pom.xml</code> dependencies section:</para>
+ <programlisting role="XML"><![CDATA[
+<dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>0.1</version>
+</dependency>
+<dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>0.1</version>
+</dependency>
+<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+</dependency>
+ ]]></programlisting>
+ <para>These are minimum dependencies required for compiling a sequencer. Of
course, you'll have to add
+ other dependencies that your sequencer needs.</para>
+ <para>As for testing, you probably will want to add more dependencies, such as
those listed here:</para>
+ <programlisting role="XML"><![CDATA[
+<dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+</dependency>
+<dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>1.1</version>
+ <scope>test</scope>
+</dependency>
+<!-- Logging with Log4J -->
+<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.3</version>
+ <scope>test</scope>
+</dependency>
+<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ <scope>test</scope>
+</dependency>
+ ]]></programlisting>
+ <para>Testing JBoss DNA sequencers does not require a JCR repository or the
JBoss DNA services. (For more detail,
+ see the <link linkend="testing_custom_sequencers">testing
section</link>.) However, if you want to do
+ integration testing with a JCR repository and the JBoss DNA services, you'll
need additional dependencies for these libraries.</para>
+ <programlisting role="XML"><![CDATA[
+<dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>0.1</version>
+ <scope>test</scope>
+</dependency>
+<!-- Java Content Repository API -->
+<dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>1.0.1</version>
+ <scope>test</scope>
+</dependency>
+<!-- Apache Jackrabbit (JCR Implementation) -->
+<dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <version>1.3.3</version>
+ <scope>test</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+</dependency>
+<dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ <version>1.3.3</version>
+ <scope>test</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+</dependency>
+ ]]></programlisting>
+ <para>At this point, your project should be set up correctly, and you're
ready to move on to
+ <link linkend="custom_sequencer_implementation">writing the Java
implementation</link> for your sequencer.</para>
+ </sect2>
+ <sect2 id="custom_sequencer_implementation">
+ <title>Implementing the StreamSequencer interface</title>
+ <para>After creating the project and setting up the dependencies, the next
step is to create a Java class that implements
+ the &StreamSequencer; interface. This interface is very straightforward and
involves a single method:</para>
+ <programlisting>
+public interface &StreamSequencer; {
+
+ /**
+ * Sequence the data found in the supplied stream, placing the output
+ * information into the supplied map.
+ *
+ * @param stream the stream with the data to be sequenced; never null
+ * @param output the output from the sequencing operation; never null
+ * @param progressMonitor the progress monitor that should be kept
+ * updated with the sequencer's progress and that should be
+ * frequently consulted as to whether this operation has been cancelled.
+ */
+ void sequence( &InputStream; stream, &SequencerOutput; output,
&ProgressMonitor; progressMonitor );
+</programlisting>
+ <para>The job of a stream sequencer is to process the data in the supplied
stream, and place into the &SequencerOutput;
+ any information that is to go into the JCR repository. JBoss DNA figures out when
your sequencer should be called
+ (of course, using the sequencing configuration you'll add in a bit), and then
makes sure the generated information
+ is saved in the correct place in the repository.
+ </para>
+ <para>The &SequencerOutput; class is fairly easy to use. There are
basically two methods you need to call.
+ One method sets the property values, while the other sets references to other nodes
in the repository. Use these
+ methods to describe the properties of the nodes you want to create, using relative
paths for the nodes and
+ valid JCR property names for properties and references. JBoss DNA will ensure that
nodes are created or updated
+ whenever they're needed.</para>
+ <programlisting>
+public interface &SequencerOutput; {
+
+ /**
+ * Set the supplied property on the supplied node. The allowable
+ * values are any of the following:
+ * - primitives (which will be autoboxed)
+ * - String instances
+ * - String arrays
+ * - byte arrays
+ * - InputStream instances
+ * - Calendar instances
+ *
+ * @param nodePath the path to the node containing the property;
+ * may not be null
+ * @param property the name of the property to be set
+ * @param values the value(s) for the property; may be empty if
+ * any existing property is to be removed
+ */
+ void setProperty( String nodePath, String property, Object... values );
+
+ /**
+ * Set the supplied reference on the supplied node.
+ *
+ * @param nodePath the path to the node containing the property;
+ * may not be null
+ * @param property the name of the property to be set
+ * @param paths the paths to the referenced property, which may be
+ * absolute paths or relative to the sequencer output node;
+ * may be empty if any existing property is to be removed
+ */
+ void setReference( String nodePath, String property, String... paths );
+}
+</programlisting>
+ <para>JBoss DNA will create nodes of type
<code>nt:unstructured</code> unless you specify the value for the
+ <code>jcr:primaryType</code> property. You can also specify the
values for the <code>jcr:mixinTypes</code> property
+ if you want to add mixins to any node.</para>
+ <para>For a complete example of a sequencer, let's look at the
&ImageMetadataSequencer;
+ implementation:</para>
+ <programlisting>
+public class &ImageMetadataSequencer; implements &StreamSequencer; {
+
+ public static final String METADATA_NODE = "image:metadata";
+ public static final String IMAGE_PRIMARY_TYPE = "jcr:primaryType";
+ public static final String IMAGE_MIXINS = "jcr:mixinTypes";
+ public static final String IMAGE_MIME_TYPE = "jcr:mimeType";
+ public static final String IMAGE_ENCODING = "jcr:encoding";
+ public static final String IMAGE_FORMAT_NAME = "image:formatName";
+ public static final String IMAGE_WIDTH = "image:width";
+ public static final String IMAGE_HEIGHT = "image:height";
+ public static final String IMAGE_BITS_PER_PIXEL = "image:bitsPerPixel";
+ public static final String IMAGE_PROGRESSIVE = "image:progressive";
+ public static final String IMAGE_NUMBER_OF_IMAGES =
"image:numberOfImages";
+ public static final String IMAGE_PHYSICAL_WIDTH_DPI =
"image:physicalWidthDpi";
+ public static final String IMAGE_PHYSICAL_HEIGHT_DPI =
"image:physicalHeightDpi";
+ public static final String IMAGE_PHYSICAL_WIDTH_INCHES =
"image:physicalWidthInches";
+ public static final String IMAGE_PHYSICAL_HEIGHT_INCHES =
"image:physicalHeightInches";
+
+ /**
+ * {@inheritDoc}
+ */
+ public void sequence( &InputStream; stream, &SequencerOutput; output,
+ &ProgressMonitor; progressMonitor ) {
+ progressMonitor.beginTask(10, &ImageSequencerI18n;.sequencerTaskName);
+
+ &ImageMetadata; metadata = new &ImageMetadata;();
+ metadata.setInput(stream);
+ metadata.setDetermineImageNumber(true);
+ metadata.setCollectComments(true);
+
+ // Process the image stream and extract the metadata ...
+ if (!metadata.check()) {
+ metadata = null;
+ }
+ progressMonitor.worked(5);
+ if (progressMonitor.isCancelled()) return;
+
+ // Generate the output graph if we found useful metadata ...
+ if (metadata != null) {
+ // Place the image metadata into the output map ...
+ output.setProperty(METADATA_NODE, IMAGE_PRIMARY_TYPE,
"image:metadata");
+ // output.psetProperty(METADATA_NODE, IMAGE_MIXINS, "");
+ output.setProperty(METADATA_NODE, IMAGE_MIME_TYPE, metadata.getMimeType());
+ // output.setProperty(METADATA_NODE, IMAGE_ENCODING, "");
+ output.setProperty(METADATA_NODE, IMAGE_FORMAT_NAME,
metadata.getFormatName());
+ output.setProperty(METADATA_NODE, IMAGE_WIDTH, metadata.getWidth());
+ output.setProperty(METADATA_NODE, IMAGE_HEIGHT, metadata.getHeight());
+ output.setProperty(METADATA_NODE, IMAGE_BITS_PER_PIXEL,
metadata.getBitsPerPixel());
+ output.setProperty(METADATA_NODE, IMAGE_PROGRESSIVE,
metadata.isProgressive());
+ output.setProperty(METADATA_NODE, IMAGE_NUMBER_OF_IMAGES,
metadata.getNumberOfImages());
+ output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_WIDTH_DPI,
metadata.getPhysicalWidthDpi());
+ output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_HEIGHT_DPI,
metadata.getPhysicalHeightDpi());
+ output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_WIDTH_INCHES,
metadata.getPhysicalWidthInch());
+ output.setProperty(METADATA_NODE, IMAGE_PHYSICAL_HEIGHT_INCHES,
metadata.getPhysicalHeightInch());
+ }
+
+ progressMonitor.done();
+ }
+}
+</programlisting>
+ <para>
+ Notice how the image metadata is extracted and the output graph is generated. A
single node is created with the name <code>image:metadata</code>
+ and with the <code>image:metadata</code> node type. No mixins are
defined for the node, but several properties are set on the node
+ using the values obtained from the image metadata. After this method returns, the
constructed graph will be saved to the repository
+ in all of the places defined by its configuration. (This is why only relative paths
are used in the sequencer.)
+ </para>
+ <para>Also note how the progress monitor is used. Reporting progress through
the supplied &ProgressMonitor;> is very easy, and it ensures that JBoss DNA
+ can accurately monitor and report the status of sequencing activities to the users.
At the beginning of the operation, call
+ <code>beginTask(...)</code> with a meaningful message describing
+ the operation and a total for the amount of work that will be done by this
sequencer. Then perform the sequencing work,
+ periodically reporting work by specifying the incremental amount of work with the
<code>worked(double)</code> method, or
+ by creating a subtask with the <code>createSubtask(double)</code>
method and reporting work against that subtask
+ monitor.
+ </para>
+ <para>Your method should periodically use the &ProgressMonitor;'s
<code>isCancelled()</code> method to check whether the operation has been
+ cancelled.. If this method returns true, the implementation should abort all work
as
+ soon as possible and close any resources that were acquired or opened.
+ </para>
+ <para>
+ Finally, when your sequencing operation is completed, it should call
<code>done()</code> on the progress monitor.
+ </para>
+ </sect2>
+ <sect2 id="testing_custom_sequencers">
+ <title>Testing custom sequencers</title>
+ <para>The sequencing framework was designed to make testing sequencers much
easier. In particular, the
+ &StreamSequencer; interface does not make use of the JCR API. So instead of
requiring a fully-configured
+ JCR repository and JBoss DNA system, unit tests for a sequencer can focus on testing
that the content is
+ processed correctly and the desired output graph is generated.</para>
+ <note>
+ <para>For a complete example of a sequencer unit test, see the
<code>ImageMetadataSequencerTest</code> unit test
+ in the <code>org.jboss.dna.sequencer.images</code> package of the
<code>dna-sequencers-image</code> project.
+ </para>
+ </note>
+ <para>The following code fragment shows one way of testing a sequencer, using
JUnit 4.4 assertions and
+ some of the classes made available by JBoss DNA. Of course,
+ this example code does not do any error handling and does not make all the
assertions a real test would.</para>
+ <programlisting>
+&StreamSequencer; sequencer = new &ImageMetadataSequencer;();
+MockSequencerOutput output = new MockSequencerOutput();
+&ProgressMonitor; progress = new &SimpleProgressMonitor;("Test
activity");
+&InputStream; stream = null;
+try {
+ stream =
this.getClass().getClassLoader().getResource("caution.gif").openStream();
+ sequencer.sequence(stream,output,progress); // writes to 'output'
+ assertThat(output.getPropertyValues("image:metadata",
"jcr:primaryType"),
+ is(new Object[] {"image:metadata"}));
+ assertThat(output.getPropertyValues("image:metadata",
"jcr:mimeType"),
+ is(new Object[] {"image/gif"}));
+ // ... make more assertions here
+ assertThat(output.hasReferences(), is(false));
+} finally {
+ stream.close();
+}
+</programlisting>
+ <para>It's also useful to test that a sequencer produces no output for
something it should not understand:</para>
+ <programlisting>
+&Sequencer; sequencer = new &ImageMetadataSequencer;();
+MockSequencerOutput output = new MockSequencerOutput();
+&ProgressMonitor; progress = new &SimpleProgressMonitor;("Test
activity");
+&InputStream; stream = null;
+try {
+ stream =
this.getClass().getClassLoader().getResource("caution.pict").openStream();
+ sequencer.sequence(stream,output,progress); // writes to 'output'
+ assertThat(output.hasProperties(), is(false));
+ assertThat(output.hasReferences(), is(false));
+} finally {
+ stream.close();
+}
+</programlisting>
+ <para>These are just two simple tests that show ways of testing a sequencer.
Some tests may get quite involved,
+ especially if a lot of output data is produced.
+ </para>
+ <para>It may also be useful to create some integration tests
+ that <link linkend="using_dna">configure JBoss DNA</link> to
use a custom sequencer, and to then upload
+ content using the JCR API, verifying that the custom sequencer did run. However,
remember that JBoss DNA
+ runs sequencers asynchronously in the background, and you must synchronize your
tests to ensure that the
+ sequencers have a chance to run before checking the results. (One way of doing this
(although, granted, not always reliable) is to wait for a second
+ after uploading your content, shutdown the &SequencingService; and await its
termination,
+ and then check that the sequencer output has been saved to the JCR repository. For
an example of this technique,
+ see the <code>SequencingClientTest</code> unit test in the example
application.)
+ </para>
+ </sect2>
+ <sect2 id="deploying_custom_sequencers">
+ <title>Deploying custom sequencers</title>
+ <para>The first step of deploying a sequencer consists of adding/changing the
sequencer configuration (e.g., &SequencerConfig;)
+ in the &SequencingService;. This was covered in the <link
linkend="sequencing_service">previous chapter</link>.
+ </para>
+ <para>
+ The second step is to make the sequencer implementation available to JBoss DNA. At
this time, the JAR containing
+ your new sequencer, as well as any JARs that your sequencer depends on, should be
placed on your application classpath.</para>
+ <note>
+ <para>A future goal of JBoss DNA is to allow sequencers, connectors, and
other extensions to be easily deployed into
+ a runtime repository. This process will not only be much simpler, but it will
also provide JBoss DNA
+ with the information necessary to update configurations and create the
appropriate class loaders for each extension.
+ Having separate class loaders for each extension helps prevent the pollution of
the common classpath,
+ facilitates an isolated runtime environment to eliminate any dependency
conflicts, and may potentially
+ enable hot redeployment of newer extension versions.
+ </para>
+ </note>
+ </sect2>
+ </sect1>
+</chapter>
Deleted: tags/dna-0.2/extensions/dna-classloader-maven/pom.xml
===================================================================
--- trunk/extensions/dna-classloader-maven/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-classloader-maven/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,77 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-classloader-maven</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Maven Classloader</name>
- <description>JBoss DNA Maven Classloader</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Content Repository API
- -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- </dependency>
- <!--
- Apache Jackrabbit (JCR Implementation) for testing purposes
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-classloader-maven/pom.xml (from rev 554,
trunk/extensions/dna-classloader-maven/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-classloader-maven/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-classloader-maven/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,77 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-classloader-maven</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Maven Classloader</name>
+ <description>JBoss DNA Maven Classloader</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API
+ -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ </dependency>
+ <!--
+ Apache Jackrabbit (JCR Implementation) for testing purposes
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-connector-federation/pom.xml
===================================================================
--- trunk/extensions/dna-connector-federation/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-connector-federation/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-connector-federation</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Federation Connector</name>
- <description>JBoss DNA Connector that federates content from multiple
connectors.</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Common
- -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-connector-federation/pom.xml (from rev 554,
trunk/extensions/dna-connector-federation/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-connector-federation/pom.xml (rev
0)
+++ tags/dna-0.2/extensions/dna-connector-federation/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-connector-federation</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Federation Connector</name>
+ <description>JBoss DNA Connector that federates content from multiple
connectors.</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Common
+ -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml
===================================================================
--- trunk/extensions/dna-connector-inmemory/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-connector-inmemory</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Connector to a simple in-memory repository</name>
- <description>JBoss DNA Connector that accesses an in-memory
graph.</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Common
- -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml (from rev 554,
trunk/extensions/dna-connector-inmemory/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml (rev
0)
+++ tags/dna-0.2/extensions/dna-connector-inmemory/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-connector-inmemory</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Connector to a simple in-memory repository</name>
+ <description>JBoss DNA Connector that accesses an in-memory
graph.</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Common
+ -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml
===================================================================
--- trunk/extensions/dna-connector-jbosscache/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-connector-jbosscache</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Connector to JBoss Cache</name>
- <description>JBoss DNA Connector that accesses an in-process JBoss Cache
instance.</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Common
- -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- JBoss Cache
- -->
- <dependency>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- <version>2.2.0.GA</version>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml (from rev 554,
trunk/extensions/dna-connector-jbosscache/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml (rev
0)
+++ tags/dna-0.2/extensions/dna-connector-jbosscache/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-connector-jbosscache</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Connector to JBoss Cache</name>
+ <description>JBoss DNA Connector that accesses an in-process JBoss Cache
instance.</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Common
+ -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ JBoss Cache
+ -->
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>2.2.0.GA</version>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml
===================================================================
--- trunk/extensions/dna-mimetype-detector-aperture/pom.xml 2008-09-26 16:10:20 UTC (rev
547)
+++ tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -1,256 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-mimetype-detector-aperture</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Aperture MIME-type detector</name>
- <description>JBoss DNA MIME-type detector using Aperture
library</description>
- <
url>http://labs.jboss.org/dna</url>
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
-<!--
- <dependency>
- <groupId>org.apache.tika</groupId>
- <artifactId>tika</artifactId>
- <version>0.1-incubating</version>
- </dependency>
--->
- <!--
- MIME-type detection and metadata extraction
- -->
- <dependency>
- <groupId>org.semanticdesktop</groupId>
- <artifactId>aperture</artifactId>
- <version>1.1.0.Beta1</version>
- <!-- Exclude these since they are not needed for MIME-type detection -->
- <exclusions>
- <exclusion>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.gnowsis</groupId>
- <artifactId>applewrapper</artifactId>
- </exclusion>
- <exclusion>
- <groupId>bouncycastle</groupId>
- <artifactId>bcmail-jdk14</artifactId>
- </exclusion>
- <exclusion>
- <groupId>bouncycastle</groupId>
- <artifactId>bcprov-jdk14</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semanticdesktop</groupId>
- <artifactId>demork</artifactId>
- </exclusion>
- <exclusion>
- <groupId>de.dfki</groupId>
- <artifactId>utils</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.aetrion</groupId>
- <artifactId>flickr</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.fontbox</groupId>
- <artifactId>fontbox</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.htmlparser</groupId>
- <artifactId>htmlparser</artifactId>
- </exclusion>
- <exclusion>
- <groupId>ical4j</groupId>
- <artifactId>ical4j</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semanticdesktop.nepomuk</groupId>
- <artifactId>infsail</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.jacob</groupId>
- <artifactId>jacob</artifactId>
- </exclusion>
- <exclusion>
- <groupId>javax.media</groupId>
- <artifactId>jai-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.sun.media</groupId>
- <artifactId>jai-codec</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jaudiotagger</groupId>
- <artifactId>jaudiotagger</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl104-over-slf4j</artifactId>
- </exclusion>
- <exclusion>
- <groupId>net.wimpi</groupId>
- <artifactId>pim</artifactId>
- </exclusion>
- <exclusion>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.beetstra.jutf7</groupId>
- <artifactId>jutf7</artifactId>
- </exclusion>
- <exclusion>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.drewnoakes</groupId>
- <artifactId>metadata-extractor</artifactId>
- </exclusion>
- <exclusion>
- <groupId>mstor</groupId>
- <artifactId>mstor</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semanticdesktop.nepomuk</groupId>
- <artifactId>nrlvalidator</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.openrdf</groupId>
- <artifactId>openrdf-sesame-onejar-osgi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>pdfbox</groupId>
- <artifactId>pdfbox</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-scratchpad</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semweb4j</groupId>
- <artifactId>rdf2go.impl.base</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semweb4j</groupId>
- <artifactId>rdf2go.impl.sesame20</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semweb4j</groupId>
- <artifactId>rdf2go.impl.util</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.semanticdesktop.nepomuk</groupId>
- <artifactId>unionsail</artifactId>
- </exclusion>
- <exclusion>
- <groupId>winlaf</groupId>
- <artifactId>winlaf</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- <!--
- Java Content Repository API and Apache Jackrabbit for the JCR unit test
infrastructure
- -->
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml (from rev 554,
trunk/extensions/dna-mimetype-detector-aperture/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml
(rev 0)
+++ tags/dna-0.2/extensions/dna-mimetype-detector-aperture/pom.xml 2008-09-26 21:12:43 UTC
(rev 555)
@@ -0,0 +1,256 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-mimetype-detector-aperture</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Aperture MIME-type detector</name>
+ <description>JBoss DNA MIME-type detector using Aperture
library</description>
+ <
url>http://labs.jboss.org/dna</url>
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+<!--
+ <dependency>
+ <groupId>org.apache.tika</groupId>
+ <artifactId>tika</artifactId>
+ <version>0.1-incubating</version>
+ </dependency>
+-->
+ <!--
+ MIME-type detection and metadata extraction
+ -->
+ <dependency>
+ <groupId>org.semanticdesktop</groupId>
+ <artifactId>aperture</artifactId>
+ <version>1.1.0.Beta1</version>
+ <!-- Exclude these since they are not needed for MIME-type detection -->
+ <exclusions>
+ <exclusion>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.gnowsis</groupId>
+ <artifactId>applewrapper</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>bouncycastle</groupId>
+ <artifactId>bcmail-jdk14</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>bouncycastle</groupId>
+ <artifactId>bcprov-jdk14</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semanticdesktop</groupId>
+ <artifactId>demork</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>de.dfki</groupId>
+ <artifactId>utils</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.aetrion</groupId>
+ <artifactId>flickr</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.fontbox</groupId>
+ <artifactId>fontbox</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.htmlparser</groupId>
+ <artifactId>htmlparser</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ical4j</groupId>
+ <artifactId>ical4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semanticdesktop.nepomuk</groupId>
+ <artifactId>infsail</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.jacob</groupId>
+ <artifactId>jacob</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.media</groupId>
+ <artifactId>jai-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.media</groupId>
+ <artifactId>jai-codec</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jaudiotagger</groupId>
+ <artifactId>jaudiotagger</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl104-over-slf4j</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>net.wimpi</groupId>
+ <artifactId>pim</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.beetstra.jutf7</groupId>
+ <artifactId>jutf7</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.drewnoakes</groupId>
+ <artifactId>metadata-extractor</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>mstor</groupId>
+ <artifactId>mstor</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semanticdesktop.nepomuk</groupId>
+ <artifactId>nrlvalidator</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.openrdf</groupId>
+ <artifactId>openrdf-sesame-onejar-osgi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semweb4j</groupId>
+ <artifactId>rdf2go.impl.base</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semweb4j</groupId>
+ <artifactId>rdf2go.impl.sesame20</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semweb4j</groupId>
+ <artifactId>rdf2go.impl.util</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.semanticdesktop.nepomuk</groupId>
+ <artifactId>unionsail</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>winlaf</groupId>
+ <artifactId>winlaf</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ <!--
+ Java Content Repository API and Apache Jackrabbit for the JCR unit test
infrastructure
+ -->
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-cnd/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <parent>
- <artifactId>dna</artifactId>
- <groupId>org.jboss.dna</groupId>
- <version>0.2-SNAPSHOT</version>
- <relativePath>../..</relativePath>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-sequencer-cnd</artifactId>
- <name>JBoss DNA CND Sequencer</name>
- <version>0.2-SNAPSHOT</version>
- <description>JBoss DNA Sequencer that processes JCR CND
files</description>
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>0.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>0.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>antlr-runtime</artifactId>
- <version>3.0.1</version>
- </dependency>
-
- <!-- Testing -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>antlr3-maven-plugin</artifactId>
- <version>1.0</version>
- <executions>
- <execution>
- <goals>
- <goal>antlr</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-cnd/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-sequencer-cnd/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,54 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>dna</artifactId>
+ <groupId>org.jboss.dna</groupId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-sequencer-cnd</artifactId>
+ <name>JBoss DNA CND Sequencer</name>
+ <description>JBoss DNA Sequencer that processes JCR CND
files</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr-runtime</artifactId>
+ <version>3.0.1</version>
+ </dependency>
+
+ <!-- Testing -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>antlr3-maven-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>antlr</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-images/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-images/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-images/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,92 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-sequencer-images</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Image Sequencer</name>
- <description>JBoss DNA Sequencer that processes PNG, JPEG, GIF and other image
files</description>
- <
url>http://labs.jboss.org/dna</url>
-
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Common
- -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-sequencer-images/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-images/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-images/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-sequencer-images/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,92 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-sequencer-images</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Image Sequencer</name>
+ <description>JBoss DNA Sequencer that processes PNG, JPEG, GIF and other image
files</description>
+ <
url>http://labs.jboss.org/dna</url>
+
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Common
+ -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-java/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-java/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-java/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-sequencer-java</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Java Sequencer</name>
- <description>
- JBoss DNA Sequencer that processes java sources
- </description>
- <
url>http://labs.jboss.org/dna</url>
- <!--
- Define the dependencies. Note that all version and scopes default to those
- defined in the dependencyManagement section of the parent pom.
- -->
- <dependencies>
- <!--
- Common
- -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-integration-tests</artifactId>
- <version>0.2</version>
- <scope>test</scope>
- </dependency>
- <!--
- Testing (note the scope)
- -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <!--
- Java Concurrency in Practice annotations
- -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jdt</groupId>
- <artifactId>core</artifactId>
- <version>3.2.3.v_686_R32x</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.core</groupId>
- <artifactId>runtime</artifactId>
- <version>3.3.100-v20070530</version>
- <!-- Exclude this problem library -->
- <exclusions>
- <exclusion>
- <groupId>org.eclipse.equinox</groupId>
- <artifactId>app</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.eclipse.core</groupId>
- <artifactId>resources</artifactId>
- <version>3.3.0-v20070604</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.4</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.4</version>
- </dependency>
- <!--
- Apache Jackrabbit (JCR Implementation)
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- </dependency>
- </dependencies>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-</project>
Copied: tags/dna-0.2/extensions/dna-sequencer-java/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-java/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-java/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-sequencer-java/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,142 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-sequencer-java</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Java Sequencer</name>
+ <description>
+ JBoss DNA Sequencer that processes java sources
+ </description>
+ <
url>http://labs.jboss.org/dna</url>
+ <!--
+ Define the dependencies. Note that all version and scopes default to those
+ defined in the dependencyManagement section of the parent pom.
+ -->
+ <dependencies>
+ <!--
+ Common
+ -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-integration-tests</artifactId>
+ <version>0.2</version>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ Testing (note the scope)
+ -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <!--
+ Java Concurrency in Practice annotations
+ -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ <version>3.2.3.v_686_R32x</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.core</groupId>
+ <artifactId>runtime</artifactId>
+ <version>3.3.100-v20070530</version>
+ <!-- Exclude this problem library -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.equinox</groupId>
+ <artifactId>app</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.core</groupId>
+ <artifactId>resources</artifactId>
+ <version>3.3.0-v20070604</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <!--
+ Apache Jackrabbit (JCR Implementation)
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-mp3/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,34 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>dna</artifactId>
- <groupId>org.jboss.dna</groupId>
- <version>0.2-SNAPSHOT</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-sequencer-mp3</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA MP3 Sequencer</name>
- <description>JBoss DNA Sequencer that processes MP3 audio
files</description>
- <
url>http://labs.jboss.org/dna</url>
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jaudiotagger</groupId>
- <artifactId>jaudiotagger</artifactId>
- <version>1.0.8</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-mp3/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-sequencer-mp3/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,34 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>dna</artifactId>
+ <groupId>org.jboss.dna</groupId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-sequencer-mp3</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA MP3 Sequencer</name>
+ <description>JBoss DNA Sequencer that processes MP3 audio
files</description>
+ <
url>http://labs.jboss.org/dna</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jaudiotagger</groupId>
+ <artifactId>jaudiotagger</artifactId>
+ <version>1.0.8</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-msoffice/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -1,63 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>dna</artifactId>
- <groupId>org.jboss.dna</groupId>
- <version>0.2</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-sequencer-msoffice</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA Microsoft Office Sequencer</name>
- <description>JBoss DNA Sequencer that processes Microsoft Office files and
searches for common metadata</description>
- <
url>http://labs.jboss.org/dna</url>
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.1-beta2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-scratchpad</artifactId>
- <version>3.1-beta2</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-msoffice/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml (rev
0)
+++ tags/dna-0.2/extensions/dna-sequencer-msoffice/pom.xml 2008-09-26 21:12:43 UTC (rev
555)
@@ -0,0 +1,63 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>dna</artifactId>
+ <groupId>org.jboss.dna</groupId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-sequencer-msoffice</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA Microsoft Office Sequencer</name>
+ <description>JBoss DNA Sequencer that processes Microsoft Office files and
searches for common metadata</description>
+ <
url>http://labs.jboss.org/dna</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>3.1-beta2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ <version>3.1-beta2</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml
===================================================================
--- trunk/extensions/dna-sequencer-zip/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,54 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>dna</artifactId>
- <groupId>org.jboss.dna</groupId>
- <version>0.2-SNAPSHOT</version>
- <relativePath>../..</relativePath>
- </parent>
- <!-- The groupId and version values are inherited from parent -->
- <artifactId>dna-sequencer-zip</artifactId>
- <packaging>jar</packaging>
- <name>JBoss DNA ZIP Sequencer</name>
- <description>JBoss DNA Sequencer that processes zip files and extracts content to
repository</description>
- <
url>http://labs.jboss.org/dna</url>
- <dependencies>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit-dep</artifactId>
- <version>4.4</version>
- </dependency>
- <!--
- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
\ No newline at end of file
Copied: tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml (from rev 554,
trunk/extensions/dna-sequencer-zip/pom.xml)
===================================================================
--- tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml (rev 0)
+++ tags/dna-0.2/extensions/dna-sequencer-zip/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,54 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>dna</artifactId>
+ <groupId>org.jboss.dna</groupId>
+ <version>0.2</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <!-- The groupId and version values are inherited from parent -->
+ <artifactId>dna-sequencer-zip</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss DNA ZIP Sequencer</name>
+ <description>JBoss DNA Sequencer that processes zip files and extracts content to
repository</description>
+ <
url>http://labs.jboss.org/dna</url>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit-dep</artifactId>
+ <version>4.4</version>
+ </dependency>
+ <!--
+ Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding for
testing)
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Deleted: tags/dna-0.2/pom.xml
===================================================================
--- trunk/pom.xml 2008-09-26 16:10:20 UTC (rev 547)
+++ tags/dna-0.2/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -1,581 +0,0 @@
-<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna</artifactId>
- <version>0.2-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>JBoss DNA</name>
- <
url>http://www.jboss.org/dna</url>
- <inceptionYear>2008</inceptionYear>
- <description>
- JBoss DNA provides tools for working with JCR repositories.
- </description>
- <scm>
- <
connection>scm:svn:https://svn.jboss.org/repos/dna/trunk</connectio...
- </scm>
- <licenses>
- <license>
- <name>GNU Lesser General Public License</name>
- <
url>http://www.gnu.org/licenses/lgpl.html</url>
- <distribution>repo</distribution>
- <comments>A business-friendly OSS license</comments>
- </license>
- </licenses>
- <organization>
- <name>JBoss, a division of Red Hat</name>
- <url>http://www.jboss.org</url>
- </organization>
- <developers>
- <developer>
- <name>Randall Hauch</name>
- <id>randall</id>
- <email>rhauch(a)redhat.com</email>
- <organization>JBoss, a division of Red Hat</organization>
- <roles>
- <role>Project Lead</role>
- <role>Developer</role>
- </roles>
- <timezone>-6</timezone>
- </developer>
- <developer>
- <name>John Verhaeg</name>
- <id>johnny</id>
- <email>jverhaeg(a)redhat.com</email>
- <organization>JBoss, a division of Red Hat</organization>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>-6</timezone>
- </developer>
- <developer>
- <name>Dan Florian</name>
- <id>dan</id>
- <email>dflorian(a)redhat.com</email>
- <organization>JBoss, a division of Red Hat</organization>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>-6</timezone>
- </developer>
- <developer>
- <name>Stefano Maestri</name>
- <id>stefano</id>
- <email>stefano.maestri(a)javalinux.it</email>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>+1</timezone>
- </developer>
- <developer>
- <name>Serge Pagop</name>
- <id>spagop</id>
- <email>Serge.Pagop(a)innoq.com</email>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>+1</timezone>
- </developer>
- <developer>
- <name>Michael Trezzi</name>
- <id>mathwizard</id>
- <email>michael(a)mathwizard.org</email>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>+1</timezone>
- </developer>
- <developer>
- <name>Alexandre Porcelli</name>
- <id>porcelli</id>
- <email>porcelli(a)devexp.com.br</email>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>-3</timezone>
- </developer>
- <developer>
- <name>Ben Abernathy</name>
- <id>babernat</id>
- <email>ben.abernathy(a)gmail.com</email>
- <roles>
- <role>Developer</role>
- </roles>
- <timezone>+2</timezone>
- </developer>
- </developers>
- <contributors>
- <contributor>
- <name>Greg Haber</name>
- <organization>JBoss, a division of Red Hat</organization>
- <timezone>-5</timezone>
- </contributor>
- </contributors>
- <modules>
- <module>dna-common</module>
- <module>dna-graph</module>
- <module>dna-repository</module>
- <module>dna-jcr</module>
- <module>extensions/dna-classloader-maven</module>
- <module>extensions/dna-sequencer-images</module>
- <module>extensions/dna-sequencer-mp3</module>
- <!--module>extensions/dna-sequencer-esbMessage</module-->
- <module>extensions/dna-sequencer-cnd</module>
- <module>extensions/dna-sequencer-java</module>
- <module>extensions/dna-sequencer-msoffice</module>
- <module>extensions/dna-sequencer-zip</module>
- <module>extensions/dna-connector-federation</module>
- <module>extensions/dna-connector-inmemory</module>
- <module>extensions/dna-connector-jbosscache</module>
- <module>extensions/dna-mimetype-detector-aperture</module>
- <module>dna-integration-tests</module>
- <module>docs/examples/gettingstarted</module>
- </modules>
-
- <profiles>
- <profile>
- <id>release</id>
- <modules>
- <module>docs</module>
- <module>docs/examples/gettingstarted</module>
- </modules>
- </profile>
- <profile>
- <!--
- This profile is activated when the "generate.docs" property is set,
- as in "mvn ... -Dgenerate.docs=true ..."
- -->
- <id>docs</id>
- <activation>
- <property>
- <name>generate.docs</name>
- </property>
- </activation>
- <modules>
- <module>docs</module>
- </modules>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <aggregate>true</aggregate>
- <show>public</show>
- <title>JBoss DNA ${project.version}</title>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
- </profile>
- <profile>
- <!--
- This profile is activated manually, as in "mvn ... -P assembly ..."
- -->
- <id>assembly</id>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <inherited>false</inherited>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>install</phase>
- <goals>
- <goal>assembly</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <finalName>
- jboss-dna-${project.version}
- </finalName>
- <descriptors>
- <descriptor>
- build/assembly/examples.xml
- </descriptor>
- <descriptor>
- build/assembly/javadoc.xml
- </descriptor>
- <descriptor>
- build/assembly/dist.xml
- </descriptor>
- <descriptor>
- build/assembly/src.xml
- </descriptor>
- <descriptor>
- build/assembly/all.xml
- </descriptor>
- </descriptors>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <modules>
- <module>docs</module>
- <module>docs/examples/gettingstarted</module>
- </modules>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <aggregate>true</aggregate>
- <show>public</show>
- <title>JBoss DNA ${project.version}</title>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
- </profile>
- </profiles>
- <build>
- <!-- This section defines the default plugin settings inherited by child projects.
-->
- <pluginManagement>
- <plugins>
- <!-- Fixes how test resources of a project can be used in projects dependent on it
-->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <aggregate>true</aggregate>
- <doclet>net.gleamynode.apiviz.APIviz</doclet>
- <docletArtifact>
- <groupId>net.gleamynode.apiviz</groupId>
- <artifactId>apiviz</artifactId>
- <version>1.1.1</version>
- </docletArtifact>
- <additionalparam>
- -charset UTF-8
- -docencoding UTF-8
- -version
- -author
- -breakiterator
- -linksource
- -sourcetab 4
- -windowtitle "${project.name} ${project.version} API Reference"
- -doctitle "${project.name} ${project.version} API Reference"
- -bottom "Copyright © ${project.inceptionYear}-Present JBoss a
division of Red Hat. All Rights Reserved."
- -link
http://java.sun.com/javase/6/docs/api/
- </additionalparam>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- <plugins>
- <!-- Specify the compiler options and settings -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <showDeprecation>false</showDeprecation>
- <showWarnings>false</showWarnings>
- </configuration>
- </plugin>
- <!-- Produce source jars during the 'verify' phase -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-sources</id>
- <phase>verify</phase>
- <goals>
- <goal>jar</goal>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <includes>
- <include>**/*TestCase.java</include>
- <include>**/*Test.java</include>
- </includes>
- <!--excludes>
- <exclude>**/Abstract*TestCase.java</exclude>
- <exclude>**/Abstract*Test.java</exclude>
- </excludes-->
- </configuration>
- </plugin>
- <!--
- Build a test-jar for each project, so that src/test/* resources and classes
can be used
- in other projects. Also customize how the jar files are assembled.
- -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <archive>
- <manifest>
- <addDefaultSpecificationEntries>
- true
- </addDefaultSpecificationEntries>
- <addDefaultImplementationEntries>
- true
- </addDefaultImplementationEntries>
- </manifest>
- <manifestEntries>
- <Implementation-URL>
- ${pom.url}
- </Implementation-URL>
- </manifestEntries>
- </archive>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <!--
- This section defines the default dependency settings inherited by child projects.
- Note that this section does not add dependencies, but rather provide default settings.
- -->
- <dependencyManagement>
- <dependencies>
- <!-- DNA subprojects -->
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-common</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-classloader-maven</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-graph</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-repository</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-jcr</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-federation</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-jbosscache</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-connector-inmemory</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.dna</groupId>
- <artifactId>dna-mimetype-detector-aperture</artifactId>
- <version>${pom.version}</version>
- </dependency>
- <!--
- Time and Date
- -->
- <dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
- <version>1.4</version>
- </dependency>
- <!--
- Rules
- -->
- <dependency>
- <groupId>jsr94</groupId>
- <artifactId>jsr94</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-jsr94</artifactId>
- <version>4.0.7</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-compiler</artifactId>
- <version>4.0.7</version>
- <scope>test</scope>
- </dependency>
- <!-- Testing (note the scope) -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-library</artifactId>
- <version>1.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>1.5</version>
- <scope>test</scope>
- </dependency>
- <!-- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding
for testing) -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.4.3</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.4.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- <scope>test</scope>
- </dependency>
- <!-- Java Concurrency in Practice annotations -->
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- <version>1.0</version>
- <scope>compile</scope>
- </dependency>
- <!-- Java Content Repository API -->
- <dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <version>1.0.1</version>
- <scope>compile</scope>
- </dependency>
- <!-- Apache Jackrabbit (JCR Implementation) -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>1.4</version>
- <scope>test</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- <version>1.4.5</version>
- <scope>test</scope>
- <!-- Exclude these since they are included in JDK 1.5 -->
- <exclusions>
- <exclusion>
- <groupId>xml-apis</groupId>
- <artifactId>xml-apis</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!--
- Apache JCR API unit tests (for any JCR implementation), which is a subset of the
official TCK
- -->
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr-tests</artifactId>
- <version>1.4</version>
- <scope>test</scope>
- </dependency>
- <!-- Databases and JDBC Drivers -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.0.7</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- <version>10.2.1.6</version>
- <scope>test</scope>
- </dependency>
-
-
- </dependencies>
- </dependencyManagement>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-report-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-
- <repositories>
- <repository>
- <id>apiviz.release</id>
- <name>APIviz releases</name>
- <
url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
-
-
- <repository>
- <id>jboss</id>
- <
url>http://repository.jboss.com/maven2</url>
- </repository>
- <repository>
- <id>jboss-snapshot</id>
- <
url>http://snapshots.jboss.org/maven2</url>
- </repository>
- </repositories>
- <distributionManagement>
- <repository>
- <!-- Copy the distribution jar file to a local checkout of the maven repository
- - This variable can be set in $MAVEN_HOME/conf/settings.xml -->
- <id>repository.jboss.org</id>
- <url>file://${jboss.repository.root}</url>
- </repository>
- </distributionManagement>
-</project>
Copied: tags/dna-0.2/pom.xml (from rev 554, trunk/pom.xml)
===================================================================
--- tags/dna-0.2/pom.xml (rev 0)
+++ tags/dna-0.2/pom.xml 2008-09-26 21:12:43 UTC (rev 555)
@@ -0,0 +1,581 @@
+<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna</artifactId>
+ <version>0.2</version>
+ <packaging>pom</packaging>
+ <name>JBoss DNA</name>
+ <
url>http://www.jboss.org/dna</url>
+ <inceptionYear>2008</inceptionYear>
+ <description>
+ JBoss DNA provides tools for working with JCR repositories.
+ </description>
+ <scm>
+ <
connection>scm:svn:https://svn.jboss.org/repos/dna/tags/dna-0.2</co...
+ </scm>
+ <licenses>
+ <license>
+ <name>GNU Lesser General Public License</name>
+ <
url>http://www.gnu.org/licenses/lgpl.html</url>
+ <distribution>repo</distribution>
+ <comments>A business-friendly OSS license</comments>
+ </license>
+ </licenses>
+ <organization>
+ <name>JBoss, a division of Red Hat</name>
+ <url>http://www.jboss.org</url>
+ </organization>
+ <developers>
+ <developer>
+ <name>Randall Hauch</name>
+ <id>randall</id>
+ <email>rhauch(a)redhat.com</email>
+ <organization>JBoss, a division of Red Hat</organization>
+ <roles>
+ <role>Project Lead</role>
+ <role>Developer</role>
+ </roles>
+ <timezone>-6</timezone>
+ </developer>
+ <developer>
+ <name>John Verhaeg</name>
+ <id>johnny</id>
+ <email>jverhaeg(a)redhat.com</email>
+ <organization>JBoss, a division of Red Hat</organization>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>-6</timezone>
+ </developer>
+ <developer>
+ <name>Dan Florian</name>
+ <id>dan</id>
+ <email>dflorian(a)redhat.com</email>
+ <organization>JBoss, a division of Red Hat</organization>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>-6</timezone>
+ </developer>
+ <developer>
+ <name>Stefano Maestri</name>
+ <id>stefano</id>
+ <email>stefano.maestri(a)javalinux.it</email>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>+1</timezone>
+ </developer>
+ <developer>
+ <name>Serge Pagop</name>
+ <id>spagop</id>
+ <email>Serge.Pagop(a)innoq.com</email>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>+1</timezone>
+ </developer>
+ <developer>
+ <name>Michael Trezzi</name>
+ <id>mathwizard</id>
+ <email>michael(a)mathwizard.org</email>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>+1</timezone>
+ </developer>
+ <developer>
+ <name>Alexandre Porcelli</name>
+ <id>porcelli</id>
+ <email>porcelli(a)devexp.com.br</email>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>-3</timezone>
+ </developer>
+ <developer>
+ <name>Ben Abernathy</name>
+ <id>babernat</id>
+ <email>ben.abernathy(a)gmail.com</email>
+ <roles>
+ <role>Developer</role>
+ </roles>
+ <timezone>+2</timezone>
+ </developer>
+ </developers>
+ <contributors>
+ <contributor>
+ <name>Greg Haber</name>
+ <organization>JBoss, a division of Red Hat</organization>
+ <timezone>-5</timezone>
+ </contributor>
+ </contributors>
+ <modules>
+ <module>dna-common</module>
+ <module>dna-graph</module>
+ <module>dna-repository</module>
+ <module>dna-jcr</module>
+ <module>extensions/dna-classloader-maven</module>
+ <module>extensions/dna-sequencer-images</module>
+ <module>extensions/dna-sequencer-mp3</module>
+ <!--module>extensions/dna-sequencer-esbMessage</module-->
+ <module>extensions/dna-sequencer-cnd</module>
+ <module>extensions/dna-sequencer-java</module>
+ <module>extensions/dna-sequencer-msoffice</module>
+ <module>extensions/dna-sequencer-zip</module>
+ <module>extensions/dna-connector-federation</module>
+ <module>extensions/dna-connector-inmemory</module>
+ <module>extensions/dna-connector-jbosscache</module>
+ <module>extensions/dna-mimetype-detector-aperture</module>
+ <module>dna-integration-tests</module>
+ <module>docs/examples/gettingstarted</module>
+ </modules>
+
+ <profiles>
+ <profile>
+ <id>release</id>
+ <modules>
+ <module>docs</module>
+ <module>docs/examples/gettingstarted</module>
+ </modules>
+ </profile>
+ <profile>
+ <!--
+ This profile is activated when the "generate.docs" property is set,
+ as in "mvn ... -Dgenerate.docs=true ..."
+ -->
+ <id>docs</id>
+ <activation>
+ <property>
+ <name>generate.docs</name>
+ </property>
+ </activation>
+ <modules>
+ <module>docs</module>
+ </modules>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <show>public</show>
+ <title>JBoss DNA ${project.version}</title>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+ </profile>
+ <profile>
+ <!--
+ This profile is activated manually, as in "mvn ... -P assembly ..."
+ -->
+ <id>assembly</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <inherited>false</inherited>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>install</phase>
+ <goals>
+ <goal>assembly</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <finalName>
+ jboss-dna-${project.version}
+ </finalName>
+ <descriptors>
+ <descriptor>
+ build/assembly/examples.xml
+ </descriptor>
+ <descriptor>
+ build/assembly/javadoc.xml
+ </descriptor>
+ <descriptor>
+ build/assembly/dist.xml
+ </descriptor>
+ <descriptor>
+ build/assembly/src.xml
+ </descriptor>
+ <descriptor>
+ build/assembly/all.xml
+ </descriptor>
+ </descriptors>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <modules>
+ <module>docs</module>
+ <module>docs/examples/gettingstarted</module>
+ </modules>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <show>public</show>
+ <title>JBoss DNA ${project.version}</title>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+ </profile>
+ </profiles>
+ <build>
+ <!-- This section defines the default plugin settings inherited by child projects.
-->
+ <pluginManagement>
+ <plugins>
+ <!-- Fixes how test resources of a project can be used in projects dependent on it
-->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.2</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.2</version>
+ <configuration>
+ <aggregate>true</aggregate>
+ <doclet>net.gleamynode.apiviz.APIviz</doclet>
+ <docletArtifact>
+ <groupId>net.gleamynode.apiviz</groupId>
+ <artifactId>apiviz</artifactId>
+ <version>1.1.1</version>
+ </docletArtifact>
+ <additionalparam>
+ -charset UTF-8
+ -docencoding UTF-8
+ -version
+ -author
+ -breakiterator
+ -linksource
+ -sourcetab 4
+ -windowtitle "${project.name} ${project.version} API Reference"
+ -doctitle "${project.name} ${project.version} API Reference"
+ -bottom "Copyright © ${project.inceptionYear}-Present JBoss a division
of Red Hat. All Rights Reserved."
+ -link
http://java.sun.com/javase/6/docs/api/
+ </additionalparam>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <!-- Specify the compiler options and settings -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.0.2</version>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <showDeprecation>false</showDeprecation>
+ <showWarnings>false</showWarnings>
+ </configuration>
+ </plugin>
+ <!-- Produce source jars during the 'verify' phase -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>jar</goal>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*TestCase.java</include>
+ <include>**/*Test.java</include>
+ </includes>
+ <!--excludes>
+ <exclude>**/Abstract*TestCase.java</exclude>
+ <exclude>**/Abstract*Test.java</exclude>
+ </excludes-->
+ </configuration>
+ </plugin>
+ <!--
+ Build a test-jar for each project, so that src/test/* resources and classes
can be used
+ in other projects. Also customize how the jar files are assembled.
+ -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <archive>
+ <manifest>
+ <addDefaultSpecificationEntries>
+ true
+ </addDefaultSpecificationEntries>
+ <addDefaultImplementationEntries>
+ true
+ </addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <Implementation-URL>
+ ${pom.url}
+ </Implementation-URL>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <!--
+ This section defines the default dependency settings inherited by child projects.
+ Note that this section does not add dependencies, but rather provide default settings.
+ -->
+ <dependencyManagement>
+ <dependencies>
+ <!-- DNA subprojects -->
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-common</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-classloader-maven</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-graph</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-repository</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-jcr</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-federation</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-jbosscache</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-connector-inmemory</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.dna</groupId>
+ <artifactId>dna-mimetype-detector-aperture</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <!--
+ Time and Date
+ -->
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <!--
+ Rules
+ -->
+ <dependency>
+ <groupId>jsr94</groupId>
+ <artifactId>jsr94</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-jsr94</artifactId>
+ <version>4.0.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <version>4.0.7</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Testing (note the scope) -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-library</artifactId>
+ <version>1.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.5</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Logging (require SLF4J API for compiling, but use Log4J and its SLF4J binding
for testing) -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.4.3</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Java Concurrency in Practice annotations -->
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <version>1.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- Java Content Repository API -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>1.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- Apache Jackrabbit (JCR Implementation) -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-api</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-core</artifactId>
+ <version>1.4.5</version>
+ <scope>test</scope>
+ <!-- Exclude these since they are included in JDK 1.5 -->
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!--
+ Apache JCR API unit tests (for any JCR implementation), which is a subset of the
official TCK
+ -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-tests</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- Databases and JDBC Drivers -->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.0.7</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.2.1.6</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ </dependencies>
+ </dependencyManagement>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <repositories>
+ <repository>
+ <id>apiviz.release</id>
+ <name>APIviz releases</name>
+ <
url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+
+
+ <repository>
+ <id>jboss</id>
+ <
url>http://repository.jboss.com/maven2</url>
+ </repository>
+ <repository>
+ <id>jboss-snapshot</id>
+ <
url>http://snapshots.jboss.org/maven2</url>
+ </repository>
+ </repositories>
+ <distributionManagement>
+ <repository>
+ <!-- Copy the distribution jar file to a local checkout of the maven repository
+ - This variable can be set in $MAVEN_HOME/conf/settings.xml -->
+ <id>repository.jboss.org</id>
+ <url>file://${jboss.repository.root}</url>
+ </repository>
+ </distributionManagement>
+</project>
\ No newline at end of file