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";