JavaScript variable "item" wont be reinitialized
------------------------------------------------

                 Key: CXF-2761
                 URL: https://issues.apache.org/jira/browse/CXF-2761
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.2.7
         Environment: Mac OS X
            Reporter: Björn Häuser


Take a look at the generated JS-Code, and especially at the variable item.

{noformat}
function ws_ejb_core_lunchroulette_de__userGetMeetingpoints_deserialize 
(cxfjsutils, element) {
    var newobject = new ws_ejb_core_lunchroulette_de__userGetMeetingpoints();
    cxfjsutils.trace('element: ' + cxfjsutils.traceElementName(element));
    var curElement = cxfjsutils.getFirstElementChild(element);
    var item;
    cxfjsutils.trace('curElement: ' + cxfjsutils.traceElementName(curElement));
    cxfjsutils.trace('processing session');
    var value = null;
    if (!cxfjsutils.isElementNil(curElement)) {
     value = cxfjsutils.getNodeText(curElement);
     item = value;
    }
    newobject.setSession(item);
    if (curElement != null) {
     curElement = cxfjsutils.getNextElementSibling(curElement);
    }
    cxfjsutils.trace('curElement: ' + cxfjsutils.traceElementName(curElement));
    cxfjsutils.trace('processing filter');
    var value = null;
    if (!cxfjsutils.isElementNil(curElement)) {
     item = ws_ejb_core_lunchroulette_de__filter_deserialize(cxfjsutils, 
curElement);
    }
    newobject.setFilter(item);
    if (curElement != null) {
     curElement = cxfjsutils.getNextElementSibling(curElement);
    }
    return newobject;
}
{noformat}

It is possible that item is filled with the value of the first "element" and 
not changed for the second element, and so the second vlement will get the 
value for the first element.


Easy fix (in my opinion):
{noformat}
        utils.appendLine("newobject." + accessorName + "(item);");
        utils.appendLine("var item = null;");
        if (!itemInfo.isArray()) {
            utils.startIf("curElement != null");
            utils.appendLine("curElement = 
cxfjsutils.getNextElementSibling(curElement);");
            utils.endBlock();
        }
{noformat}

Line 661 and following in SchemaJavascriptBuilder.java.

Thanks in advance,
Björn

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to