On Fri, Dec 31, 2010 at 10:08 AM, Hiranya Jayathilaka <[email protected]>wrote:

>
>
> On Fri, Dec 31, 2010 at 6:58 AM, Amila Suriarachchi <[email protected]>wrote:
>
>>
>>
>> On Thu, Dec 30, 2010 at 9:38 PM, Hiranya Jayathilaka <[email protected]>wrote:
>>
>>>
>>>
>>> On Thu, Dec 30, 2010 at 8:46 PM, Amila Suriarachchi <[email protected]>wrote:
>>>
>>>>
>>>>
>>>> On Thu, Dec 30, 2010 at 7:02 PM, Supun Kamburugamuva <[email protected]>wrote:
>>>>
>>>>> You can use a XSLT as well.
>>>>>
>>>>
>>>> Is this means I can't use Enrich mediator?
>>>>
>>>
>>> Enrich mediator is generally used to swap XML fragments in and out of
>>> messages.
>>>
>> you can do a transformation by doing such steps. Let me as this question
>> this way.
>>
>> Lets say I get an xml like this
>>
>> <ns2:
>> CustomerOrderProcessRequest xmlns:ns2="http://brs.carbon.wso2.org";>
>>     <ns2:Customer>
>>         <ns2:name>Amila</ns2:name>
>>         <ns2:rating>0.5</ns2:rating>
>>         <ns2:maxAmount>50</ns2:maxAmount>
>>         <ns2:Order>
>>             <items xmlns="http://pojo.sample.brs/xsd";>
>>                 <price>50.0</price>
>>                 <type>TypeA</type>
>>             </items>
>>             <items xmlns="http://pojo.sample.brs/xsd";>
>>                 <price>60.0</price>
>>                 <type>TypeB</type>
>>             </items>
>>             <ns1:orderID xmlns:ns1="http://pojo.sample.brs/xsd
>> ">Order1</ns1:orderID>
>>         </ns2:Order>
>>         <ns2:Order>
>>             <items xmlns="http://pojo.sample.brs/xsd";>
>>                 <price>50.0</price>
>>                 <type>TypeA</type>
>>             </items>
>>             <items xmlns="http://pojo.sample.brs/xsd";>
>>                 <price>60.0</price>
>>                 <type>TypeA</type>
>>             </items>
>>             <ns1:orderID xmlns:ns1="http://pojo.sample.brs/xsd
>> ">Order2</ns1:orderID>
>>         </ns2:Order>
>>     </ns2:Customer>
>> </ns2:CustomerOrderProcessRequest>
>>
>> And I have an xml property (say myProperty) which contains following xml
>>
>> <ns2:CalculatePriceRequest xmlns:ns2="http://brs.carbon.wso2.org"/>
>>
>> Can I copy the Order elements to above element using enrich mediator?
>>
>
> You have multiple Order elements in the input XML. So I don't think we can.
> At least it's not going to be trivial.
>

Normally if you execute an xpath on Axiom it returns all the matching nodes
isn't it? then why it is so difficult to add that
support to enrich mediator?

Anyway I did my sample using the following esb configuration using XSLT
transformations.

As I understood idea of service chaining is to keep a property indicating
the next sequence to be invoked and use it in a switch mediator to determine
the next path. isn't it?

<proxy name="CustomerOrderService" transports="https http"
startOnLoad="true" trace="disable">
        <target inSequence="CustomerOrderInSequence"
outSequence="CustomerOrderOutSequence"/>
    </proxy>
    <sequence name="CustomerOrderInSequence">
        <property xmlns:ns2="http://brs.carbon.wso2.org"; name="name"
expression="//ns2:CustomerOrderProcessRequest/ns2:Customer/ns2:name/text()"/>
        <property xmlns:ns2="http://brs.carbon.wso2.org"; name="rating"
expression="//ns2:CustomerOrderProcessRequest/ns2:Customer/ns2:rating/text()"/>
        <property xmlns:ns2="http://brs.carbon.wso2.org"; name="maxAmount"
expression="//ns2:CustomerOrderProcessRequest/ns2:Customer/ns2:maxAmount/text()"/>
        <xslt key="conf:/xslt/CustemerOrderInputTransfer.xslt"/>
        <property name="nextSequence" value="OrderSelectorInSequence"
scope="default" type="STRING"/>
        <send>
            <endpoint
name="endpoint_urn_uuid_ABF09DE95F6514C1AF15728013415852-56580331">
                <address uri="
http://localhost:9762/services/PriceCalculatorService"/>
            </endpoint>
        </send>
    </sequence>
    <sequence name="CustomerOrderOutSequence">
        <switch xmlns:ns2="http://org.apache.synapse/xsd"; xmlns:ns="
http://org.apache.synapse/xsd"; xmlns:soapenv="
http://www.w3.org/2003/05/soap-envelope";
source="get-property('nextSequence')">
            <case regex="OrderSelectorInSequence">
                <xslt key="conf:/xslt/OrderSelectorInputTransfer.xslt">
                    <property name="maxAmount"
expression="get-property('maxAmount')"/>
                    <property name="name"
expression="get-property('name')"/>
                    <property name="rating"
expression="get-property('rating')"/>
                </xslt>
                <property name="nextSequence" value="finish" scope="default"
type="STRING"/>
                <send>
                    <endpoint
name="endpoint_urn_uuid_BEE1E79674469465A930760264687891786100296">
                        <address uri="
http://localhost:9762/services/OrderSelectorService/"/>
                    </endpoint>
                </send>
            </case>
            <default>
                <send/>
            </default>
        </switch>
        <drop/>
    </sequence>

thanks,
Amila.


>
> Thanks,
> Hiranya
>
>
>>
>>  Not sure how easy or suitable to implement a transformation using that.
>>>
>>
>> yes we can use transformations but there are not performance wise
>> effective isn't it?
>>
>> As I understood this is what enrich mediator does. Please correct me if I
>> wrong.
>>
>> there is a source xml element which can be soap-header, soap-body, a
>> property or an inline.
>>
>> Then we can specify a part of that xml (say sourceXML) using an XPath.
>>
>> There is a target xml element again can be soap-header, soap-body or
>> property
>>
>> then we can either replace, add as a child or sibling the sourceXML to a
>> given part of the target XML (again given as xml)
>>
>> if so we should be able to many transformations using set of enrich
>> mediators in a performance effective way.
>>
>> thanks,
>> Amila.
>>
>>
>>
>>>
>>> Thanks,
>>> Hiranya
>>>
>>>
>>>>
>>>> thanks,
>>>> Amila.
>>>>
>>>>>
>>>>> Thanks,
>>>>> Supun..
>>>>>
>>>>> On Thu, Dec 30, 2010 at 6:29 PM, Paul Fremantle <[email protected]> wrote:
>>>>> > Do you need performance?
>>>>> > I love using E4X/JS mediator for this sort of thing!
>>>>> >
>>>>> > Paul
>>>>> >
>>>>> > On 30 December 2010 11:40, Amila Suriarachchi <[email protected]>
>>>>> wrote:
>>>>> >>
>>>>> >> hi,
>>>>> >>
>>>>> >> I try to write a sample which uses rules and ESB to process a
>>>>> customer
>>>>> >> order.
>>>>> >>
>>>>> >> For that I have this requirement.
>>>>> >>
>>>>> >> The esb proxy service receives a message like this,
>>>>> >>
>>>>> >> <ns2:CustomerOrderProcessRequest xmlns:ns2="
>>>>> http://brs.carbon.wso2.org";>
>>>>> >>     <ns2:Customer>
>>>>> >>         <ns2:name>Amila</ns2:name>
>>>>> >>         <ns2:rating>0.5</ns2:rating>
>>>>> >>         <ns2:maxAmount>50</ns2:maxAmount>
>>>>> >>         <ns2:Order>
>>>>> >>             <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>                 <price>50.0</price>
>>>>> >>                 <type>TypeA</type>
>>>>> >>             </items>
>>>>> >>             <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>                 <price>60.0</price>
>>>>> >>                 <type>TypeB</type>
>>>>> >>             </items>
>>>>> >>             <ns1:orderID
>>>>> >> xmlns:ns1="http://pojo.sample.brs/xsd";>Order1</ns1:orderID>
>>>>> >>         </ns2:Order>
>>>>> >>         <ns2:Order>
>>>>> >>             <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>                 <price>50.0</price>
>>>>> >>                 <type>TypeA</type>
>>>>> >>             </items>
>>>>> >>             <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>                 <price>60.0</price>
>>>>> >>                 <type>TypeA</type>
>>>>> >>             </items>
>>>>> >>             <ns1:orderID
>>>>> >> xmlns:ns1="http://pojo.sample.brs/xsd";>Order2</ns1:orderID>
>>>>> >>         </ns2:Order>
>>>>> >>     </ns2:Customer>
>>>>> >> </ns2:CustomerOrderProcessRequest>
>>>>> >>
>>>>> >> Then ESB has to send the following message to rule service.
>>>>> >>
>>>>> >> <ns2:CalculatePriceRequest xmlns:ns2="http://brs.carbon.wso2.org";>
>>>>> >>     <ns2:Order>
>>>>> >>         <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>             <price>50.0</price>
>>>>> >>             <type>TypeA</type>
>>>>> >>         </items>
>>>>> >>         <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>             <price>60.0</price>
>>>>> >>             <type>TypeB</type>
>>>>> >>         </items>
>>>>> >>         <ns1:orderID
>>>>> >> xmlns:ns1="http://pojo.sample.brs/xsd";>Order1</ns1:orderID>
>>>>> >>     </ns2:Order>
>>>>> >>     <ns2:Order>
>>>>> >>         <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>             <price>50.0</price>
>>>>> >>             <type>TypeA</type>
>>>>> >>         </items>
>>>>> >>         <items xmlns="http://pojo.sample.brs/xsd";>
>>>>> >>             <price>60.0</price>
>>>>> >>             <type>TypeA</type>
>>>>> >>         </items>
>>>>> >>         <ns1:orderID
>>>>> >> xmlns:ns1="http://pojo.sample.brs/xsd";>Order2</ns1:orderID>
>>>>> >>     </ns2:Order>
>>>>> >> </ns2:CalculatePriceRequest>
>>>>> >>
>>>>> >> Currently I have the following ESB configuration which passes the
>>>>> received
>>>>> >> message as it is.
>>>>> >>
>>>>> >> <proxy name="CustomerOrderService" transports="https http"
>>>>> >> startOnLoad="true" trace="disable">
>>>>> >>         <target inSequence="CustomerOrderInSequence"
>>>>> >> outSequence="CustomerOrderOutSequence"/>
>>>>> >>     </proxy>
>>>>> >>     <sequence name="CustomerOrderInSequence">
>>>>> >>         <send>
>>>>> >>             <endpoint
>>>>> >> name="endpoint_urn_uuid_EA2F12A5E60B83D785297590854239961202342050">
>>>>> >>                 <address
>>>>> >> uri="http://111.223.141.139:9762/services/PriceCalculatorService"/>
>>>>> >>             </endpoint>
>>>>> >>         </send>
>>>>> >>     </sequence>
>>>>> >>     <sequence name="CustomerOrderOutSequence">
>>>>> >>         <send/>
>>>>> >>     </sequence>
>>>>> >>
>>>>> >> I need to get the orders from the received request and create the
>>>>> out put
>>>>> >> message.
>>>>> >> One options is to use the XSLT transformations instead of can I use
>>>>> the
>>>>> >> enrich mediator?
>>>>> >>
>>>>> >> If I use enrich mediator what are the steps?
>>>>> >>
>>>>> >> I tried to do following steps. But seems to be not working.
>>>>> >>
>>>>> >> 1. create a property with empty
>>>>> >> <ns2:CalculatePriceRequest xmlns:ns2="http://brs.carbon.wso2.org";>
>>>>> >>
>>>>> >> 2. Then copy the orders from the soap body to the element property.
>>>>> >> 3. Replace this property om element with the soap body.
>>>>> >>
>>>>> >> thanks,
>>>>> >> Amila.
>>>>> >>
>>>>> >> _______________________________________________
>>>>> >> Carbon-dev mailing list
>>>>> >> [email protected]
>>>>> >> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>> >>
>>>>> >
>>>>> >
>>>>> >
>>>>> > --
>>>>> > Paul Fremantle
>>>>> > CTO and Co-Founder, WSO2
>>>>> > OASIS WS-RX TC Co-chair, VP, Apache Synapse
>>>>> >
>>>>> > Office: +44 844 484 8143
>>>>> > Cell: +44 798 447 4618
>>>>> >
>>>>> > blog: http://pzf.fremantle.org
>>>>> > twitter.com/pzfreo
>>>>> > [email protected]
>>>>> >
>>>>> > wso2.com Lean Enterprise Middleware
>>>>> >
>>>>> > Disclaimer: This communication may contain privileged or other
>>>>> confidential
>>>>> > information and is intended exclusively for the addressee/s. If you
>>>>> are not
>>>>> > the intended recipient/s, or believe that you may have received this
>>>>> > communication in error, please reply to the sender indicating that
>>>>> fact and
>>>>> > delete the copy you received and in addition, you should not print,
>>>>> copy,
>>>>> > retransmit, disseminate, or otherwise use the information contained
>>>>> in this
>>>>> > communication. Internet communications cannot be guaranteed to be
>>>>> timely,
>>>>> > secure, error or virus-free. The sender does not accept liability for
>>>>> any
>>>>> > errors or omissions.
>>>>> >
>>>>> > _______________________________________________
>>>>> > Carbon-dev mailing list
>>>>> > [email protected]
>>>>> > https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>> >
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Supun Kamburugamuva
>>>>> Technical Lead
>>>>> WSO2 Inc.;  http://wso2.org
>>>>> E-mail: [email protected];  Mobile: +94 77 431 3585
>>>>> Blog: http://supunk.blogspot.com
>>>>> _______________________________________________
>>>>> Carbon-dev mailing list
>>>>> [email protected]
>>>>> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Carbon-dev mailing list
>>>> [email protected]
>>>> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Hiranya Jayathilaka
>>> Senior Software Engineer;
>>> WSO2 Inc.;  http://wso2.org
>>> E-mail: [email protected];  Mobile: +94 77 633 3491
>>> Blog: http://techfeast-hiranya.blogspot.com
>>>
>>> _______________________________________________
>>> Carbon-dev mailing list
>>> [email protected]
>>> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>
>>>
>>
>> _______________________________________________
>> Carbon-dev mailing list
>> [email protected]
>> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>
>>
>
>
> --
> Hiranya Jayathilaka
> Senior Software Engineer;
> WSO2 Inc.;  http://wso2.org
> E-mail: [email protected];  Mobile: +94 77 633 3491
> Blog: http://techfeast-hiranya.blogspot.com
>
> _______________________________________________
> Carbon-dev mailing list
> [email protected]
> https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>
>
_______________________________________________
Carbon-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to