Hi Nalin
Thanks for the explanatory answer.

rdgs
susinda

On Wed, Jul 17, 2013 at 12:07 PM, Nalin Chandraratne <na...@wso2.com> wrote:

> Hi Susinda,
>
> Please find comment inline.
>
>>
>>> Suppose we have a sample payloadFactory configuration as follows
>>>
>>> <payloadFactory media-type="json">
>>>         <format>json body</format>
>>>         <args>
>>>             <arg evaluator="xml" expression="/person/gender"/>
>>>             <arg value="2013"/>
>>>             <arg evaluator="json" expression="$fname"/>
>>>         </args>
>>> </payloadFactory>
>>>
>>>
>>> 1. Is there any use cases such that *media-type="json"* and <*arg
>>> evaluator="xml"*  will be used
>>>
>> "media-type" is to specify the type which will be used to compose the
> outgoing payload (json/xml) and "evaluator" is used to specify the type of
> the expression (JsonPath/Xpath) used. UseCase : Incoming XML and need to
> send a Different Json payload to BE which consist of some values extracted
> from the incoming XML.
>
>  2. Possible use case of *media-type="xml"* and <*arg 
> evaluator="json"*(opposite of the question one)
>>>
>>
> UseCase: when incoming payload is json and Steam Builders and Formatters
> are used, we use evaluator=json. The reason is, when the stream builders
> are enabled, content is set to a property JSON_STREAM and we have to
> extract the payload from that instead of taking it from the soap body.
> There we are using JsonPath to traverse the json object.
>
>>
>>> And some synapse code problems
>>> payloadFactoryMediator has has methods called getJsonPathArgumentList()
>>> and getXPathArgumentList(). I used these methods to access arguments, issue
>>> was the value type argument (<arg value="2013"/>) is returned from both
>>> methods.
>>>
>>> 3. Is this a bug or intended behavior.
>>>
>>
> This is an intended behavior. We only read the arguments in the synapse
> config once, when the PF initialize. Then keep the two argument types
> separately in two Lists and use the appropriate one for the scenarios
> accordingly.
> Eg: if xml -> PF -> xml, we use getXpath..
>       if json -> PF -> json and stream BnF are enabled, we use
> getJsonPath..
> Values has to be there in both lists since it's common for both.
>
>
>>> And a suggestion
>>> 4 .How about giving the config something like follows (omitting the
>>> evaluator because in code level it is handled in that way). Hope this
>>> simplifies coding and understandability.
>>> <args>
>>>             <arg expression="/person/gender"/>
>>>             <arg value="2013"/>
>>>             <arg jsonpath="$fname"/>
>>> </args>
>>
>>
> "evaluator" is used to distinguish different expression types. suppose we
> add more expression types in future, what makes more sense is keeping the
> arg type as expression and keep adding the different evaluator types.
>
>
> Thanks.
>
> --
> Nalin Chamara
> Software Engineer
> na...@wso2.com
> +94715614756
>



-- 
*Susinda Perera*
Software Engineer
Mobile:(+94)716049075

WSO2 Inc. http://wso2.com/
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to