[dna-commits] DNA SVN: r856 - in trunk/dna-repository/src: test/java/org/jboss/dna/repository and 1 other directory.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Thu Apr 23 17:51:50 EDT 2009


Author: rhauch
Date: 2009-04-23 17:51:50 -0400 (Thu, 23 Apr 2009)
New Revision: 856

Modified:
   trunk/dna-repository/src/main/java/org/jboss/dna/repository/DnaConfiguration.java
   trunk/dna-repository/src/test/java/org/jboss/dna/repository/DnaConfigurationTest.java
Log:
DNA-58 Create repository configuration and component

Minor change to allow the configuration to have more than one PathExpression in any sequencer.

Modified: trunk/dna-repository/src/main/java/org/jboss/dna/repository/DnaConfiguration.java
===================================================================
--- trunk/dna-repository/src/main/java/org/jboss/dna/repository/DnaConfiguration.java	2009-04-23 20:35:30 UTC (rev 855)
+++ trunk/dna-repository/src/main/java/org/jboss/dna/repository/DnaConfiguration.java	2009-04-23 21:51:50 UTC (rev 856)
@@ -21,8 +21,10 @@
  */
 package org.jboss.dna.repository;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import net.jcip.annotations.Immutable;
 import org.jboss.dna.common.component.ClassLoaderFactory;
@@ -737,6 +739,7 @@
 
     protected class GraphSequencerDetails implements SequencerDetails {
         private final Path path;
+        private final List<String> compiledExpressions = new ArrayList<String>();
 
         protected GraphSequencerDetails( Path path ) {
             assert path != null;
@@ -780,7 +783,9 @@
          */
         public SequencerDetails sequencingFrom( PathExpression expression ) {
             CheckArg.isNotNull(expression, "expression");
-            configuration().set(DnaLexicon.PATH_EXPRESSIONS).on(path).to(expression.getExpression());
+            String compiledExpression = expression.getExpression();
+            if (!compiledExpressions.contains(compiledExpression)) compiledExpressions.add(compiledExpression);
+            configuration().set(DnaLexicon.PATH_EXPRESSIONS).on(path).to(compiledExpressions);
             return this;
         }
 

Modified: trunk/dna-repository/src/test/java/org/jboss/dna/repository/DnaConfigurationTest.java
===================================================================
--- trunk/dna-repository/src/test/java/org/jboss/dna/repository/DnaConfigurationTest.java	2009-04-23 20:35:30 UTC (rev 855)
+++ trunk/dna-repository/src/test/java/org/jboss/dna/repository/DnaConfigurationTest.java	2009-04-23 21:51:50 UTC (rev 856)
@@ -253,8 +253,8 @@
                      .usingClass(MockSequencerA.class)
                      .named("The (Main) Sequencer")
                      .describedAs("Mock Sequencer A")
-                     // .sequencingFrom("/foo/source")
-                     // .andOutputtingTo("/foo/target")
+                     .sequencingFrom("/foo/source")
+                     .andOutputtingTo("/foo/target")
                      .sequencingFrom("/bar/source")
                      .andOutputtingTo("/bar/target")
                      .and()
@@ -276,7 +276,7 @@
                                                                                MockSequencerA.class.getName()));
         System.out.println(subgraph.getNode("/dna:sequencers/sequencerA").getProperty(DnaLexicon.PATH_EXPRESSIONS));
         assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), hasProperty(DnaLexicon.PATH_EXPRESSIONS,
-        // "/foo/source => /foo/target",
+                                                                               "/foo/source => /foo/target",
                                                                                "/bar/source => /bar/target"));
     }
 
@@ -286,6 +286,14 @@
         configuration.addMimeTypeDetector("detector")
                      .usingClass(ExtensionBasedMimeTypeDetector.class)
                      .describedAs("default detector");
+        configuration.addSequencer("sequencerA")
+                     .usingClass(MockSequencerA.class)
+                     .named("The (Main) Sequencer")
+                     .describedAs("Mock Sequencer A")
+                     .sequencingFrom("/foo/source")
+                     .andOutputtingTo("/foo/target")
+                     .sequencingFrom("/bar/source")
+                     .andOutputtingTo("/bar/target");
         configuration.save();
 
         // Verify that the graph has been updated correctly ...
@@ -302,5 +310,15 @@
         assertThat(subgraph.getNode("/dna:mimeTypeDetectors/detector"), hasProperty(DnaLexicon.DESCRIPTION, "default detector"));
         assertThat(subgraph.getNode("/dna:mimeTypeDetectors/detector"),
                    hasProperty(DnaLexicon.CLASSNAME, ExtensionBasedMimeTypeDetector.class.getName()));
+        assertThat(subgraph.getNode("/dna:sequencers").getChildren(), hasChild(segment("sequencerA")));
+        assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), is(notNullValue()));
+        assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), hasProperty(DnaLexicon.READABLE_NAME, "The (Main) Sequencer"));
+        assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), hasProperty(DnaLexicon.DESCRIPTION, "Mock Sequencer A"));
+        assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), hasProperty(DnaLexicon.CLASSNAME,
+                                                                               MockSequencerA.class.getName()));
+        System.out.println(subgraph.getNode("/dna:sequencers/sequencerA").getProperty(DnaLexicon.PATH_EXPRESSIONS));
+        assertThat(subgraph.getNode("/dna:sequencers/sequencerA"), hasProperty(DnaLexicon.PATH_EXPRESSIONS,
+                                                                               "/foo/source => /foo/target",
+                                                                               "/bar/source => /bar/target"));
     }
 }




More information about the dna-commits mailing list