You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2007/10/12 08:46:05 UTC

svn commit: r584075 - in /incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src: main/java/org/apache/servicemix/cxfbc/ main/java/org/apache/servicemix/cxfbc/interceptors/ test/java/org/apache/servicemix/cxfbc/

Author: ffang
Date: Thu Oct 11 23:46:04 2007
New Revision: 584075

URL: http://svn.apache.org/viewvc?rev=584075&view=rev
Log:
add fault handle test for cxf bc provider

Modified:
    incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
    incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
    incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java
    incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplForProvider.java

Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java?rev=584075&r1=584074&r2=584075&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java Thu Oct 11 23:46:04 2007
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.Fault;
 import javax.jbi.messaging.InOptionalOut;
 import javax.jbi.messaging.InOut;
 import javax.jbi.messaging.MessageExchange;
@@ -103,7 +104,12 @@
             soapMessage.setInterceptorChain(inChain);
             inChain.doIntercept(soapMessage);
             
-            if (messageExchange instanceof InOut) {
+            if (soapMessage.get("jbiFault") != null 
+                    &&  soapMessage.get("jbiFault").equals(true)) {
+                Fault fault = messageExchange.createFault();
+                fault.setContent(soapMessage.getContent(Source.class));
+                messageExchange.setFault(fault);
+            } else  if (messageExchange instanceof InOut) {
                 NormalizedMessage msg = messageExchange.createMessage();
                 msg.setContent(soapMessage.getContent(Source.class));
                 messageExchange.setMessage(msg, "out");

Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java?rev=584075&r1=584074&r2=584075&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java Thu Oct 11 23:46:04 2007
@@ -32,6 +32,8 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+import org.apache.cxf.binding.jbi.JBIConstants;
+import org.apache.cxf.binding.jbi.JBIFault;
 import org.apache.cxf.binding.soap.SoapHeader;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
@@ -58,7 +60,6 @@
 public class JbiInWsdl1Interceptor extends AbstractSoapInterceptor {
 
     public JbiInWsdl1Interceptor() {
-        //super(Phase.UNMARSHAL);
         super(Phase.PRE_INVOKE);
         addAfter(JbiOperationInterceptor.class.getName());
     }
@@ -102,9 +103,15 @@
         if (style == null) {
             style = binding.getStyle();
         }
+
+        
         Element body = getBodyElement(message);
         if (body == null) {
-            //SOAP:Body is empty
+            return;
+        }
+        
+        if (body.getLocalName().equals("Fault")) {
+            handleJBIFault(message, body);
             return;
         }
         List<SoapHeaderInfo> headers = wsdlMessage.getExtensors(SoapHeaderInfo.class);
@@ -131,6 +138,21 @@
                 }
             }
         }
+        processHeader(message, headers, headerElement, parts);
+        for (Object part : parts) {
+            if (part instanceof Node) {
+                addPart(root, (Node) part);
+            } else if (part instanceof NodeList) {
+                addPart(root, (NodeList) part);
+            } else if (part instanceof SoapHeader) {
+                addPart(root, (Node)((SoapHeader)part).getObject());
+            }
+        }
+        
+        message.setContent(Source.class, new DOMSource(document));
+    }
+
+    private void processHeader(SoapMessage message, List<SoapHeaderInfo> headers, List<Header> headerElement, List<Object> parts) {
         if (headers != null) {
             for (SoapHeaderInfo header : headers) {
                 MessagePartInfo part = header.getPart();
@@ -151,17 +173,19 @@
                 }
             }
         }
-        for (Object part : parts) {
-            if (part instanceof Node) {
-                addPart(root, (Node) part);
-            } else if (part instanceof NodeList) {
-                addPart(root, (NodeList) part);
-            } else if (part instanceof SoapHeader) {
-                addPart(root, (Node)((SoapHeader)part).getObject());
-            }
-        }
+    }
+
+    private void handleJBIFault(SoapMessage message, Element soapFault) {
+        Document doc = DomUtil.createDocument();
         
-        message.setContent(Source.class, new DOMSource(document));
+        Element jbiFault = DomUtil.createElement(doc, new QName(JBIConstants.NS_JBI_BINDING, JBIFault.JBI_FAULT_ROOT));
+        /*Node jbiFaultString = doc.importNode(soapFault.getElementsByTagName(
+                JBIFault.JBI_FAULT_STRING).item(0), true);
+        jbiFault.appendChild(jbiFaultString);*/
+        Node jbiFaultDetail = doc.importNode(soapFault.getElementsByTagName(JBIFault.JBI_FAULT_DETAIL).item(0).getFirstChild(), true);
+        jbiFault.appendChild(jbiFaultDetail);
+        message.setContent(Source.class, new DOMSource(doc));
+        message.put("jbiFault", true);
     }
 
     private NodeList wrapNodeList(final NodeList childNodes) {
@@ -196,6 +220,8 @@
             throw new Fault(e);
         }
     }
+    
+    
     
     protected Header getHeaderElement(SoapMessage message, QName name) {
         Exchange exchange = message.getExchange();

Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java?rev=584075&r1=584074&r2=584075&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/CxfBcProviderTest.java Thu Oct 11 23:46:04 2007
@@ -91,7 +91,7 @@
               + "</message>"));
         client.sendSync(io);
         assertTrue(new SourceTransformer().contentToString(
-                io.getOutMessage()).indexOf("Hello ffang 3") > 0);
+                io.getOutMessage()).indexOf("Hello ffang 3Negative number cant be added!") >= 0);
     }
     
     @Override

Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplForProvider.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplForProvider.java?rev=584075&r1=584074&r2=584075&view=diff
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplForProvider.java (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/test/java/org/apache/servicemix/cxfbc/GreeterImplForProvider.java Thu Oct 11 23:46:04 2007
@@ -19,6 +19,7 @@
 import javax.jbi.component.ComponentContext;
 import javax.jws.WebService;
 
+import org.apache.cxf.calculator.AddNumbersFault;
 import org.apache.cxf.calculator.CalculatorPortType;
 
 @WebService(serviceName = "SOAPService", 
@@ -30,13 +31,16 @@
     private ComponentContext context;
     private CalculatorPortType calculator;
     public String greetMe(String me) {
-        int ret = 0;
+        String ret = "";
         try {
             
-            ret = getCalculator().add(1, 2);
+            ret = ret + getCalculator().add(1, 2);
+            ret = ret + getCalculator().add(1, -1);
                         
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (AddNumbersFault e) {
+            //should catch exception here
+            
+            ret = ret + e.getFaultInfo().getMessage();
         }
         return "Hello " + me  + " " + ret;
     }