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