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 2009/06/24 11:31:55 UTC

svn commit: r787958 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/processor/validation/ components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/

Author: davsclaus
Date: Wed Jun 24 09:31:54 2009
New Revision: 787958

URL: http://svn.apache.org/viewvc?rev=787958&view=rev
Log:
CAMEL-1753: Added useDom option to validator component. Fixed unit test of camel-msv as it requires to use Dom.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/DefaultValidationErrorHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatingProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatorErrorHandler.java
    camel/trunk/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvComponent.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/DefaultValidationErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/DefaultValidationErrorHandler.java?rev=787958&r1=787957&r2=787958&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/DefaultValidationErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/DefaultValidationErrorHandler.java Wed Jun 24 09:31:54 2009
@@ -18,8 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
-
-import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.Result;
 import javax.xml.validation.Schema;
 
 import org.xml.sax.SAXException;
@@ -72,7 +71,7 @@
         return errors.isEmpty() && fatalErrors.isEmpty();
     }
 
-    public void handleErrors(Exchange exchange, Schema schema, SAXResult result) throws ValidationException {
+    public void handleErrors(Exchange exchange, Schema schema, Result result) throws ValidationException {
         if (!isValid()) {
             throw new SchemaValidationException(exchange, schema, fatalErrors, errors, warnings);
         }

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=787958&r1=787957&r2=787958&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 Wed Jun 24 09:31:54 2009
@@ -21,7 +21,10 @@
 import java.net.URL;
 
 import javax.xml.XMLConstants;
+import javax.xml.transform.Result;
 import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.sax.SAXResult;
 import javax.xml.transform.sax.SAXSource;
 import javax.xml.validation.Schema;
@@ -48,12 +51,21 @@
     private URL schemaUrl;
     private File schemaFile;
     private ValidatorErrorHandler errorHandler = new DefaultValidationErrorHandler();
+    private boolean useDom;
 
     public void process(Exchange exchange) throws Exception {
         Schema schema = getSchema();
         Validator validator = schema.newValidator();
 
-        Source source = exchange.getIn().getBody(SAXSource.class);
+        Source source;
+        Result result;
+        if (useDom) {
+            source = exchange.getIn().getBody(DOMSource.class);
+            result = new DOMResult();
+        } else {
+            source = exchange.getIn().getBody(SAXSource.class);
+            result = new SAXResult();
+        }
         if (source == null) {
             throw new NoXmlBodyValidationException(exchange);
         }
@@ -63,7 +75,6 @@
         ValidatorErrorHandler handler = errorHandler.getClass().newInstance();
         validator.setErrorHandler(handler);
 
-        SAXResult result = new SAXResult();
         validator.validate(source, result);
 
         handler.handleErrors(exchange, schema, result);
@@ -142,6 +153,20 @@
         this.errorHandler = errorHandler;
     }
 
+    public boolean isUseDom() {
+        return useDom;
+    }
+
+    /**
+     * Sets whether DOMSource and DOMResult should be used, or
+     * SaxSource and SaxResult.
+     *
+     * @param useDom true to use DOM otherwise Sax is used
+     */
+    public void setUseDom(boolean useDom) {
+        this.useDom = useDom;
+    }
+
     // Implementation methods
     // -----------------------------------------------------------------------
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatorErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatorErrorHandler.java?rev=787958&r1=787957&r2=787958&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatorErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/ValidatorErrorHandler.java Wed Jun 24 09:31:54 2009
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.processor.validation;
 
-import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.Result;
 import javax.xml.validation.Schema;
 
 import org.xml.sax.ErrorHandler;
@@ -44,5 +44,5 @@
      * @param result   the result
      * @throws ValidationException is thrown in case of validatation errors
      */
-    void handleErrors(Exchange exchange, Schema schema, SAXResult result) throws ValidationException;
+    void handleErrors(Exchange exchange, Schema schema, Result result) throws ValidationException;
 }

Modified: camel/trunk/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvComponent.java?rev=787958&r1=787957&r2=787958&view=diff
==============================================================================
--- camel/trunk/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvComponent.java (original)
+++ camel/trunk/components/camel-msv/src/main/java/org/apache/camel/component/validator/msv/MsvComponent.java Wed Jun 24 09:31:54 2009
@@ -49,6 +49,8 @@
     protected void configureValidator(SpringValidator validator, String uri, String remaining, Map parameters) throws Exception {
         validator.setSchemaLanguage(XMLConstants.RELAXNG_NS_URI);
         validator.setSchemaFactory(getSchemaFactory());
+        // must use Dom for Msv to work
+        validator.setUseDom(true);
         super.configureValidator(validator, uri, remaining, parameters);
     }
 }