Author: ningjiang
Date: Mon Nov 16 07:48:22 2009
New Revision: 880644

URL: http://svn.apache.org/viewvc?rev=880644&view=rev
Log:
CAMEL-2144 fixed the issue of Null Message will disable the message handler of 
camel consumer

Added:
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
   (with props)
    
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
   (with props)
Modified:
    
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java

Modified: 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java?rev=880644&r1=880643&r2=880644&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
 (original)
+++ 
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfConverter.java
 Mon Nov 16 07:48:22 2009
@@ -158,6 +158,7 @@
      * @param registry type converter registry
      * @return the converted value of the desired type or null if no suitable 
converter found
      */
+    @SuppressWarnings("unchecked")
     @FallbackConverter
     public static <T> T convertTo(Class<T> type, Exchange exchange, Object 
value, 
             TypeConverterRegistry registry) {
@@ -177,6 +178,8 @@
                     }
                 }
             }
+            // return void to indicate its not possible to convert at this time
+            return (T) Void.TYPE;
         }
         
         return null;

Added: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java?rev=880644&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
 (added)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
 Mon Nov 16 07:48:22 2009
@@ -0,0 +1,88 @@
+/**
+ * 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.cxf;
+
+import java.util.List;
+
+import org.w3c.dom.Node;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.converter.jaxp.XmlConverter;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.frontend.ClientFactoryBean;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.junit.Test;
+
+public class CxfConsumerProviderTest extends CamelTestSupport {
+    
+    protected static final String SIMPLE_ENDPOINT_ADDRESS = 
"http://localhost:28080/test";;
+    protected static final String SIMPLE_ENDPOINT_URI = "cxf://" + 
SIMPLE_ENDPOINT_ADDRESS
+        + "?serviceClass=org.apache.camel.component.cxf.ServiceProvider";
+    
+    protected static final String REQUEST_MESSAGE = "<soapenv:Envelope 
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"; 
xmlns:ser=\"test/service\">"
+        + 
"<soapenv:Header/><soapenv:Body><ser:ping/></soapenv:Body></soapenv:Envelope>";
+    
+    protected static final String RESPONSE_MESSAGE = "<soap:Envelope 
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";>"
+        + "<soap:Body><pong xmlns=\"test/service\" 
/></soap:Body></soap:Envelope>";
+    
+    protected static final String RESPONSE = "<pong xmlns=\"test/service\"/>";
+  
+
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                errorHandler(noErrorHandler());
+                from(SIMPLE_ENDPOINT_URI).process(new Processor() {
+                    public void process(final Exchange exchange) {
+                        Message in = exchange.getIn();
+                        // Get the parameter list
+                        Node node = in.getBody(Node.class);
+                        assertNotNull(node);
+                        XmlConverter xmlConverter = new XmlConverter();
+                        // Put the result back
+                        
exchange.getOut().setBody(xmlConverter.toSource(RESPONSE));
+                    }
+                });
+            }
+        };
+    }
+    
+
+    @Test
+    public void testInvokingServiceFromHttpCompnent() throws Exception {
+        // call the service with right post message
+        
+        String response = template.requestBody(SIMPLE_ENDPOINT_ADDRESS, 
REQUEST_MESSAGE, String.class);
+        assertEquals("Get a wrong response ", RESPONSE_MESSAGE, response);
+        try {
+            response = template.requestBody(SIMPLE_ENDPOINT_ADDRESS, null, 
String.class);
+            fail("Excpetion to get exception here");
+        } catch (Exception ex) {
+            // do nothing here
+        }
+       
+        response = template.requestBody(SIMPLE_ENDPOINT_ADDRESS, 
REQUEST_MESSAGE, String.class);
+        assertEquals("Get a wrong response ", RESPONSE_MESSAGE, response);
+    }
+
+
+}

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerProviderTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java?rev=880644&view=auto
==============================================================================
--- 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
 (added)
+++ 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
 Mon Nov 16 07:48:22 2009
@@ -0,0 +1,33 @@
+/**
+ * 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.cxf;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Provider;
+import javax.xml.ws.Service.Mode;
+import javax.xml.ws.ServiceMode;
+import javax.xml.ws.WebServiceProvider;
+
+...@webserviceprovider
+...@servicemode(Mode.PAYLOAD)
+public class ServiceProvider implements Provider<Source> {
+
+    public Source invoke(Source m) {
+        throw new UnsupportedOperationException("Place holder method");
+    }
+
+}

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/ServiceProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date


Reply via email to