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/02 05:35:53 UTC

svn commit: r382295 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: AxisFault.java engine/AxisEngine.java fault/FaultCode.java

Author: chinthaka
Date: Wed Mar  1 20:35:52 2006
New Revision: 382295

URL: http://svn.apache.org/viewcvs?rev=382295&view=rev
Log:
Fixing to get the fault information from AxisFault.
Some one has changed the internals of AxisFault and has not done a good job to integrate that with fault handling. This has broken the linkage between Axis2 fault handling and AxisFault. Better to be more responsible than this :(.

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/AxisFault.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/fault/FaultCode.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/AxisFault.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/AxisFault.java?rev=382295&r1=382294&r2=382295&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/AxisFault.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/AxisFault.java Wed Mar  1 20:35:52 2006
@@ -205,6 +205,10 @@
         reasons.add(text, language);
     }
 
+    public String getReason() {
+        return reasons.getFirstReasonText();
+    }
+
     /**
      * Iterate over all of the headers
      *
@@ -272,8 +276,8 @@
         return detail;
     }
 
-    public String getFaultCode() {
-        return faultCode.getValueString();
+    public QName getFaultCode() {
+        return faultCode.getValue();
     }
 
     /**

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=382295&r1=382294&r2=382295&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 Wed Mar  1 20:35:52 2006
@@ -265,12 +265,19 @@
         Object faultCode = context.getProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME);
         String soapFaultCode = "";
 
+        Throwable exception = null;
         if (faultCode != null) {
             fault.setCode((SOAPFaultCode) faultCode);
         } else if (soapException != null) {
             soapFaultCode = soapException.getFaultCode();
-        } else if (e instanceof AxisFault) {
-            soapFaultCode = ((AxisFault) e).getFaultCode();
+        } else if ((exception = e) instanceof AxisFault || (exception = e.getCause()) instanceof AxisFault) {
+            QName faultCodeQName = ((AxisFault) exception).getFaultCode();
+            String prefix = faultCodeQName.getPrefix();
+            String uri = faultCodeQName.getNamespaceURI();
+            prefix = prefix == null || "".equals(prefix) ? Constants.AXIS2_NAMESPACE_PREFIX : prefix;
+            uri = uri == null || "".equals(uri) ? Constants.AXIS2_NAMESPACE_URI : uri;
+            soapFaultCode = prefix + ":" + faultCodeQName.getLocalPart();
+            fault.declareNamespace(uri, prefix);
         }
 
         // defaulting to fault code Sender, if no message is available
@@ -288,7 +295,9 @@
         } else if (soapException != null) {
             message = soapException.getMessage();
         } else if (e instanceof AxisFault) {
-            message = e.getMessage();
+            message = ((AxisFault) e).getReason();
+            message = message != null && "".equals(message) ? message : e.getMessage();
+
         }
 
         // defaulting to reason, unknown, if no reason is available
@@ -499,9 +508,9 @@
         // TODO: Make this clearer - should we have transport senders and messagereceivers as Handlers?
         if (!msgContext.isPaused()) {
 
-//            msgContext.setExecutionChain((ArrayList) msgContext.getConfigurationContext().getAxisConfiguration().getOutFaultFlow().clone());
-//            msgContext.setFLOW(MessageContext.OUT_FLOW);
-//            invoke(msgContext);
+            msgContext.setExecutionChain((ArrayList) msgContext.getConfigurationContext().getAxisConfiguration().getOutFaultFlow().clone());
+            msgContext.setFLOW(MessageContext.OUT_FLOW);
+            invoke(msgContext);
 
             // Actually send the SOAP Fault
             TransportSender sender = msgContext.getTransportOut().getSender();

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/fault/FaultCode.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/fault/FaultCode.java?rev=382295&r1=382294&r2=382295&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/fault/FaultCode.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/fault/FaultCode.java Wed Mar  1 20:35:52 2006
@@ -24,7 +24,7 @@
 import javax.xml.namespace.QName;
 
 public class FaultCode extends AbstractFaultCode {
-    String value;
+    QName value;
 
     /**
      * simple constructor
@@ -62,11 +62,15 @@
     }
 
     public String getValueString() {
-        return value;
+        return value.getLocalPart();
     }
 
     public void setValue(QName value) {
-        setValueString(value.toString());
+        this.value = value;
+    }
+
+    public QName getValue() {
+        return value;
     }
 
     /**
@@ -75,8 +79,6 @@
      * @param value
      */
     public void setValueString(String value) {
-        QName newName = new QName(value);
-
-        this.value = newName.toString();
+       this.value = new QName(value);
     }
 }