Author: davsclaus
Date: Fri Apr  8 09:50:07 2011
New Revision: 1090175

URL: http://svn.apache.org/viewvc?rev=1090175&view=rev
Log:
CAMEL-3818: Added unit test.

Added:
    
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryFromFileTest.java
    
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryLanguageFromFileTest.java
Modified:
    
camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java

Modified: 
camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java?rev=1090175&r1=1090174&r2=1090175&view=diff
==============================================================================
--- 
camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java
 (original)
+++ 
camel/trunk/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java
 Fri Apr  8 09:50:07 2011
@@ -65,7 +65,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Creates an XQuery builder
+ * Creates an XQuery builder.
+ * <p/>
+ * The XQueryExpression, as you would expect, can be executed repeatedly, as 
often as you want, in the same or in different threads.
  *
  * @version 
  */
@@ -420,10 +422,7 @@ public abstract class XQueryBuilder impl
         if (item != null) {
             dynamicQueryContext.setContextItem(item);
         } else {
-            Source source = in.getBody(Source.class);
-            if (source == null) {
-                source = converter.toDOMSource(converter.createDocument());
-            }
+            Source source = in.getMandatoryBody(Source.class);
             DocumentInfo doc = getStaticQueryContext().buildDocument(source);
             dynamicQueryContext.setContextItem(doc);
         }

Added: 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryFromFileTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryFromFileTest.java?rev=1090175&view=auto
==============================================================================
--- 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryFromFileTest.java
 (added)
+++ 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryFromFileTest.java
 Fri Apr  8 09:50:07 2011
@@ -0,0 +1,66 @@
+/**
+ * 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.component.xquery;
+
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class XQueryFromFileTest extends CamelTestSupport {
+
+    @Test
+    public void testXQueryFromFile() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+
+        template.sendBodyAndHeader("file:target/xquery", 
"<mail><subject>Hey</subject><body>Hello world!</body></mail>",
+                Exchange.FILE_NAME, "body.xml");
+
+        assertMockEndpointsSatisfied();
+
+        List<Exchange> list = mock.getReceivedExchanges();
+        Exchange exchange = list.get(0);
+        String xml = exchange.getIn().getBody(String.class);
+        assertNotNull("The transformed XML should not be null", xml);
+        assertEquals("transformed", "<transformed 
subject=\"Hey\"><mail><subject>Hey</subject>"
+            + "<body>Hello world!</body></mail></transformed>", xml);
+    }
+
+    public void setUp() throws Exception {
+        deleteDirectory("target/xquery");
+        super.setUp();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("file:target/xquery")
+                    
.to("xquery:org/apache/camel/component/xquery/transform.xquery")
+                    .to("mock:result");
+            }
+        };
+    }
+}

Added: 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryLanguageFromFileTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryLanguageFromFileTest.java?rev=1090175&view=auto
==============================================================================
--- 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryLanguageFromFileTest.java
 (added)
+++ 
camel/trunk/components/camel-saxon/src/test/java/org/apache/camel/component/xquery/XQueryLanguageFromFileTest.java
 Fri Apr  8 09:50:07 2011
@@ -0,0 +1,68 @@
+/**
+ * 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.component.xquery;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class XQueryLanguageFromFileTest extends CamelTestSupport {
+
+    @Test
+    public void testXQueryFromFile() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:davsclaus");
+        mock.expectedMessageCount(1);
+        mock.message(0).body(String.class).contains("Hello World");
+
+        MockEndpoint other = getMockEndpoint("mock:other");
+        other.expectedMessageCount(1);
+        other.message(0).body(String.class).contains("Bye World");
+
+        template.sendBodyAndHeader("file:target/xquery", "<mail 
from=\"[email protected]\"><subject>Hey</subject><body>Hello 
World!</body></mail>",
+                Exchange.FILE_NAME, "claus.xml");
+
+        template.sendBodyAndHeader("file:target/xquery", "<mail 
from=\"[email protected]\"><subject>Hey</subject><body>Bye 
World!</body></mail>",
+                Exchange.FILE_NAME, "janstey.xml");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void setUp() throws Exception {
+        deleteDirectory("target/xquery");
+        super.setUp();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("file:target/xquery")
+                    .choice()
+                        .when().xquery("/mail/@from = '[email protected]'")
+                            .to("mock:davsclaus")
+                        .otherwise()
+                            .to("mock:other");
+            }
+        };
+    }
+}


Reply via email to