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 am...@apache.org on 2008/03/09 05:47:21 UTC

svn commit: r635169 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: AxisFault.java Constants.java engine/AxisEngine.java receivers/AbstractMessageReceiver.java

Author: amilas
Date: Sat Mar  8 20:47:20 2008
New Revision: 635169

URL: http://svn.apache.org/viewvc?rev=635169&view=rev
Log:
this change do not make any effect to the axis2 excecution paths. Here I added some constants to identify the 
AxisFault types. This is very important for an RM Implementation. Added resumeSendFault method to resume fault 
flows

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java?rev=635169&r1=635168&r2=635169&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/AxisFault.java Sat Mar  8 20:47:20 2008
@@ -620,4 +620,17 @@
     public String getMessage() {
         return message;
     }
+
+    /**
+     * this field is used to identify the axis2 fault type
+     */
+    private int faultType;
+
+    public int getFaultType() {
+        return faultType;
+    }
+
+    public void setFaultType(int faultType) {
+        this.faultType = faultType;
+    }
 }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?rev=635169&r1=635168&r2=635169&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Sat Mar  8 20:47:20 2008
@@ -238,6 +238,14 @@
     public static final String DEFAULT_REST_PATH = "rest";
     public static final String DEFAULT_SERVICES_PATH = "services";
 
+    public static final int APPLICATION_FAULT = 1;
+    public static final int TRANSPORT_FAULT = 2;
+    public static final int SOAP_PROCESSING_FAULT = 3;
+
+    public static final String APPLICATION_FAULT_STRING = "applicationFault";
+    public static final String TRANSPORT_FAULT_STRING = "transportFault";
+    public static final String SOAP_PROCESSING_FAULT_STRING = "soapProcessingFault";
+
     /**
      * Field Builder Selector
      */

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?rev=635169&r1=635168&r2=635169&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Sat Mar  8 20:47:20 2008
@@ -511,6 +511,68 @@
         }
     }
 
+    /**
+     * here we assume that it is resume from an operation level handler
+     * @param msgContext
+     * @throws AxisFault
+     */
+    public static void resumeSendFault(MessageContext msgContext) throws AxisFault{
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+            log.trace(msgContext.getLogIDString() + " resumeSendFault:" + msgContext.getMessageID());
+        }
+        OperationContext opContext = msgContext.getOperationContext();
+
+        if (opContext != null) {
+
+            try {
+                InvocationResponse pi = invoke(msgContext, RESUMING_EXECUTION);
+
+                if (pi.equals(InvocationResponse.SUSPEND)) {
+                    log.warn(msgContext.getLogIDString() +
+                            " The resumption of this flow may function incorrectly, as the OutFaultFlow will not be used");
+                    return;
+                } else if (pi.equals(InvocationResponse.ABORT)) {
+                    flowComplete(msgContext);
+                    return;
+                } else if (!pi.equals(InvocationResponse.CONTINUE)) {
+                    String errorMsg =
+                            "Unrecognized InvocationResponse encountered in AxisEngine.sendFault()";
+                    log.error(msgContext.getLogIDString() + " " + errorMsg);
+                    throw new AxisFault(errorMsg);
+                }
+            } catch (AxisFault e) {
+                msgContext.setFailureReason(e);
+                flowComplete(msgContext);
+                throw e;
+            }
+        }
+
+        msgContext.setExecutionChain((ArrayList) msgContext.getConfigurationContext()
+                .getAxisConfiguration().getOutFaultFlowPhases().clone());
+        msgContext.setFLOW(MessageContext.OUT_FAULT_FLOW);
+        InvocationResponse pi = invoke(msgContext, NOT_RESUMING_EXECUTION);
+
+        if (pi.equals(InvocationResponse.CONTINUE)) {
+            // Actually send the SOAP Fault
+            TransportOutDescription transportOut = msgContext.getTransportOut();
+            if (transportOut == null) {
+                throw new AxisFault("Transport out has not been set");
+            }
+            TransportSender sender = transportOut.getSender();
+
+            sender.invoke(msgContext);
+            flowComplete(msgContext);
+        } else if (pi.equals(InvocationResponse.SUSPEND)) {
+        } else if (pi.equals(InvocationResponse.ABORT)) {
+            flowComplete(msgContext);
+        } else {
+            String errorMsg =
+                    "Unrecognized InvocationResponse encountered in AxisEngine.sendFault()";
+            log.error(msgContext.getLogIDString() + " " + errorMsg);
+            throw new AxisFault(errorMsg);
+        }
+    }
+
 
     /**
      * This class is used when someone invoke a service invocation with two transports

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java?rev=635169&r1=635168&r2=635169&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractMessageReceiver.java Sat Mar  8 20:47:20 2008
@@ -100,6 +100,7 @@
                     !WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(messageCtx.getAxisOperation().getMessageExchangePattern())) {
                 log.error(fault);
             } else {
+                fault.setFaultType(Constants.APPLICATION_FAULT);
                 throw fault;
             }
         } finally {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org