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>

Reply via email to