You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2012/01/03 11:39:24 UTC

svn commit: r1226730 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: config/xml/CalloutMediatorFactory.java config/xml/CalloutMediatorSerializer.java mediators/builtin/CalloutMediator.java

Author: hiranya
Date: Tue Jan  3 10:39:24 2012
New Revision: 1226730

URL: http://svn.apache.org/viewvc?rev=1226730&view=rev
Log:
Making the callout mediator capable of passing on the headers

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorFactory.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorSerializer.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorFactory.java?rev=1226730&r1=1226729&r2=1226730&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorFactory.java Tue Jan  3 10:39:24 2012
@@ -21,6 +21,7 @@ package org.apache.synapse.config.xml;
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
+import org.apache.axis2.util.JavaUtils;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.mediators.builtin.CalloutMediator;
 import org.jaxen.JaxenException;
@@ -33,7 +34,7 @@ import java.util.Properties;
  * Factory for {@link CalloutMediator} instances.
  * 
  * <pre>
- * &lt;callout serviceURL="string" [action="string"]&gt;
+ * &lt;callout serviceURL="string" [action="string"][passHeaders="true|false"]&gt;
  *      &lt;configuration [axis2xml="string"] [repository="string"]/&gt;?
  *      &lt;source xpath="expression" | key="string"&gt;
  *      &lt;target xpath="expression" | key="string"/&gt;
@@ -48,6 +49,7 @@ public class CalloutMediatorFactory exte
     private static final QName ATT_ACTION = new QName("action");
     private static final QName ATT_AXIS2XML = new QName("axis2xml");
     private static final QName ATT_REPOSITORY = new QName("repository");
+    private static final QName ATT_PASS_HEADERS = new QName("passHeaders");
     private static final QName Q_CONFIG
             = new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "configuration");
     private static final QName Q_SOURCE
@@ -61,6 +63,7 @@ public class CalloutMediatorFactory exte
 
         OMAttribute attServiceURL = elem.getAttribute(ATT_URL);
         OMAttribute attAction     = elem.getAttribute(ATT_ACTION);
+        OMAttribute attPassHeaders = elem.getAttribute(ATT_PASS_HEADERS);
         OMElement   configElt     = elem.getFirstChildWithName(Q_CONFIG);
         OMElement   sourceElt     = elem.getFirstChildWithName(Q_SOURCE);
         OMElement   targetElt     = elem.getFirstChildWithName(Q_TARGET);
@@ -75,6 +78,11 @@ public class CalloutMediatorFactory exte
             callout.setAction(attAction.getAttributeValue());
         }
 
+        if (attPassHeaders != null &&
+                JavaUtils.isTrueExplicitly(attPassHeaders.getAttributeValue())) {
+            callout.setPassHeaders(true);
+        }
+
         if (configElt != null) {
 
             OMAttribute axis2xmlAttr = configElt.getAttribute(ATT_AXIS2XML);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorSerializer.java?rev=1226730&r1=1226729&r2=1226730&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/CalloutMediatorSerializer.java Tue Jan  3 10:39:24 2012
@@ -25,7 +25,7 @@ import org.apache.synapse.mediators.buil
 
 /**
  * <pre>
- * &lt;callout serviceURL="string" [action="string"]&gt;
+ * &lt;callout serviceURL="string" [action="string"][passHeaders="true|false"]&gt;
  *      &lt;configuration [axis2xml="string"] [repository="string"]/&gt;?
  *      &lt;source xpath="expression" | key="string"&gt;
  *      &lt;target xpath="expression" | key="string"/&gt;
@@ -62,6 +62,10 @@ public class CalloutMediatorSerializer e
             callout.addChild(config);
         }
 
+        if (mediator.isPassHeaders()) {
+            callout.addAttribute(fac.createOMAttribute("passHeaders", nullNS, "true"));
+        }
+
         OMElement source = fac.createOMElement("source", synNS, callout);
         if (mediator.getRequestXPath() != null) {
             SynapseXPathSerializer.serializeXPath(mediator.getRequestXPath(), source, "xpath");

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java?rev=1226730&r1=1226729&r2=1226730&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java Tue Jan  3 10:39:24 2012
@@ -21,6 +21,7 @@ package org.apache.synapse.mediators.bui
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNode;
+import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.transport.http.HTTPConstants;
@@ -39,10 +40,11 @@ import org.apache.synapse.util.MessageHe
 import org.apache.synapse.util.xpath.SynapseXPath;
 import org.jaxen.JaxenException;
 
+import java.util.Iterator;
 import java.util.List;
 
 /**
- * <callout serviceURL="string" [action="string"]>
+ * <callout serviceURL="string" [action="string"][passHeaders="true|false"]>
  *      <configuration [axis2xml="string"] [repository="string"]/>?
  *      <source xpath="expression" | key="string"> <!-- key can be a MC property or entry key -->
  *      <target xpath="expression" | key="string"/>
@@ -59,6 +61,7 @@ public class CalloutMediator extends Abs
     private String targetKey = null;
     private String clientRepository = null;
     private String axis2xml = null;
+    private boolean passHeaders = false;
     public final static String DEFAULT_CLIENT_REPO = "./samples/axis2Client/client_repo";
     public final static String DEFAULT_AXIS2_XML = "./samples/axis2Client/client_repo/conf/axis2.xml";
 
@@ -93,6 +96,16 @@ public class CalloutMediator extends Abs
                 }
             }
 
+            if (passHeaders) {
+                SOAPHeader header = synCtx.getEnvelope().getHeader();
+                if (header != null) {
+                    Iterator headerElements = header.cloneOMElement().getChildElements();
+                    while (headerElements.hasNext()) {
+                        sc.addHeader((OMElement) headerElements.next());
+                    }
+                }
+            }
+
             options.setProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
             sc.setOptions(options);
@@ -299,4 +312,12 @@ public class CalloutMediator extends Abs
     public void setAxis2xml(String axis2xml) {
         this.axis2xml = axis2xml;
     }
+
+    public boolean isPassHeaders() {
+        return passHeaders;
+    }
+
+    public void setPassHeaders(boolean passHeaders) {
+        this.passHeaders = passHeaders;
+    }
 }