Hi Hiranya,

I have attach a patch to [1] with suggested modifications. A sample and an integration test is also attached to [2].

[1] https://issues.apache.org/jira/browse/SYNAPSE-969
[2] https://issues.apache.org/jira/browse/SYNAPSE-970


On Tue, Aug 20, 2013 at 8:14 AM, Isuru Udana <isudana@gmail.com> wrote:

On Tue, Aug 20, 2013 at 12:13 AM, Hiranya Jayathilaka <hiranya911@gmail.com> wrote:
And one more thing. 

I noticed that when the callout mediator is configured with an endpointKey, the key is resolved only once (at the first message). Try to make it so that the mediator will resolve the key on each message. That way the callout mediator can take advantage of the underlying caching + dynamic endpoint update system.
I will do this modification along with the inline endpoint support.


On Aug 19, 2013, at 8:21 AM, Isuru Udana <isudana@gmail.com> wrote:

Hi Udayanga,

On Mon, Aug 19, 2013 at 7:01 PM, Udayanga Wickramasinghe <mastershield2007@gmail.com> wrote:

On Sun, Aug 18, 2013 at 9:58 AM, Isuru Udana <isudana@gmail.com> wrote:
Hi All,

Currently we have following two main places we use a blocking client to invoke services. 
1. Callout Mediator 
2. Forwarding Message Processor 

Both these components use the axis2 service client to invoke services in a blocking manner. 
Since the implementation is very simple, provided functionality is very limited. 

Currently we have following major limitations. 

* Supports only SOAP 
* Message format conversion is not supported 
* QOS functionality (WS-Security, etc.) are not supported 
* Cannot specify an endpoint as the service endpoint reference (In message processors we can specify an Address endpoint. But none of the other endpoint types and other endpoint functionality is supported) 

I have implemented a new blocking client which can be used as a common blocking sender for both above components. 
This new implementation will provide the following functionality. 

* Support all leaf endpoint types 
* Support for REST 
* Support Endpoint functionality. 
      - Endpoint format conversions (soap11,soap12,pox, etc.) 
      - WS-Security, WS-A 
      - Endpoint Timeout (nhttp transport specific functionality is not supported) 
* message format conversions (ability to use messageType/ContentType properties) 

I have attached this implementation as patch to SYNAPSE-966 [1].
I have also attached a patch[2] to migrate the Callout mediator to this implementation.
A sample with documentation and an integration test is also attached at [3].

This would be a great addition. I think synapse library support for a blocking client would also be a good idea. Specially because many users tend to create complex workflows with Synapse using either service chaining ,etc without any obvious high performance requirement (leveraging asynchronous non blocking capability of Synapse). I think a synapse library would provide a high level abstraction as well as portability for easily creating such workflows. 

I think those service chaining workflows can be simplified by introducing a Callout like behavior for the send mediator.
It will make the service chaining scenarios much simpler and we will able to leverage asynchronous non blocking transports as well.
I have already done significant amount of work on implementing this feature. 
If I get enough time to test the implementation completely before this release, I will provide a patch to review. 


If others interested, I can provide patches to migrate Message processor to this implementation and more samples.


Isuru Udana


Isuru Udana
Software Engineer; WSO2 Inc.; http://wso2.com

email: isudana@gmail.com
blog: http://mytecheye.blogspot.com/
twitter: http://twitter.com/isudana

Hiranya Jayathilaka
Mayhem Lab/RACE Lab;
Dept. of Computer Science, UCSB;  http://cs.ucsb.edu
E-mail: hiranya@cs.ucsb.edu;  Mobile: +1 (805) 895-7443
Blog: http://techfeast-hiranya.blogspot.com

Isuru Udana

Isuru Udana