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