Hi, On Wed, Nov 24, 2010 at 3:08 PM, Ruwan Linton <[email protected]>wrote:
> So the property synapse.xpath.var.extensions can have more than one value > right, how do you achieve that, is that a comma separated value set?? yes comma seperated :) Regards, Udayanga > > Thanks, > Ruwan > > > On Wed, Nov 24, 2010 at 3:03 PM, Udayanga Wickramasinghe < > [email protected]> wrote: > >> Hi , >> >> On Wed, Nov 24, 2010 at 2:30 PM, Ruwan Linton <[email protected]>wrote: >> >>> Hi Udayanga, >>> >>> From a users point of view how can I register a custom XPath variable or >>> a function, provided that I have the implementation class of the provider >>> interface that you have described?? >>> >> >> First users have to declare their custom implementations under >> repository/conf/synapse.properties (ie :- within >> synapse.xpath.var.extensions / synapse.xpath.func.extensions properties) . >> Then If this is required for a synapse based component (such as in my >> scenario where my business messaging component which needs to expose a >> property as a custom Xpath extension variable such as $PAYPAL_RESPONSE ) we >> can include our extensions under the respective components itself. Otherwise >> we need to include our extension jars under lib/classpath >> >> Regards, >> Udayanga >> >> >> >>> >>> Thanks, >>> Ruwan >>> >>> >>> On Wed, Nov 24, 2010 at 12:54 PM, Udayanga Wickramasinghe < >>> [email protected]> wrote: >>> >>>> Hi devs, >>>> I see that Synapse currently does not have an extension mechanism to >>>> support custom xpath variable/function expressions . For example we can't >>>> declare our own expression="$Custom_Property_Scope:C_PROPERTY" or >>>> expression="$CUSTOM_RESP/urn:child" (actually this has been a requirement >>>> of mine ) or even a customized xpath function similar to "get-property()". >>>> Modifying SynapseXPathFunctionContext or SynapseXPathVariableContext could >>>> make this happen but i guess that is not the proper way to do that :S . It >>>> would be great if we can have an extensible way of doing this. I prepared a >>>> patch for Synapse so that we could have such extensions for xpath .(which >>>> would in-turn meet my requirement as well :)) >>>> The basic flow of this implementation is as follows. We use >>>> synapse.properties to register Synapse xpath variable/function based >>>> extensions . >>>> synapse.xpath.var.extensions --> Variable Context Extensions >>>> synapse.xpath.func.extensions --> Function Context Extensions >>>> These extensions should implement new interfaces , either >>>> SynapseXpathFunctionContextProvider / SynapseXpathVariableContextProvider . >>>> Each is provided with several interfaces including #getResolvingQName() >>>> ,indicating Synapse that which respective expressions they are going to >>>> support (ie:-localname + prefix + namespace URI combination). >>>> >>>> At Synapse initialization time we register all declared extensions.These >>>> extensions will be available through SynapseEnvironment .(i had to >>>> introduce >>>> two interfaces to support this , >>>> SynapseEnvironment#getXpathFunctionExtensions() , >>>> SynapseEnvironment#getXpathVariableExtensions() ) .Now that these >>>> extensions >>>> are made available , xpath context resolvers at runtime >>>> (ie:-SynapseXPathVariableContext) will try to resolve expressions through >>>> provided extensions (if a matching extension is found ) , in case normal >>>> synapse resolving flow fails..IMO i think this is a better way of providing >>>> custom Xpath expression support... Please let me know your >>>> suggestions,improvements ,etc regarding this approach...thanks in >>>> advance..Meantime I'll make this patch available through a jira as well :) >>>> >>>> >>>> Regards, >>>> Udayanga >>>> >>>> -- >>>> *Udayanga Wickramasinghe* >>>> Software Engineer; WSO2 Inc.; http://wso2.com, >>>> *email: **[email protected]* <[email protected]>* cell: +94 (77) >>>> 983-4365 >>>> blog: **http://udayangawiki.blogspot.com*<http://udayangawiki.blogspot.com> >>>> * >>>> twitter: >>>> **http://twitter.com/udayanga_wick*<http://twitter.com/udayanga_wick> >>>> * >>>> ** >>>> * <http://lk.linkedin.com/in/ddweerasiri> >>>> >>> >>> >>> >>> -- >>> Ruwan Linton >>> Software Architect & Product Manager, WSO2 ESB; http://wso2.org/esb >>> WSO2 Inc.; http://wso2.org >>> >>> Lean . Enterprise . Middleware >>> >>> phone: +1 408 754 7388 ext 51789 >>> email: [email protected]; cell: +94 77 341 3097 >>> blog: http://blog.ruwan.org >>> linkedin: http://www.linkedin.com/in/ruwanlinton >>> google: http://www.google.com/profiles/ruwan.linton >>> tweet: http://twitter.com/ruwanlinton >>> >> >> >> >> -- >> *Udayanga Wickramasinghe* >> Software Engineer; WSO2 Inc.; http://wso2.com, >> *email: **[email protected]* <[email protected]>* cell: +94 (77) >> 983-4365 >> blog: **http://udayangawiki.blogspot.com*<http://udayangawiki.blogspot.com> >> * >> twitter: >> **http://twitter.com/udayanga_wick*<http://twitter.com/udayanga_wick> >> * >> ** >> * <http://lk.linkedin.com/in/ddweerasiri> >> > > > > -- > Ruwan Linton > Software Architect & Product Manager, WSO2 ESB; http://wso2.org/esb > WSO2 Inc.; http://wso2.org > > Lean . Enterprise . Middleware > > phone: +1 408 754 7388 ext 51789 > email: [email protected]; cell: +94 77 341 3097 > blog: http://blog.ruwan.org > linkedin: http://www.linkedin.com/in/ruwanlinton > google: http://www.google.com/profiles/ruwan.linton > tweet: http://twitter.com/ruwanlinton > -- *Udayanga Wickramasinghe* Software Engineer; WSO2 Inc.; http://wso2.com, *email: **[email protected]* <[email protected]>* cell: +94 (77) 983-4365 blog: **http://udayangawiki.blogspot.com* <http://udayangawiki.blogspot.com> * twitter: **http://twitter.com/udayanga_wick*<http://twitter.com/udayanga_wick> * ** * <http://lk.linkedin.com/in/ddweerasiri>
