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
