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>
- * <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;
+ }
}