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>

Reply via email to