Author: hiranya
Date: Sun Aug 11 18:47:16 2013
New Revision: 1512987
URL: http://svn.apache.org/r1512987
Log:
Making it possible to send requests using the To header in the callout
mediator. Patch applied from SYNAPSE-965
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
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/CalloutMediatorSerializationTest.java
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/mediators.xml
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=1512987&r1=1512986&r2=1512987&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
Sun Aug 11 18:47:16 2013
@@ -34,12 +34,11 @@ import java.util.Properties;
* Factory for {@link CalloutMediator} instances.
*
* <pre>
- * <callout serviceURL="string"
[action="string"][passHeaders="true|false"]>
+ * <callout [serviceURL="string"]
[action="string"][passHeaders="true|false"]>
* <configuration [axis2xml="string"] [repository="string"]/>?
* <source xpath="expression" | key="string">
* <target xpath="expression" | key="string"/>
* <enableSec policy="string" | outboundPolicy="String" |
inboundPolicy="String" />?
- * <enableSec policy="string" />?
* </callout>
* </pre>
*/
@@ -81,8 +80,6 @@ public class CalloutMediatorFactory exte
if (attServiceURL != null) {
callout.setServiceURL(attServiceURL.getAttributeValue());
- } else {
- handleException("The 'serviceURL' attribute is required for the
Callout mediator");
}
if (attAction != null) {
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=1512987&r1=1512986&r2=1512987&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
Sun Aug 11 18:47:16 2013
@@ -25,7 +25,7 @@ import org.apache.synapse.mediators.buil
/**
* <pre>
- * <callout serviceURL="string"
[action="string"][passHeaders="true|false"]>
+ * <callout [serviceURL="string"]
[action="string"][passHeaders="true|false"]>
* <configuration [axis2xml="string"] [repository="string"]/>?
* <source xpath="expression" | key="string">
* <target xpath="expression" | key="string"/>
@@ -46,7 +46,9 @@ public class CalloutMediatorSerializer e
OMElement callout = fac.createOMElement("callout", synNS);
saveTracingState(callout, mediator);
- callout.addAttribute(fac.createOMAttribute("serviceURL", nullNS,
mediator.getServiceURL()));
+ if (mediator.getServiceURL() != null) {
+ callout.addAttribute(fac.createOMAttribute("serviceURL", nullNS,
mediator.getServiceURL()));
+ }
if (mediator.getAction() != null) {
callout.addAttribute(fac.createOMAttribute("action", nullNS,
mediator.getAction()));
}
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=1512987&r1=1512986&r2=1512987&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
Sun Aug 11 18:47:16 2013
@@ -44,7 +44,7 @@ import java.util.Iterator;
import java.util.List;
/**
- * <callout serviceURL="string" [action="string"][passHeaders="true|false"]>
+ * <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"/>
@@ -109,7 +109,13 @@ public class CalloutMediator extends Abs
sc.engageModule(SynapseConstants.SECURITY_MODULE_NAME);
}
- options.setTo(new EndpointReference(serviceURL));
+ if (serviceURL != null) {
+ options.setTo(new EndpointReference(serviceURL));
+ } else if (synCtx.getTo() != null && synCtx.getTo().getAddress()
!= null) {
+ options.setTo(new
EndpointReference(synCtx.getTo().getAddress()));
+ } else {
+ handleException("Service URL or 'To' header is required",
synCtx);
+ }
if (action != null) {
options.setAction(action);
Modified:
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/CalloutMediatorSerializationTest.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/CalloutMediatorSerializationTest.java?rev=1512987&r1=1512986&r2=1512987&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/CalloutMediatorSerializationTest.java
(original)
+++
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/CalloutMediatorSerializationTest.java
Sun Aug 11 18:47:16 2013
@@ -90,5 +90,18 @@ public class CalloutMediatorSerializatio
assertTrue(serialization(inputXml, calloutMediatorSerializer));
}
+ public void testCalloutMediatorSerializationScenarioFive() {
+ String inputXml = "<callout xmlns=\"http://ws.apache.org/ns/synapse\"
" +
+ "action=\"urn:getQuote\"><source
xmlns:s11=\"http://schemas.xmlsoap.org/" +
+ "soap/envelope/\"
xmlns:s12=\"http://www.w3.org/2003/05/soap-envelope\" " +
+ "xpath=\"s11:Body/child::*[fn:position()=1] |
s12:Body/child::*[fn:position()=1]\"/>" +
+ "<target
xmlns:s11=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
+ "xmlns:s12=\"http://www.w3.org/2003/05/soap-envelope\"
xpath=\"s11:Body/" +
+ "child::*[fn:position()=1] |
s12:Body/child::*[fn:position()=1]\"/>" +
+ "<enableSec outboundPolicy=\"out_sec_policy\"
inboundPolicy=\"in_sec_policy\"/></callout>";
+ assertTrue(serialization(inputXml, calloutMediatorFactory,
calloutMediatorSerializer));
+ assertTrue(serialization(inputXml, calloutMediatorSerializer));
+ }
+
}
Modified:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/mediators.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/mediators.xml?rev=1512987&r1=1512986&r2=1512987&view=diff
==============================================================================
---
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/mediators.xml
(original)
+++
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/mediators.xml
Sun Aug 11 18:47:16 2013
@@ -812,10 +812,11 @@
current message, or the name of a key/property using which
the response would be
attached to the current message context as a property.
</p>
- <div class="xmlConf"><callout serviceURL="string"
[action="string"]>
+ <div class="xmlConf"><callout [serviceURL="string"]
[action="string"]>
<configuration [axis2xml="string"] [repository="string"]/>?
<source xpath="expression" | key="string">
<target xpath="expression" | key="string"/>
+ <enableSec policy="string" | outboundPolicy="String" |
inboundPolicy="String" />?
</callout></div>
<p>
Since the callout mediator performs a blocking call, it
cannot use the default
@@ -826,8 +827,14 @@
</p>
<p>
To invoke secured services, Callout mediator can be
configured to enable WS-Security
- using the enableSec element. Security policy should be
specified using the policy
- attribute which may point to a registry key or a local
entry.
+ using the enableSec element. Security policy should be
specified using the 'policy'
+ attribute which may point to a registry key or a local
entry. You can also specify
+ two different policies for inbound and outbound messages
(flows). This is done by
+ using the 'inboundPolicy' and 'outboundPolicy' attributes.
+ </p>
+ <p>
+ When the 'serviceURL' attribute is not present, the 'To'
header on the request
+ is used as the target endpoint.
</p>
</subsection>
<subsection name="Clone Mediator" id="Clone">