Synapse
  1. Synapse
  2. SYNAPSE-745

Implement a Collection of Integration Patterns for Synapse

    Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: FUTURE
    • Component/s: Core, Deployment
    • Labels:
    • Environment:
      Any

      Description

      Currently there's an ongoing effort to implement the concept of functions/templates for the Synapse configuration language (SYNAPSE-738). This provides a simple approach for implementing support for various enterprise integration patterns (EIP) in Synapse. One could implement a pattern as a function and then reuse it in various services and message flows in Synapse. To make most out of this, following action items need to be completed:

      1. Make it possible to define any Synapse component (sequences, services, endpoints, local entries) as a reusable function
      2. Implement a library of built-in integration patterns for Synapse (Some of the well known patterns are documented at http://www.eaipatterns.com - It would be great to support most of these in Synapse out of the box)

      Goals
      1. Implement a library of identified set of built-in integration patterns using synapse templates and template libraries
      2. Sample and Test integration into Synapse for eip pattern libararies
      3. Improve Documentation around the eip pattern libararies

      1. SynapseLib_with_classloading.zip
        3 kB
        Udayanga Wickramasinghe
      2. SynapseEipLibSamples.patch
        19 kB
        Malith Dhanushka
      3. SYNAPSE-745-eiplibcore.zip
        12 kB
        Malith Dhanushka
      4. SimpleTestProxy.xml
        0.4 kB
        Udayanga Wickramasinghe
      5. import1.xml
        0.1 kB
        Udayanga Wickramasinghe
      6. EIPSamplesIntegration.patch
        66 kB
        Malith Dhanushka
      7. EIPLibraryDocumentation.patch
        62 kB
        Malith Dhanushka
      8. EIP_SynapseLib.zip
        36 kB
        Malith Dhanushka
      9. EIP_SynapseLib_Initial.zip
        10 kB
        Malith Dhanushka

        Activity

        Hide
        Malith Dhanushka added a comment -

        Hi,

        My name is Malith Dhanushka and I am a final year undergraduate student from University of Moratuwa, Sri Lanka. I am interested in this new feature and I would like to select it as my GSOC 2012 project. Currently I am studying about newly Implemented Function templates in Synapse. I would be grateful If I can have more details/suggestions on the approach and further material to refer.

        Thanks .
        Malith

        Show
        Malith Dhanushka added a comment - Hi, My name is Malith Dhanushka and I am a final year undergraduate student from University of Moratuwa, Sri Lanka. I am interested in this new feature and I would like to select it as my GSOC 2012 project. Currently I am studying about newly Implemented Function templates in Synapse. I would be grateful If I can have more details/suggestions on the approach and further material to refer. Thanks . Malith
        Hide
        Udayanga Wickramasinghe added a comment - - edited

        Hi Malith,
        To give you an introduction , function templates are a mechanism to prototype mediation flows in Synapse..Idea is to group commonly used integration patterns as a set of functions (or templates)..By doing so Synapse users would be able to reuse this functions easily within their mediation flow / sequence by calling up the function as required..Good starting point would be to go through some of the existing documentation and samples on templates in [1] , [2] and [3]..
        Also we are intending to utilize the recently introduced template libraries to implement this collection of reusable patterns..For example it can be a "synapse.lang.eip" library to be deployed on synapse and various eips's can be exposed via the library as function/template modules (ie:- "Split aggregate" , "clone aggregate" , "message filter" , "recipient list" ,etc ). And more of these patterns can be found in http://www.eaipatterns.com

        Regards,
        udayanga
        [1] http://synapse.apache.org/userguide/config.html#Templates
        [2] http://synapse.apache.org/userguide/config.html#TemplateConfig
        [3] http://synapse.apache.org/userguide/samples/sample750.html

        Show
        Udayanga Wickramasinghe added a comment - - edited Hi Malith, To give you an introduction , function templates are a mechanism to prototype mediation flows in Synapse..Idea is to group commonly used integration patterns as a set of functions (or templates)..By doing so Synapse users would be able to reuse this functions easily within their mediation flow / sequence by calling up the function as required..Good starting point would be to go through some of the existing documentation and samples on templates in [1] , [2] and [3] .. Also we are intending to utilize the recently introduced template libraries to implement this collection of reusable patterns..For example it can be a "synapse.lang.eip" library to be deployed on synapse and various eips's can be exposed via the library as function/template modules (ie:- "Split aggregate" , "clone aggregate" , "message filter" , "recipient list" ,etc ). And more of these patterns can be found in http://www.eaipatterns.com Regards, udayanga [1] http://synapse.apache.org/userguide/config.html#Templates [2] http://synapse.apache.org/userguide/config.html#TemplateConfig [3] http://synapse.apache.org/userguide/samples/sample750.html
        Hide
        Udayanga Wickramasinghe added a comment - - edited

        i have updated the set of goals for this project for reference

        Show
        Udayanga Wickramasinghe added a comment - - edited i have updated the set of goals for this project for reference
        Hide
        Gayan Dhanushka added a comment -

        Hi,

        I read about templates and template configurations. I have some questions.

        1) Do I have to create templates for existing Synapse components? If yes for what sort of components would that be?

        2) Is it the case where there are different sets of mediators which I need to make adhere to a certain pattern where it will be easier to call functions by setting the parameters in a easy manner?

        3)Please elaborate the scope of the idea a little bit more.

        Show
        Gayan Dhanushka added a comment - Hi, I read about templates and template configurations. I have some questions. 1) Do I have to create templates for existing Synapse components? If yes for what sort of components would that be? 2) Is it the case where there are different sets of mediators which I need to make adhere to a certain pattern where it will be easier to call functions by setting the parameters in a easy manner? 3)Please elaborate the scope of the idea a little bit more.
        Hide
        Malith Dhanushka added a comment -

        Hi Udayanga,
        Thank you for further clarification of the scope.And it was a great starting point.As far as I understand,

        According to [1] It has newly introduced a function template library and up to now sequence & endpoint templates are implementations of template library which are known patterns.
        So in order to implement eip library do we have to further optimize the newly introduced function template library?

        And as you mentioned we can expose the eip pattern library via a function or a template.And also need to have a invoker mediator(eg- Call-Template) or a concrete function(eg- Template Endpoint) to call up on them.Is it applied to the scope?

        [1] https://issues.apache.org/jira/browse/SYNAPSE-738

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi Udayanga, Thank you for further clarification of the scope.And it was a great starting point.As far as I understand, According to [1] It has newly introduced a function template library and up to now sequence & endpoint templates are implementations of template library which are known patterns. So in order to implement eip library do we have to further optimize the newly introduced function template library? And as you mentioned we can expose the eip pattern library via a function or a template.And also need to have a invoker mediator(eg- Call-Template) or a concrete function(eg- Template Endpoint) to call up on them.Is it applied to the scope? [1] https://issues.apache.org/jira/browse/SYNAPSE-738 Thanks, Malith
        Hide
        Udayanga Wickramasinghe added a comment -

        Hi Malith,
        Yes scope is within using invoker mediator and Template Endpoint , which attribute to entry points for sequence and endpoint templates respectively.. Scope most probably would not go beyond them. What you have to do is identify a collection of well known eip patterns and design a proper implementation methodology using that..
        Regards,
        udayanga

        Show
        Udayanga Wickramasinghe added a comment - Hi Malith, Yes scope is within using invoker mediator and Template Endpoint , which attribute to entry points for sequence and endpoint templates respectively.. Scope most probably would not go beyond them. What you have to do is identify a collection of well known eip patterns and design a proper implementation methodology using that.. Regards, udayanga
        Hide
        Udayanga Wickramasinghe added a comment -

        I intended to give an intro on Synapse libraries but got delayed a bit than i anticipated...So Template libraries are a mechanism to group synapse templates and automatically expose it as a self contained set of function modules..You can consider a template library as a container consisting a set of templates grouped in a particular order..Currently a synapse template library is shipped as a ".zip" file and should be deployed inside {$SYNAPSE_HOME}/repository/conf/synapse-libs . If installed successfully all templates within the library will be accessible to any synapse user..
        Following is a sample skeleton structure of a template library..
        .

        – artifacts.xml
        – com
        `-- synapse
        `-- sample
        `-- SynapseLibTestMediator.class
        – lib
        `-- test-mediator-1.0.0.jar
        – template_dir-1
          – artifact.xml
          – templ1_ns1.xml
        `-- templ2_ns1.xml
        `-- template_dir-2
        – artifact.xml
        – templ1_ns2.xml
        `-- templ2_ns2.xml

        Following are these components at an overview...

        a) artifacts.xml – contains synapse library name , package name information and template groupings
        <artifacts>
        <artifact name="synapse.lib.name" package="synapse.lib.package.name" >
        <dependency artifact="template.group.name" />*
        <description>sample synapse library</description>?
        </artifact>
        </artifacts>

        b) artifact.xml – contains information about each individual template group.. ie: - names of the templates in the group , corresponding configuration file ,etc
        <artifact name="template.group.name" type="synapse/template" >
        <subArtifacts>
        <artifact name="template.name" >
        <file>template_file.xml</file>
        <description>a sample synapse library function </description>?
        </artifact>*
        </subArtifacts>
        </artifact>

        c) template_file.xml – corresponds to each individual template configuration
        d) ./lib --> any classes for class loading
        or can contain the .class files from the root level..

        Also utilizing a a synapse library is a three step process..
        a) create and deploy the library
        b) importing the libary into synapse
        users should deploy a import_lib_name.xml into {$SYNAPSE_HOME}/repository/conf/synapse-config/imports
        c) execute functions of a library using a template invoker
        ie:- <call-template target="synapse.lib.name.template_name">
        <with-param name="..." value="..."/> *
        </call-template>

        With Template libraries in place, idea is to group a identified set of EIP's that can be transported with synapse..So the first step should be to get familiarized with both templates and template libraries very well and on any areas that need improvement wrt the project scope.. I expect that you identify a set of useful EIPs and the function/module interfaces required for designing EIP's and the corresponding design methodology in terms of synapse configurations , templates and template libraries..
        Regards,
        udayanga

        Show
        Udayanga Wickramasinghe added a comment - I intended to give an intro on Synapse libraries but got delayed a bit than i anticipated...So Template libraries are a mechanism to group synapse templates and automatically expose it as a self contained set of function modules..You can consider a template library as a container consisting a set of templates grouped in a particular order..Currently a synapse template library is shipped as a ".zip" file and should be deployed inside {$SYNAPSE_HOME}/repository/conf/synapse-libs . If installed successfully all templates within the library will be accessible to any synapse user.. Following is a sample skeleton structure of a template library.. . – artifacts.xml – com `-- synapse `-- sample `-- SynapseLibTestMediator.class – lib `-- test-mediator-1.0.0.jar – template_dir-1   – artifact.xml   – templ1_ns1.xml `-- templ2_ns1.xml `-- template_dir-2 – artifact.xml – templ1_ns2.xml `-- templ2_ns2.xml Following are these components at an overview... a) artifacts.xml – contains synapse library name , package name information and template groupings <artifacts> <artifact name="synapse.lib.name" package="synapse.lib.package.name" > <dependency artifact="template.group.name" />* <description>sample synapse library</description>? </artifact> </artifacts> b) artifact.xml – contains information about each individual template group.. ie: - names of the templates in the group , corresponding configuration file ,etc <artifact name="template.group.name" type="synapse/template" > <subArtifacts> <artifact name="template.name" > <file>template_file.xml</file> <description>a sample synapse library function </description>? </artifact>* </subArtifacts> </artifact> c) template_file.xml – corresponds to each individual template configuration d) ./lib --> any classes for class loading or can contain the .class files from the root level.. Also utilizing a a synapse library is a three step process.. a) create and deploy the library b) importing the libary into synapse users should deploy a import_lib_name.xml into {$SYNAPSE_HOME}/repository/conf/synapse-config/imports c) execute functions of a library using a template invoker ie:- <call-template target="synapse.lib.name.template_name"> <with-param name="..." value="..."/> * </call-template> With Template libraries in place, idea is to group a identified set of EIP's that can be transported with synapse..So the first step should be to get familiarized with both templates and template libraries very well and on any areas that need improvement wrt the project scope.. I expect that you identify a set of useful EIPs and the function/module interfaces required for designing EIP's and the corresponding design methodology in terms of synapse configurations , templates and template libraries.. Regards, udayanga
        Hide
        Udayanga Wickramasinghe added a comment -

        i am attaching a sample synapse library and configs for reference , herewith..

        Show
        Udayanga Wickramasinghe added a comment - i am attaching a sample synapse library and configs for reference , herewith..
        Hide
        Malith Dhanushka added a comment -

        Hi Udananga,
        Thank you for providing the missing information.Meanwhile I came across synapse libraries implementation which provides the capability of deploying synapse configurations as a .zip file on the fly.
        Is that the point where this new configurations get validated also? (Including anticipated "synapse.lang.eip" library)

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi Udananga, Thank you for providing the missing information.Meanwhile I came across synapse libraries implementation which provides the capability of deploying synapse configurations as a .zip file on the fly. Is that the point where this new configurations get validated also? (Including anticipated "synapse.lang.eip" library) Thanks, Malith
        Hide
        Udayanga Wickramasinghe added a comment -

        Hi Malith,
        yes ,the implementation you have come across (ie:- org.apache.synapse.libraries.*) is where it deploys , validates and builds synapse library artifacts...

        Regards,
        udayanga

        Show
        Udayanga Wickramasinghe added a comment - Hi Malith, yes ,the implementation you have come across (ie:- org.apache.synapse.libraries.*) is where it deploys , validates and builds synapse library artifacts... Regards, udayanga
        Hide
        Malith Dhanushka added a comment -

        Hi,
        Attaching the initial implementation of EIP library.
        Please find the detailed description about the progress in the relevant thread at Dev ML.

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi, Attaching the initial implementation of EIP library. Please find the detailed description about the progress in the relevant thread at Dev ML. Thanks, Malith
        Hide
        Malith Dhanushka added a comment -

        Attaching the final implementation of EIP library for the GSOC project. This can be further enhanced by adding more patterns.

        With the initial implementation followings are the patterns added.

        • Recipient List
        • Splitter
        • Aggregator
        • Callout Block
        • Splitter-Aggregator

        And followings are the newly added patterns with final implementation.

        • Content-Based Router
        • Dynamic Router
        • Wire Tap
        • Scatter-Gather

        Please find the detailed description about each pattern in relevant thread at Dev ML.

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Attaching the final implementation of EIP library for the GSOC project. This can be further enhanced by adding more patterns. With the initial implementation followings are the patterns added. Recipient List Splitter Aggregator Callout Block Splitter-Aggregator And followings are the newly added patterns with final implementation. Content-Based Router Dynamic Router Wire Tap Scatter-Gather Please find the detailed description about each pattern in relevant thread at Dev ML. Thanks, Malith
        Hide
        Malith Dhanushka added a comment -

        Hi,
        Attaching patch by adding samples to showcase each and every patterns added with Synapse EIP Library. Following are the added samples,

        • Sample 850: Introduction to Synapse Callout Block function template
        • Sample 851: Introduction to Synapse Splitter and Aggregator eip function templates
        • Sample 852: Introduction to Synapse Splitter-Agrregator combined function template
        • Sample 853: Introduction to Synapse Scatter-Gather eip function template
        • Sample 854: Introduction to Synapse Wire Tap eip function template
        • Sample 855: Introduction to Synapse Content Based Router eip function template
        • Sample 856: Introduction to Synapse Dynamic Router eip function template
        • Sample 857: Introduction to Synapse Recipient List eip function template

        Thanks
        Malith

        Show
        Malith Dhanushka added a comment - Hi, Attaching patch by adding samples to showcase each and every patterns added with Synapse EIP Library. Following are the added samples, Sample 850: Introduction to Synapse Callout Block function template Sample 851: Introduction to Synapse Splitter and Aggregator eip function templates Sample 852: Introduction to Synapse Splitter-Agrregator combined function template Sample 853: Introduction to Synapse Scatter-Gather eip function template Sample 854: Introduction to Synapse Wire Tap eip function template Sample 855: Introduction to Synapse Content Based Router eip function template Sample 856: Introduction to Synapse Dynamic Router eip function template Sample 857: Introduction to Synapse Recipient List eip function template Thanks Malith
        Hide
        Malith Dhanushka added a comment -

        Hi,
        Attaching patch by including all the previously added samples to the Synapse test automation framework.

        Please review and commit,

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi, Attaching patch by including all the previously added samples to the Synapse test automation framework. Please review and commit, Thanks, Malith
        Hide
        Malith Dhanushka added a comment -

        Hi,
        Attaching patch of documentation by addressing following areas.
        (All the work related to this GSOC project)

        • Synapse Template Libraries
          Contains details about the structure of template library and how to utilize a template library.
        • Synapse Enterprise Integration Patterns library
          Contains detailed description about each pattern in EIP library with describing their usage, functionality and configuration syntax.
        • Documentation related to following samples.
          Sample 850
          Sample 851
          Sample 852
          Sample 853
          Sample 854
          Sample 855
          Sample 856
          Sample 857

        Please review and commit,

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi, Attaching patch of documentation by addressing following areas. (All the work related to this GSOC project) Synapse Template Libraries Contains details about the structure of template library and how to utilize a template library. Synapse Enterprise Integration Patterns library Contains detailed description about each pattern in EIP library with describing their usage, functionality and configuration syntax. Documentation related to following samples. Sample 850 Sample 851 Sample 852 Sample 853 Sample 854 Sample 855 Sample 856 Sample 857 Please review and commit, Thanks, Malith
        Hide
        Andreas Veithen added a comment -

        I tested samples 851, 852 and 853 and they all fail with the following error:

        stockquote:
        [java] 2012-09-18 09:14:59,965 [-] [main] INFO MailTransportSender MAILTO Sender started
        [java] 2012-09-18 09:14:59,974 [-] [main] INFO JMSSender JMS Sender started
        [java] 2012-09-18 09:14:59,975 [-] [main] INFO JMSSender JMS Transport Sender initialized...
        [java] org.apache.axis2.AxisFault: The input stream for an incoming message is null.
        [java] at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:93)
        [java] at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:68)
        [java] at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:347)
        [java] at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414)
        [java] at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
        [java] at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
        [java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:533)
        [java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:509)
        [java] at samples.userguide.StockQuoteClient.executeClient(Unknown Source)
        [java] at samples.userguide.StockQuoteClient.main(Unknown Source)

        Nothing is logged by Synapse.

        Show
        Andreas Veithen added a comment - I tested samples 851, 852 and 853 and they all fail with the following error: stockquote: [java] 2012-09-18 09:14:59,965 [-] [main] INFO MailTransportSender MAILTO Sender started [java] 2012-09-18 09:14:59,974 [-] [main] INFO JMSSender JMS Sender started [java] 2012-09-18 09:14:59,975 [-] [main] INFO JMSSender JMS Transport Sender initialized... [java] org.apache.axis2.AxisFault: The input stream for an incoming message is null. [java] at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:93) [java] at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:68) [java] at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:347) [java] at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414) [java] at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) [java] at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150) [java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:533) [java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:509) [java] at samples.userguide.StockQuoteClient.executeClient(Unknown Source) [java] at samples.userguide.StockQuoteClient.main(Unknown Source) Nothing is logged by Synapse.
        Hide
        Hudson added a comment -

        Integrated in Synapse - Trunk #4438 (See https://builds.apache.org/job/Synapse%20-%20Trunk/4438/)
        SYNAPSE-745: Committed EIPLibraryDocumentation.patch. Note that I didn't review the documentation; I just need it to validate the samples with respect to SYNAPSE-905. (Revision 1387006)

        Result = SUCCESS
        veithen :
        Files :

        • /synapse/trunk/java/modules/documentation/src/site/site.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample850.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample851.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample852.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample853.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample854.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample855.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample856.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample857.xml
        • /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/template_library.xml
        Show
        Hudson added a comment - Integrated in Synapse - Trunk #4438 (See https://builds.apache.org/job/Synapse%20-%20Trunk/4438/ ) SYNAPSE-745 : Committed EIPLibraryDocumentation.patch. Note that I didn't review the documentation; I just need it to validate the samples with respect to SYNAPSE-905 . (Revision 1387006) Result = SUCCESS veithen : Files : /synapse/trunk/java/modules/documentation/src/site/site.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample850.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample851.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample852.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample853.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample854.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample855.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample856.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample857.xml /synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/template_library.xml
        Hide
        Malith Dhanushka added a comment -

        Hi,
        Attaching patches by including few fixes for custom mediators, sample 856 and documentation.

        Please review and commit.

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi, Attaching patches by including few fixes for custom mediators, sample 856 and documentation. Please review and commit. Thanks, Malith
        Hide
        Udayanga Wickramasinghe added a comment -

        Hi Malith,
        looks good.. committed core patch under revision 1395449. I will commit the document patch after some review. Thank you for the contribution made. Looking forward to your contributions in the future as well..
        regards,
        udayanga

        Show
        Udayanga Wickramasinghe added a comment - Hi Malith, looks good.. committed core patch under revision 1395449. I will commit the document patch after some review. Thank you for the contribution made. Looking forward to your contributions in the future as well.. regards, udayanga
        Hide
        Hudson added a comment -

        Integrated in Synapse - Trunk #4478 (See https://builds.apache.org/job/Synapse%20-%20Trunk/4478/)
        committing patch https://issues.apache.org/jira/browse/SYNAPSE-745 for libarary based EIP patterns (Revision 1395449)

        Result = SUCCESS
        uswick :
        Files :

        • /synapse/trunk/java/modules/core/pom.xml
        • /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip
        • /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/CalloutBlockMediator.java
        • /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/ContentBasedRouterMediator.java
        • /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/DynamicRouterMediator.java
        • /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/EIPUtils.java
        • /synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eipcore-lib.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eiptest-lib.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/artifacts.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/artifact.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_aggregator.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_callout_block.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_content_based_router.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_dynamic_router.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_recipient_list.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_scatter_gather.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_splitter.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_splitter_aggregator.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement/artifact.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement/template_wire_tap.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/artifacts.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement/artifact.xml
        • /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement/template_splitter.xml
        Show
        Hudson added a comment - Integrated in Synapse - Trunk #4478 (See https://builds.apache.org/job/Synapse%20-%20Trunk/4478/ ) committing patch https://issues.apache.org/jira/browse/SYNAPSE-745 for libarary based EIP patterns (Revision 1395449) Result = SUCCESS uswick : Files : /synapse/trunk/java/modules/core/pom.xml /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/CalloutBlockMediator.java /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/ContentBasedRouterMediator.java /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/DynamicRouterMediator.java /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/libraries/eip/EIPUtils.java /synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/libraries/eip/AbstractEipLibTestCase.java /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eip-lib.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eipcore-lib.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/assembly/assemble-eiptest-lib.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/artifacts.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/artifact.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eip-lib/eip_systemManagement/template_splitter.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/artifacts.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/artifact.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_aggregator.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_callout_block.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_content_based_router.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_dynamic_router.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_recipient_list.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_scatter_gather.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_splitter.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_messageRouting/template_splitter_aggregator.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement/artifact.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eipcore-lib/eip_systemManagement/template_wire_tap.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/artifacts.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement/artifact.xml /synapse/trunk/java/modules/core/src/test/resources/synapse-libraries/synapse-eiptest-lib/eip_systemManagement/template_splitter.xml
        Hide
        Malith Dhanushka added a comment -

        Hi Udayanga,

        It's with great pleasure i continue my contribution in future. I really appreciate and thankful for your great support throughout the project.

        If i bit elaborate more about newly introduced parameter syntax of,

        • Content Based Router
          parameters - routing_exp
          match_content ( syntax - "IBM:cnd1_seq,MSFT:cnd2_seq;cnd3_seq"
          User can define multiple matching conditions using "," splitter. regular expressions and target sequence should be separated by inserting":". And finally default sequence needs to be defined after inserting ";". If there is no any target sequence defined for a particular regular expression , default it will be mediated to the main sequence)
        • Dynamic Router
          parameters - conditions ( syntax - "header=foo:bar.* {AND}url=/services/;seq=seq1,header=header1:bar.{OR}header=header1:foo.;seq=seq2,header=header2:foo.*;seq=seq3"
          User can define multiple routing rules by using "," splitter. To match HTTP headers use "header=regEx:seqRef" . header source and regular expression should be separated by inserting ":" .To match HTTP url, use url=/url . Then target sequence needs to be defined after inserting ";" . Also one can use"{AND}

          "as to specify logical AND , "

          {OR}

          " as to specify logical OR to match multiple headers and url in expression)

        Thanks,
        Malith

        Show
        Malith Dhanushka added a comment - Hi Udayanga, It's with great pleasure i continue my contribution in future. I really appreciate and thankful for your great support throughout the project. If i bit elaborate more about newly introduced parameter syntax of, Content Based Router parameters - routing_exp match_content ( syntax - "IBM:cnd1_seq,MSFT:cnd2_seq;cnd3_seq" User can define multiple matching conditions using "," splitter. regular expressions and target sequence should be separated by inserting":". And finally default sequence needs to be defined after inserting ";". If there is no any target sequence defined for a particular regular expression , default it will be mediated to the main sequence) Dynamic Router parameters - conditions ( syntax - "header=foo:bar.* {AND}url=/services/;seq=seq1,header=header1:bar. {OR}header=header1:foo. ;seq=seq2,header=header2:foo.*;seq=seq3" User can define multiple routing rules by using "," splitter. To match HTTP headers use "header=regEx:seqRef" . header source and regular expression should be separated by inserting ":" .To match HTTP url, use url=/url . Then target sequence needs to be defined after inserting ";" . Also one can use"{AND} "as to specify logical AND , " {OR} " as to specify logical OR to match multiple headers and url in expression) Thanks, Malith

          People

          • Assignee:
            Unassigned
            Reporter:
            Hiranya Jayathilaka
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:

              Development