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>
- * &lt;callout serviceURL="string" 
[action="string"][passHeaders="true|false"]&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;
  *      &lt;enableSec policy="string" | outboundPolicy="String" | 
inboundPolicy="String" /&gt;?
- *      &lt;enableSec policy="string" /&gt;?
  * &lt;/callout&gt;
  * </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>
- * &lt;callout serviceURL="string" 
[action="string"][passHeaders="true|false"]&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;
@@ -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">&lt;callout serviceURL="string" 
[action="string"]&gt;
+                <div class="xmlConf">&lt;callout [serviceURL="string"] 
[action="string"]&gt;
     &lt;configuration [axis2xml="string"] [repository="string"]/&gt;?
     &lt;source xpath="expression" | key="string"&gt;
     &lt;target xpath="expression" | key="string"/&gt;
+    &lt;enableSec policy="string" | outboundPolicy="String" | 
inboundPolicy="String" /&gt;?
 &lt;/callout&gt;</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">


Reply via email to