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??
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
