You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2006/03/19 17:02:45 UTC

svn commit: r386983 - in /webservices/axis2/trunk/java/modules: core/src/org/apache/axis2/engine/ core/src/org/apache/axis2/transport/http/server/ integration/test/org/apache/axis2/engine/ integration/test/org/apache/axis2/engine/util/ samples/src/samp...

Author: chinthaka
Date: Sun Mar 19 08:02:43 2006
New Revision: 386983

URL: http://svn.apache.org/viewcvs?rev=386983&view=rev
Log:
- improving the fault handling code and fixing a bug pointed out in the list
- searching for available network interfaces and trying to find a non-localhost ip, if found. 
- fixing a bug in WSDL2Java pointed out in the list.

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java
    webservices/axis2/trunk/java/modules/samples/src/sample/mtom/interop/client/InteropClient.java
    webservices/axis2/trunk/java/modules/tool/script/WSDL2Java.bat

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java Sun Mar 19 08:02:43 2006
@@ -25,6 +25,7 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.i18n.Messages;
@@ -35,16 +36,7 @@
 import org.apache.ws.commons.om.OMAbstractFactory;
 import org.apache.ws.commons.om.OMElement;
 import org.apache.ws.commons.om.OMNamespace;
-import org.apache.ws.commons.soap.SOAP11Constants;
-import org.apache.ws.commons.soap.SOAP12Constants;
-import org.apache.ws.commons.soap.SOAPConstants;
-import org.apache.ws.commons.soap.SOAPEnvelope;
-import org.apache.ws.commons.soap.SOAPFault;
-import org.apache.ws.commons.soap.SOAPFaultCode;
-import org.apache.ws.commons.soap.SOAPFaultDetail;
-import org.apache.ws.commons.soap.SOAPFaultReason;
-import org.apache.ws.commons.soap.SOAPHeaderBlock;
-import org.apache.ws.commons.soap.SOAPProcessingException;
+import org.apache.ws.commons.soap.*;
 
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
@@ -168,6 +160,11 @@
             processingContext.getAxisOperation().addFaultMessageContext(faultContext, processingContext.getOperationContext());
         }
 
+        ServiceContext serviceContext = processingContext.getServiceContext();
+        if (serviceContext != null) {
+            faultContext.setServiceContext(serviceContext);
+        }
+
         faultContext.setProcessingFault(true);
 
         // there are some information  that the fault thrower wants to pass to the fault path.
@@ -318,10 +315,12 @@
         }
 
         // defaulting to fault code Sender, if no message is available
-        soapFaultCode = ("".equals(soapFaultCode) || (soapFaultCode == null))
-                ? getSenderFaultCode(context.getEnvelope().getNamespace())
-                : soapFaultCode;
-        fault.getCode().getValue().setText(soapFaultCode);
+        if (faultCode == null) {
+            soapFaultCode = ("".equals(soapFaultCode) || (soapFaultCode == null))
+                    ? getSenderFaultCode(context.getEnvelope().getNamespace())
+                    : soapFaultCode;
+            fault.getCode().getValue().setText(soapFaultCode);
+        }
 
         Object faultReason = context.getProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME);
         String message = "";
@@ -340,26 +339,25 @@
         }
 
         // defaulting to reason, unknown, if no reason is available
-        message = ("".equals(message) || (message == null))
-                ? "unknown"
-                : message;
-        fault.getReason().getSOAPText().setLang("en-US");
-        fault.getReason().getSOAPText().setText(message);
+        if (faultReason == null) {
+            message = ("".equals(message) || (message == null))
+                    ? "unknown"
+                    : message;
+            fault.getReason().getSOAPText().setLang("en-US");
+            fault.getReason().getSOAPText().setText(message);
+        }
 
         Object faultRole = context.getProperty(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME);
-
         if (faultRole != null) {
             fault.getRole().setText((String) faultRole);
         }
 
         Object faultNode = context.getProperty(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME);
-
         if (faultNode != null) {
             fault.getNode().setText((String) faultNode);
         }
 
         Object faultDetail = context.getProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME);
-
         if (faultDetail != null) {
             fault.setDetail((SOAPFaultDetail) faultDetail);
         }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/server/SimpleHttpServerConnection.java Sun Mar 19 08:02:43 2006
@@ -291,12 +291,10 @@
     /**
      * Returns the ip address to be used for the replyto epr
      * CAUTION:
-     * This will simply go though the list of available network
-     * interfaces and will return the final address of the final interface
-     * available in the list. This workes fine for the simple cases where
-     * 1.) there's only the loopback interface, where the ip is 127.0.0.1
-     * 2.) there's an additional interface availbale which is used to
-     * access an external network and has only one ip assigned to it.
+     * This will go through all the available network interfaces and will try to return an ip address.
+     * First this will try to get the first IP which is not loopback address (127.0.0.1). If none is found
+     * then this will return this will return 127.0.0.1.
+     * This will <b>not<b> consider IPv6 addresses.
      * <p/>
      * TODO:
      * - Improve this logic to genaralize it a bit more
@@ -307,7 +305,7 @@
      */
     public static String getIpAddress() throws SocketException {
         Enumeration e = NetworkInterface.getNetworkInterfaces();
-        String address = null;
+        String address = "127.0.0.1";
 
         while (e.hasMoreElements()) {
             NetworkInterface netface = (NetworkInterface) e.nextElement();
@@ -315,12 +313,16 @@
 
             while (addresses.hasMoreElements()) {
                 InetAddress ip = (InetAddress) addresses.nextElement();
-
-                // the last available ip address will be returned
-                address = ip.getHostAddress();
+                if (!ip.isLoopbackAddress() && isIP(ip.getHostAddress())) {
+                    return ip.getHostAddress();
+                }
             }
         }
 
         return address;
+    }
+
+    private static boolean isIP(String hostAddress) {
+        return hostAddress.split("[.]").length == 4;
     }
 }

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/FaultHandlingTest.java Sun Mar 19 08:02:43 2006
@@ -31,11 +31,7 @@
 import org.apache.axis2.integration.UtilServer;
 import org.apache.ws.commons.om.OMAbstractFactory;
 import org.apache.ws.commons.om.OMElement;
-import org.apache.ws.commons.soap.SOAP11Constants;
-import org.apache.ws.commons.soap.SOAP12Constants;
-import org.apache.ws.commons.soap.SOAPEnvelope;
-import org.apache.ws.commons.soap.SOAPFactory;
-import org.apache.ws.commons.soap.SOAPFault;
+import org.apache.ws.commons.soap.*;
 import org.apache.ws.commons.soap.impl.llom.builder.StAXSOAPModelBuilder;
 import org.apache.wsdl.WSDLConstants;
 
@@ -75,6 +71,7 @@
 
         String result = sender.sendReceive(payload).toString();
 
+        assertTrue(result.indexOf(FaultHandler.M_FAULT_EXCEPTION) > -1);
         assertTrue(result.indexOf(FaultHandler.DETAIL_MORE_INFO) > -1);
         assertTrue(result.indexOf(FaultHandler.FAULT_REASON) > -1);
 
@@ -88,6 +85,7 @@
 
         result = sender.sendReceive(payload).toString();
 
+        assertTrue(result.indexOf(FaultHandler.M_FAULT_EXCEPTION) > -1);
         assertTrue(result.indexOf(FaultHandler.DETAIL_MORE_INFO) > -1);
         assertTrue(result.indexOf(FaultHandler.FAULT_REASON) > -1);
 

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/util/FaultHandler.java Sun Mar 19 08:02:43 2006
@@ -5,11 +5,7 @@
 import org.apache.axis2.handlers.AbstractHandler;
 import org.apache.ws.commons.om.OMAbstractFactory;
 import org.apache.ws.commons.om.OMElement;
-import org.apache.ws.commons.soap.SOAP12Constants;
-import org.apache.ws.commons.soap.SOAPFactory;
-import org.apache.ws.commons.soap.SOAPFaultDetail;
-import org.apache.ws.commons.soap.SOAPFaultReason;
-import org.apache.ws.commons.soap.SOAPFaultText;
+import org.apache.ws.commons.soap.*;
 
 /*
  * Copyright 2001-2004 The Apache Software Foundation.
@@ -31,6 +27,7 @@
 public class FaultHandler extends AbstractHandler {
     public static final String FAULT_REASON = "This is a test fault message which happened suddenly";
     public static final String DETAIL_MORE_INFO = "This error is a result due to a fake problem in Axis2 engine. Do not worry ;)";
+    public static final String M_FAULT_EXCEPTION = "m:FaultException";
 
     public void invoke(MessageContext msgContext) throws AxisFault {
         // this handler will be used to check the fault handling of Axis2.
@@ -39,6 +36,12 @@
         SOAPFactory soapFac = msgContext.isSOAP11() ? OMAbstractFactory.getSOAP11Factory() : OMAbstractFactory.getSOAP12Factory();
 
         // I have a sudden fake error ;)
+
+        SOAPFaultCode soapFaultCode = soapFac.createSOAPFaultCode();
+        soapFaultCode.declareNamespace("http://someuri.org", "m");
+        SOAPFaultValue soapFaultValue = soapFac.createSOAPFaultValue(soapFaultCode);
+        soapFaultValue.setText(M_FAULT_EXCEPTION);
+
         SOAPFaultText soapFaultText = soapFac.createSOAPFaultText();
         soapFaultText.setLang("en");
         soapFaultText.setText(FAULT_REASON);
@@ -50,6 +53,7 @@
         SOAPFaultDetail faultDetail = soapFac.createSOAPFaultDetail();
         faultDetail.addDetailEntry(detailEntry);
 
+        msgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, soapFaultCode);
         msgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, soapFaultReason);
         msgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, faultDetail);
 

Modified: webservices/axis2/trunk/java/modules/samples/src/sample/mtom/interop/client/InteropClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/src/sample/mtom/interop/client/InteropClient.java?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/src/sample/mtom/interop/client/InteropClient.java (original)
+++ webservices/axis2/trunk/java/modules/samples/src/sample/mtom/interop/client/InteropClient.java Sun Mar 19 08:02:43 2006
@@ -16,14 +16,10 @@
 
 package sample.mtom.interop.client;
 
-import javax.swing.JFrame;
-import javax.swing.WindowConstants;
-import java.awt.Dimension;
-import java.awt.HeadlessException;
-import java.awt.Toolkit;
+import javax.swing.*;
+import java.awt.*;
 
 public class InteropClient extends JFrame {
-
     public InteropClient(String title) throws HeadlessException {
         super(title);
 

Modified: webservices/axis2/trunk/java/modules/tool/script/WSDL2Java.bat
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/tool/script/WSDL2Java.bat?rev=386983&r1=386982&r2=386983&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/script/WSDL2Java.bat (original)
+++ webservices/axis2/trunk/java/modules/tool/script/WSDL2Java.bat Sun Mar 19 08:02:43 2006
@@ -48,13 +48,13 @@
 setlocal EnableDelayedExpansion
 rem loop through the libs and add them to the class path
 set AXIS2_CLASS_PATH=%AXIS2_HOME%
-FOR %%c in (%AXIS2_HOME%\lib\*.jar) DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c
+FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c
 
 rem ----- Execute The Requested Command ---------------------------------------
 echo Using AXIS2_HOME:   %AXIS2_HOME%
 echo Using JAVA_HOME:    %JAVA_HOME%
 set _RUNJAVA="%JAVA_HOME%\bin\java"
 
-%_RUNJAVA% %JAVA_OPTS% -cp %AXIS2_CLASS_PATH% org.apache.axis2.wsdl.WSDL2Java %*
+%_RUNJAVA% %JAVA_OPTS% -cp "%AXIS2_CLASS_PATH%" org.apache.axis2.wsdl.WSDL2Java %*
 endlocal
 :end