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);