Author: asankha
Date: Tue Jan 13 10:23:31 2009
New Revision: 734207

URL: http://svn.apache.org/viewvc?rev=734207&view=rev
Log:
fix SYNAPSE-498

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
    
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java
    
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=734207&r1=734206&r2=734207&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
 Tue Jan 13 10:23:31 2009
@@ -28,7 +28,7 @@
  * Global constants for the Apache Synapse project
  */
 public final class SynapseConstants {
-
+    public static final String TRUE = "TRUE";
     /** The Synapse namespace */
     public static final String SYNAPSE_NAMESPACE = 
"http://ws.apache.org/ns/synapse";;
     /** An OMNamespace object for the Synapse NS */
@@ -70,6 +70,10 @@
     public static final String HEADER_RELATES_TO = "RelatesTo";
     /** Refers to the MessageID header */
     public static final String HEADER_MESSAGE_ID = "MessageID";
+    /** Refers to the property name for which the get-property function would 
return
+     * true, if the message is a fault
+     */
+    public static final String PROPERTY_FAULT = "FAULT";
     /** Message format: pox, soap11, soap12 */
     public static final String PROPERTY_MESSAGE_FORMAT = "MESSAGE_FORMAT";
     /** WSDL operation name **/

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java?rev=734207&r1=734206&r2=734207&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/GetPropertyFunction.java
 Tue Jan 13 10:23:31 2009
@@ -21,6 +21,7 @@
 
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.transport.base.BaseConstants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.SynapseConstants;
@@ -212,6 +213,20 @@
                 } else {
                     return NULL_STRING;
                 }
+            } else if (SynapseConstants.PROPERTY_FAULT.equals(key)) {
+                if (synCtx.getEnvelope().hasFault()) {
+                    return SynapseConstants.TRUE;
+                } else if (synCtx instanceof Axis2MessageContext) {
+                    org.apache.axis2.context.MessageContext axis2MessageContext
+                        = ((Axis2MessageContext) 
synCtx).getAxis2MessageContext();
+                    if 
(axis2MessageContext.getProperty(BaseConstants.FAULT_MESSAGE) != null
+                        && SynapseConstants.TRUE.equals(
+                            
axis2MessageContext.getProperty(BaseConstants.FAULT_MESSAGE))) {
+                        return SynapseConstants.TRUE;
+                    }
+                } else {
+                    return NULL_STRING;
+                }
             } else if (SynapseConstants.PROPERTY_MESSAGE_FORMAT.equals(key)) {
                 if (synCtx.isDoingPOX())
                     return SynapseConstants.FORMAT_POX;

Modified: 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java?rev=734207&r1=734206&r2=734207&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ClientWorker.java
 Tue Jan 13 10:23:31 2009
@@ -198,8 +198,11 @@
             responseMsgCtx.setEnvelope(envelope);
             // copy the HTTP status code as a message context property with 
the key HTTP_SC to be
             // used at the sender to set the propper status code when passing 
the message
-            responseMsgCtx.setProperty(NhttpConstants.HTTP_SC,
-                    this.response.getStatusLine().getStatusCode());
+            int statusCode = this.response.getStatusLine().getStatusCode();
+            responseMsgCtx.setProperty(NhttpConstants.HTTP_SC, statusCode);
+            if (statusCode >= 400) {
+                responseMsgCtx.setProperty(NhttpConstants.FAULT_MESSAGE, 
NhttpConstants.TRUE);
+            }
             responseMsgCtx.setProperty(NhttpConstants.NON_BLOCKING_TRANSPORT, 
true);
 
             // process response received

Modified: 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=734207&r1=734206&r2=734207&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
 Tue Jan 13 10:23:31 2009
@@ -20,6 +20,12 @@
 package org.apache.synapse.transport.nhttp;
 
 public class NhttpConstants {
+    public static final String TRUE = "TRUE";
+    /**
+     * A message context property indicating "TRUE", if a transport or the 
message builder
+     * has information that the current message is a fault (e.g. SOAP faults, 
non-HTTP 2xx, etc)
+     */
+    public static final String FAULT_MESSAGE = "FAULT_MESSAGE"; // corresponds 
with BaseConstants
     public static final String SC_ACCEPTED = "SC_ACCEPTED";
     public static final String HTTP_SC = "HTTP_SC";
     public static final String FORCE_HTTP_1_0 = "FORCE_HTTP_1.0";


Reply via email to