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>
- * <callout serviceURL="string" [action="string"]>
+ * <callout serviceURL="string"
[action="string"][passHeaders="true|false"]>
* <configuration [axis2xml="string"] [repository="string"]/>?
* <source xpath="expression" | key="string">
* <target xpath="expression" | key="string"/>
@@ -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>
- * <callout serviceURL="string" [action="string"]>
+ * <callout serviceURL="string"
[action="string"][passHeaders="true|false"]>
* <configuration [axis2xml="string"] [repository="string"]/>?
* <source xpath="expression" | key="string">
* <target xpath="expression" | key="string"/>
@@ -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;
+ }
}