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>

Reply via email to