You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2007/04/30 14:46:54 UTC

svn commit: r533728 - in /webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform: FaultMediator.java HeaderMediator.java

Author: asankha
Date: Mon Apr 30 05:46:54 2007
New Revision: 533728

URL: http://svn.apache.org/viewvc?view=rev&rev=533728
Log:
make a newly created fault message go to the FaultTo (if available) or the ReplyTo, or else the transport out
support adding of custom simple string value headers

Modified:
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/HeaderMediator.java

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java?view=diff&rev=533728&r1=533727&r2=533728
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java Mon Apr 30 05:46:54 2007
@@ -154,6 +154,15 @@
             log.error(msg);
             throw new SynapseException(af);
         }
+
+        if (synCtx.getFaultTo() != null) {
+            synCtx.setTo(synCtx.getFaultTo());
+        } else if (synCtx.getReplyTo() != null) {
+            synCtx.setTo(synCtx.getReplyTo());
+        } else {
+            synCtx.setTo(null);
+        }
+
         if (shouldTrace) {
             trace.trace("End : Fault mediator");
         }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/HeaderMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/HeaderMediator.java?view=diff&rev=533728&r1=533727&r2=533728
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/HeaderMediator.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/HeaderMediator.java Mon Apr 30 05:46:54 2007
@@ -22,6 +22,9 @@
 import org.apache.axiom.om.xpath.AXIOMXPath;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.*;
@@ -89,8 +92,10 @@
                 } else if (Constants.HEADER_REPLY_TO.equals(qName.getLocalPart())) {
                     synCtx.setReplyTo(new EndpointReference(value));
                 } else {
-                    handleException("Unsupported header : " + qName.getLocalPart());
+                    addCustomHeader(synCtx);
                 }
+            } else {
+                addCustomHeader(synCtx);                
             }
 
         } else {
@@ -123,6 +128,18 @@
             trace.trace("End : Header mediator");
         }
         return true;
+    }
+
+    private void addCustomHeader(MessageContext synCtx) {
+        SOAPEnvelope env = synCtx.getEnvelope();
+            SOAPFactory fac = (SOAPFactory) env.getOMFactory();
+            SOAPHeader header = env.getHeader();
+            if (header == null) {
+                header = fac.createSOAPHeader(env);
+            }
+            SOAPHeaderBlock hb = header.addHeaderBlock(qName.getLocalPart(),
+                fac.createOMNamespace(qName.getNamespaceURI(), qName.getPrefix()));
+            hb.setText(value);
     }
 
     private void removeFromHeaderList(List headersList) {



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