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>
