Author: davsclaus
Date: Fri Aug 13 13:35:50 2010
New Revision: 985192
URL: http://svn.apache.org/viewvc?rev=985192&view=rev
Log:
CAMEL-3053: validate component now throws validation exception for non well
formed XML. Thanks to Edward Dale for patch.
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
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=985192&r1=985191&r2=985192&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
Fri Aug 13 13:35:50 2010
@@ -19,6 +19,7 @@ package org.apache.camel.processor.valid
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.util.Collections;
import javax.xml.XMLConstants;
import javax.xml.transform.Result;
@@ -32,6 +33,7 @@ import javax.xml.validation.SchemaFactor
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -82,7 +84,15 @@ public class ValidatingProcessor impleme
ValidatorErrorHandler handler = errorHandler.getClass().newInstance();
validator.setErrorHandler(handler);
- validator.validate(source, result);
+ try {
+ validator.validate(source, result);
+ } catch (SAXParseException e) {
+ // can be thrown for non well formed XML
+ throw new SchemaValidationException(exchange, schema,
+ Collections.singletonList(e),
+
Collections.<SAXParseException>emptyList(),
+
Collections.<SAXParseException>emptyList());
+ }
handler.handleErrors(exchange, schema, result);
}
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=985192&r1=985191&r2=985192&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
Fri Aug 13 13:35:50 2010
@@ -93,6 +93,26 @@ public class ValidatingProcessorTest ext
assertMockEndpointsSatisfied();
}
+ public void testNonWellFormedXml() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:invalid");
+ mock.expectedMessageCount(1);
+
+ String xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"
+ + "user xmlns=\"http://foo.com/bar\">"
+ + " <id>1</id>"
+ + " <username>davsclaus</username>";
+
+ try {
+ template.sendBody("direct:start", xml);
+ fail("Should have thrown a RuntimeCamelException");
+ } catch (RuntimeCamelException e) {
+ assertTrue(e.getCause() instanceof SchemaValidationException);
+ // expected
+ }
+
+ assertMockEndpointsSatisfied();
+ }
+
public void testNoXMLBody() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:invalid");
mock.expectedMessageCount(1);
@@ -137,4 +157,4 @@ public class ValidatingProcessorTest ext
}
};
}
-}
\ No newline at end of file
+}