| Commit in servicemix/base/src/main/java/org/servicemix/components/validation on MAIN | |||
| ValidateComponent.java | +17 | -5 | 1.4 -> 1.5 |
Fix SM-47 : ValidateComponent tries to validate a StreamSource - which is not allowed
servicemix/base/src/main/java/org/servicemix/components/validation
diff -u -r1.4 -r1.5 --- ValidateComponent.java 30 Aug 2005 11:29:52 -0000 1.4 +++ ValidateComponent.java 10 Oct 2005 09:23:33 -0000 1.5 @@ -18,9 +18,8 @@
package org.servicemix.components.validation; import org.servicemix.components.util.TransformComponentSupport;
-import org.servicemix.components.util.MessageTransformer; -import org.servicemix.components.util.CopyTransformer;
import org.servicemix.jbi.FaultException;
+import org.servicemix.jbi.jaxp.SourceTransformer;
import org.springframework.core.io.Resource; import org.xml.sax.SAXException;
@@ -29,7 +28,9 @@
import javax.jbi.messaging.MessageExchange; import javax.jbi.messaging.MessagingException; import javax.jbi.messaging.NormalizedMessage;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource;
@@ -43,7 +44,7 @@
* and returning a fault if the document does not conform to the schema * otherwise the message is passed on its way. *
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class ValidateComponent extends TransformComponentSupport {
private Schema schema;
@@ -114,7 +115,12 @@
validator.setErrorHandler(errorHandler);
DOMResult result = new DOMResult();
try {
- validator.validate(in.getContent(), result);
+ // Only DOMSource and SAXSource are allowed for validating + // See http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/Validator.html#validate(javax.xml.transform.Source,%20javax.xml.transform.Result) + // As we expect a DOMResult as output, we must ensure that the input is a + // DOMSource + Source src = "" SourceTransformer().toDOMSource(in.getContent()); + validator.validate(src, result);
if (errorHandler.hasErrors()) {
Fault fault = exchange.createFault();
fault.setProperty("org.servicemix.schema", schema);
@@ -131,6 +137,12 @@
}
catch (IOException e) {
throw new MessagingException(e);
- }
+ }
+ catch (ParserConfigurationException e) {
+ throw new MessagingException(e);
+ }
+ catch (TransformerException e) {
+ throw new MessagingException(e);
+ }
} }
