[ 
https://issues.apache.org/jira/browse/CXF-4507?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kayvan Arianpour updated CXF-4507:
----------------------------------

    Labels: javascript  (was: security)
    
> bug in SchemaJavascriptBuilder while deserializing
> --------------------------------------------------
>
>                 Key: CXF-4507
>                 URL: https://issues.apache.org/jira/browse/CXF-4507
>             Project: CXF
>          Issue Type: Bug
>          Components: JavaScript Client
>    Affects Versions: 2.6.2
>         Environment: FireFox
>            Reporter: Kayvan Arianpour
>            Priority: Critical
>              Labels: javascript
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> SchemaJavascriptBuilder.java creates a JavaScript for a service, while 
> deserializing an array it uses a variable named "arrayItem" with no value on 
> definition.
> The Problem : if an item in the array is set to null on server, the 
> deserializer on client side set the item to the value set for the latest 
> value set.
> Here you can find the solution :
> SchemaJavascriptBuilder.java line 556 :
>             if (itemInfo.isArray()) {
>                 utils.appendLine("item = [];");
>                 utils.startDo();
>                 valueTarget = "arrayItem";
>                 utils.appendLine("var arrayItem;");//****************
>             }
> should be read as 
>             if (itemInfo.isArray()) {
>                 utils.appendLine("item = [];");
>                 utils.startDo();
>                 valueTarget = "arrayItem";
>                 utils.appendLine("var arrayItem = null;");//****************
>             }
> sample produced code : 
> function services_sal_ngs__rspPayCheque_deserialize (cxfjsutils, element) {
> ...
>      do  {
>       var arrayItem;//*******************************
>       var value = null;
>       if (!cxfjsutils.isElementNil(curElement)) {
>        value = cxfjsutils.getNodeText(curElement);
>        arrayItem = value;
>       }
>       item.push(arrayItem);
>       curElement = cxfjsutils.getNextElementSibling(curElement);
>      }
> ...
>     return newobject;
> }
> the corrected version should be :
> function services_sal_ngs__rspPayCheque_deserialize (cxfjsutils, element) {
> ...
>      do  {
>       var arrayItem = null;//*******************************
>       var value = null;
>       if (!cxfjsutils.isElementNil(curElement)) {
>        value = cxfjsutils.getNodeText(curElement);
>        arrayItem = value;
>       }
>       item.push(arrayItem);
>       curElement = cxfjsutils.getNextElementSibling(curElement);
>      }
> ...
>     return newobject;
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to