Author: davsclaus
Date: Tue Jun 23 08:06:51 2009
New Revision: 787581

URL: http://svn.apache.org/viewvc?rev=787581&view=rev
Log:
CAMEL-1743: Added converter so validator component can work with InputStream 
directly.

Added:
    
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
   (with props)
    
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
   (with props)
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/converter/jaxp/XmlConverter.java
    
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorTest.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=787581&r1=787580&r2=787581&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
 Tue Jun 23 08:06:51 2009
@@ -27,7 +27,6 @@
 import java.lang.reflect.Constructor;
 import java.nio.ByteBuffer;
 import java.util.Properties;
-
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -44,18 +43,16 @@
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.util.ObjectHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
-import org.apache.camel.Converter;
-import org.apache.camel.Exchange;
-import org.apache.camel.util.ObjectHelper;
-
 
 /**
  * A helper class to transform to and from various JAXB types such as 
{...@link Source} and {...@link Document}
@@ -110,8 +107,8 @@
      */
     public void toResult(Source source, Result result) throws 
TransformerException {
         toResult(source, result, defaultOutputProperties());
-    }   
-    
+    }
+
     /**
      * Converts the given input Source into the required result
      */
@@ -119,15 +116,15 @@
         if (source == null) {
             return;
         }
-        
+
         Transformer transformer = createTransfomer();
         if (transformer == null) {
             throw new TransformerException("Could not create a transformer - 
JAXP is misconfigured!");
         }
         transformer.setOutputProperties(outputProperties);
         transformer.transform(source, result);
-    } 
-    
+    }
+
     /**
      * Converts the given byte[] to a Source
      */
@@ -366,6 +363,15 @@
     }
 
     @Converter
+    public DOMSource toDOMSource(InputStream is) throws 
ParserConfigurationException, IOException, SAXException {
+        InputSource source = new InputSource(is);
+        String systemId = source.getSystemId();
+        DocumentBuilder builder = createDocumentBuilder();
+        Document document = builder.parse(source);
+        return new DOMSource(document, systemId);
+    }
+
+    @Converter
     public DOMSource toDOMSourceFromStream(StreamSource source) throws 
ParserConfigurationException, IOException, SAXException {
         DocumentBuilder builder = createDocumentBuilder();
         String systemId = source.getSystemId();
@@ -421,7 +427,7 @@
     @Converter
     public Node toDOMNode(Source source) throws TransformerException, 
ParserConfigurationException, IOException, SAXException {
         DOMSource domSrc = toDOMSource(source);
-        return domSrc != null ? domSrc.getNode() :  null;
+        return domSrc != null ? domSrc.getNode() : null;
     }
 
     /**
@@ -443,10 +449,10 @@
         // If the node is an document, return the root element
         if (node instanceof Document) {
             return ((Document) node).getDocumentElement();
-        // If the node is an element, just cast it
+            // If the node is an element, just cast it
         } else if (node instanceof Element) {
             return (Element) node;
-        // Other node types are not handled
+            // Other node types are not handled
         } else {
             throw new TransformerException("Unable to convert DOM node to an 
Element");
         }
@@ -543,19 +549,19 @@
         // If the node is the document, just cast it
         if (node instanceof Document) {
             return (Document) node;
-        // If the node is an element
+            // If the node is an element
         } else if (node instanceof Element) {
             Element elem = (Element) node;
             // If this is the root element, return its owner document
             if (elem.getOwnerDocument().getDocumentElement() == elem) {
                 return elem.getOwnerDocument();
-            // else, create a new doc and copy the element inside it
+                // else, create a new doc and copy the element inside it
             } else {
                 Document doc = createDocument();
                 doc.appendChild(doc.importNode(node, true));
                 return doc;
             }
-        // other element types are not handled
+            // other element types are not handled
         } else {
             throw new TransformerException("Unable to convert DOM node to a 
Document");
         }

Added: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java?rev=787581&view=auto
==============================================================================
--- 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
 (added)
+++ 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
 Tue Jun 23 08:06:51 2009
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.jetty;
+
+import java.io.InputStream;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class JettyValidatorStreamTest extends ContextTestSupport {
+
+    public void testValideRequestAsStream() throws Exception {
+        InputStream inputStream = 
HttpClient.class.getResourceAsStream("ValidRequest.xml");
+        assertNotNull("the inputStream should not be null", inputStream);
+        String response = HttpClient.send(inputStream);
+        assertEquals("The response should be ok", response, "<ok/>");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("jetty:http://localhost:8192/test";)
+                    .to("validator:OptimizationRequest.xsd")
+                    .transform(constant("<ok/>"));
+            }
+        };
+    }
+}

Propchange: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java?rev=787581&view=auto
==============================================================================
--- 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
 (added)
+++ 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
 Tue Jun 23 08:06:51 2009
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.itest.jetty;
+
+import java.io.InputStream;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class JettyValidatorStreamWithStreamCachingEnabledTest extends 
ContextTestSupport {
+
+    public void testValideRequestAsStream() throws Exception {
+        InputStream inputStream = 
HttpClient.class.getResourceAsStream("ValidRequest.xml");
+        assertNotNull("the inputStream should not be null", inputStream);
+        String response = HttpClient.send(inputStream);
+        assertEquals("The response should be ok", response, "<ok/>");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                context.setStreamCaching(true);
+
+                from("jetty:http://localhost:8192/test";)
+                    .to("validator:OptimizationRequest.xsd")
+                    .transform(constant("<ok/>"));
+            }
+        };
+    }
+}
\ No newline at end of file

Propchange: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorStreamWithStreamCachingEnabledTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorTest.java?rev=787581&r1=787580&r2=787581&view=diff
==============================================================================
--- 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorTest.java
 (original)
+++ 
camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/jetty/JettyValidatorTest.java
 Tue Jun 23 08:06:51 2009
@@ -43,13 +43,13 @@
         return new RouteBuilder() {
             public void configure() {
                 from("jetty:http://localhost:8192/test";)
-                    .setBody(body(String.class))
+                    .convertBodyTo(String.class)
                     .to("log:in")
                     .doTry()
                         .to("validator:OptimizationRequest.xsd")
-                        .setBody(constant("<ok/>"))
+                        .transform(constant("<ok/>"))
                     .doCatch(ValidationException.class)
-                        .setBody(constant("<error/>"))
+                        .transform(constant("<error/>"))
                     .end()
                     .to("log:out");
             }


Reply via email to