You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/03/18 09:48:19 UTC

svn commit: r924670 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/processor/validation/ camel-core/src/test/java/org/apache/camel/processor/ components/camel-spring/src/main/java/org/apache/camel/component/

Author: davsclaus
Date: Thu Mar 18 08:48:19 2010
New Revision: 924670

URL: http://svn.apache.org/viewvc?rev=924670&view=rev
Log:
CAMEL-2557: Added option useSharedSchema to validation component.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorNotUseSharedSchemaTest.java
      - copied, changed from r924321, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/ResourceBasedEndpoint.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java?rev=924670&r1=924669&r2=924670&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java Thu Mar 18 08:48:19 2010
@@ -52,9 +52,16 @@ public class ValidatingProcessor impleme
     private File schemaFile;
     private ValidatorErrorHandler errorHandler = new DefaultValidationErrorHandler();
     private boolean useDom;
+    private boolean useSharedSchema = true;
 
     public void process(Exchange exchange) throws Exception {
-        Schema schema = getSchema();
+        Schema schema;
+        if (isUseSharedSchema()) {
+            schema = getSchema();
+        } else {
+            schema = createSchema();
+        }
+
         Validator validator = schema.newValidator();
 
         Source source;
@@ -88,7 +95,7 @@ public class ValidatingProcessor impleme
     // Properties
     // -----------------------------------------------------------------------
 
-    public Schema getSchema() throws IOException, SAXException {
+    public synchronized Schema getSchema() throws IOException, SAXException {
         if (schema == null) {
             schema = createSchema();
         }
@@ -107,7 +114,7 @@ public class ValidatingProcessor impleme
         this.schemaLanguage = schemaLanguage;
     }
 
-    public Source getSchemaSource() throws IOException {
+    public synchronized Source getSchemaSource() throws IOException {
         if (schemaSource == null) {
             schemaSource = createSchemaSource();
         }
@@ -134,7 +141,7 @@ public class ValidatingProcessor impleme
         this.schemaFile = schemaFile;
     }
 
-    public SchemaFactory getSchemaFactory() {
+    public synchronized SchemaFactory getSchemaFactory() {
         if (schemaFactory == null) {
             schemaFactory = createSchemaFactory();
         }
@@ -167,6 +174,14 @@ public class ValidatingProcessor impleme
         this.useDom = useDom;
     }
 
+    public boolean isUseSharedSchema() {
+        return useSharedSchema;
+    }
+
+    public void setUseSharedSchema(boolean useSharedSchema) {
+        this.useSharedSchema = useSharedSchema;
+    }
+
     // Implementation methods
     // -----------------------------------------------------------------------
 

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorNotUseSharedSchemaTest.java (from r924321, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorNotUseSharedSchemaTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorNotUseSharedSchemaTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java&r1=924321&r2=924670&rev=924670&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorNotUseSharedSchemaTest.java Thu Mar 18 08:48:19 2010
@@ -30,7 +30,7 @@ import org.apache.camel.processor.valida
 /**
  * Unit test of ValidatingProcessor.
  */
-public class ValidatingProcessorTest extends ContextTestSupport {
+public class ValidatingProcessorNotUseSharedSchemaTest extends ContextTestSupport {
 
     protected ValidatingProcessor validating;
 
@@ -38,6 +38,7 @@ public class ValidatingProcessorTest ext
     protected void setUp() throws Exception {
         validating = new ValidatingProcessor();
         validating.setSchemaFile(new File("src/test/resources/org/apache/camel/processor/ValidatingProcessor.xsd").getAbsoluteFile());
+        validating.setUseSharedSchema(false);
 
         super.setUp();
     }
@@ -57,6 +58,22 @@ public class ValidatingProcessorTest ext
         assertMockEndpointsSatisfied();
     }
 
+    public void testValidMessageTwice() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:valid");
+        mock.expectedMessageCount(2);
+
+        String xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
+            + "<user xmlns=\"http://foo.com/bar\">"
+            + "  <id>1</id>"
+            + "  <username>davsclaus</username>"
+            + "</user>";
+
+        template.sendBody("direct:start", xml);
+        template.sendBody("direct:start", xml);
+
+        assertMockEndpointsSatisfied();
+    }
+
     public void testInvalidMessage() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:invalid");
         mock.expectedMessageCount(1);
@@ -121,4 +138,5 @@ public class ValidatingProcessorTest ext
             }
         };
     }
+
 }
\ No newline at end of file

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java?rev=924670&r1=924669&r2=924670&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidatingProcessorTest.java Thu Mar 18 08:48:19 2010
@@ -57,6 +57,22 @@ public class ValidatingProcessorTest ext
         assertMockEndpointsSatisfied();
     }
 
+    public void testValidMessageTwice() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:valid");
+        mock.expectedMessageCount(2);
+
+        String xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
+            + "<user xmlns=\"http://foo.com/bar\">"
+            + "  <id>1</id>"
+            + "  <username>davsclaus</username>"
+            + "</user>";
+
+        template.sendBody("direct:start", xml);
+        template.sendBody("direct:start", xml);
+
+        assertMockEndpointsSatisfied();
+    }
+
     public void testInvalidMessage() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:invalid");
         mock.expectedMessageCount(1);

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/ResourceBasedEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/ResourceBasedEndpoint.java?rev=924670&r1=924669&r2=924670&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/ResourceBasedEndpoint.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/component/ResourceBasedEndpoint.java Thu Mar 18 08:48:19 2010
@@ -106,7 +106,7 @@ public abstract class ResourceBasedEndpo
     }
 
     /**
-     * Sets wether to use resource content cache or not - default is <tt>false</tt>.
+     * Sets whether to use resource content cache or not - default is <tt>false</tt>.
      *
      * @see #getResourceAsInputStream()
      */