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 2011/08/17 12:19:09 UTC

svn commit: r1158612 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/converter/jaxp/XmlConverter.java test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java

Author: davsclaus
Date: Wed Aug 17 10:19:08 2011
New Revision: 1158612

URL: http://svn.apache.org/viewvc?rev=1158612&view=rev
Log:
CAMEL-4342: Validator component can now load message body directly from a file.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java
      - copied, changed from r1158534, camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorRouteTest.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java?rev=1158612&r1=1158611&r2=1158612&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java Wed Aug 17 10:19:08 2011
@@ -18,6 +18,7 @@ package org.apache.camel.converter.jaxp;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -347,6 +348,16 @@ public class XmlConverter {
     /**
      * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
      * supported (making it easy to derive from this class to add new kinds of conversion).
+     */
+    @Converter
+    public SAXSource toSAXSource(File file, Exchange exchange) throws IOException, SAXException, TransformerException {
+        FileInputStream fis = new FileInputStream(file);
+        return toSAXSource(fis, exchange);
+    }
+
+    /**
+     * Converts the source instance to a {@link SAXSource} or returns null if the conversion is not
+     * supported (making it easy to derive from this class to add new kinds of conversion).
      *
      * @deprecated will be removed in Camel 3.0. Use the method which has 2 parameters.
      */
@@ -513,6 +524,12 @@ public class XmlConverter {
     }
 
     @Converter
+    public DOMSource toDOMSource(File file) throws ParserConfigurationException, IOException, SAXException {
+        FileInputStream fis = new FileInputStream(file);
+        return toDOMSource(fis);
+    }
+
+    @Converter
     public DOMSource toDOMSourceFromStream(StreamSource source) throws ParserConfigurationException, IOException, SAXException {
         Document document;
         String systemId = source.getSystemId();

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java (from r1158534, camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorRouteTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorRouteTest.java&r1=1158534&r2=1158612&rev=1158612&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/ValidatorRouteTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/validator/FileValidatorRouteTest.java Wed Aug 17 10:19:08 2011
@@ -17,6 +17,7 @@
 package org.apache.camel.component.validator;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
 import org.apache.camel.ValidationException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
@@ -24,7 +25,7 @@ import org.apache.camel.component.mock.M
 /**
  *
  */
-public class ValidatorRouteTest extends ContextTestSupport {
+public class FileValidatorRouteTest extends ContextTestSupport {
 
     protected MockEndpoint validEndpoint;
     protected MockEndpoint finallyEndpoint;
@@ -34,8 +35,9 @@ public class ValidatorRouteTest extends 
         validEndpoint.expectedMessageCount(1);
         finallyEndpoint.expectedMessageCount(1);
 
-        template.sendBody("direct:start",
-                "<mail xmlns='http://foo.com/bar'><subject>Hey</subject><body>Hello world!</body></mail>");
+        template.sendBodyAndHeader("file:target/validator",
+                "<mail xmlns='http://foo.com/bar'><subject>Hey</subject><body>Hello world!</body></mail>",
+                Exchange.FILE_NAME, "valid.xml");
 
         MockEndpoint.assertIsSatisfied(validEndpoint, invalidEndpoint, finallyEndpoint);
     }
@@ -44,16 +46,18 @@ public class ValidatorRouteTest extends 
         invalidEndpoint.expectedMessageCount(1);
         finallyEndpoint.expectedMessageCount(1);
 
-        template.sendBody("direct:start",
-                "<mail xmlns='http://foo.com/bar'><body>Hello world!</body></mail>");
+        template.sendBodyAndHeader("file:target/validator",
+                "<mail xmlns='http://foo.com/bar'><body>Hello world!</body></mail>",
+                Exchange.FILE_NAME, "invalid.xml");
 
         MockEndpoint.assertIsSatisfied(validEndpoint, invalidEndpoint, finallyEndpoint);
     }
 
     @Override
     protected void setUp() throws Exception {
-        super.setUp();
+        deleteDirectory("target/validator");
 
+        super.setUp();
         validEndpoint = resolveMandatoryEndpoint("mock:valid", MockEndpoint.class);
         invalidEndpoint = resolveMandatoryEndpoint("mock:invalid", MockEndpoint.class);
         finallyEndpoint = resolveMandatoryEndpoint("mock:finally", MockEndpoint.class);
@@ -64,7 +68,7 @@ public class ValidatorRouteTest extends 
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start")
+                from("file:target/validator")
                     .doTry()
                         .to("validator:org/apache/camel/component/validator/schema.xsd")
                         .to("mock:valid")

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java?rev=1158612&r1=1158611&r2=1158612&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/converter/jaxp/XmlConverterTest.java Wed Aug 17 10:19:08 2011
@@ -163,6 +163,18 @@ public class XmlConverterTest extends Co
         assertEquals("<foo>bar</foo>", conv.toString(out, null));
     }
 
+    public void testToSaxSourceFromFile() throws Exception {
+        XmlConverter conv = new XmlConverter();
+
+        deleteDirectory("target/xml");
+        template.sendBodyAndHeader("file:target/xml", "<foo>bar</foo>", Exchange.FILE_NAME, "myxml.xml");
+        File file = new File("target/xml/myxml.xml");
+
+        SAXSource out = conv.toSAXSource(file, null);
+        assertNotNull(out);
+        assertEquals("<foo>bar</foo>", context.getTypeConverter().convertTo(String.class, out));
+    }
+
     public void testToSaxSourceByDomSource() throws Exception {
         XmlConverter conv = new XmlConverter();
 
@@ -331,6 +343,18 @@ public class XmlConverterTest extends Co
         assertEquals("<foo>bar</foo>", context.getTypeConverter().convertTo(String.class, out));
     }
 
+    public void testToDomSourceFromFile() throws Exception {
+        XmlConverter conv = new XmlConverter();
+
+        deleteDirectory("target/xml");
+        template.sendBodyAndHeader("file:target/xml", "<foo>bar</foo>", Exchange.FILE_NAME, "myxml.xml");
+        File file = new File("target/xml/myxml.xml");
+
+        DOMSource out = conv.toDOMSource(file);
+        assertNotNull(out);
+        assertEquals("<foo>bar</foo>", context.getTypeConverter().convertTo(String.class, out));
+    }
+
     public void testToDomElement() throws Exception {
         XmlConverter conv = new XmlConverter();
         SAXSource source = conv.toSAXSource("<foo>bar</foo>", null);