Generated javascript code doesn't properly write optional falsy values
----------------------------------------------------------------------

                 Key: THRIFT-1499
                 URL: https://issues.apache.org/jira/browse/THRIFT-1499
             Project: Thrift
          Issue Type: Bug
          Components: JavaScript - Compiler
    Affects Versions: 0.8
            Reporter: Darin Tay


The generated javascript code doesn't write out "falsy" values, which seems to 
be incorrect behavior for optional fields.  Falsy values such as the empty 
string or the number 0 should be explicitly set, so that they are read out on 
the other end.

The current behavior results in serialized data where fields are left unset, 
when really they should have been set to 0 (or the empty string).

For example, the generated code for a .write looks like this:
{code}

DataRunFilter.prototype.write = function(output) {
  output.writeStructBegin('DataRunFilter');
  if (this.runType) {
    output.writeFieldBegin('runType', Thrift.Type.I32, 2);
    output.writeI32(this.runType);
    output.writeFieldEnd();
  }
  output.writeFieldStop();
  output.writeStructEnd();
  return;
};

{code}

If runType (an enum) happens to be 0, the field won't be set at all and readers 
of the data will think it wasn't specified.


Since the constructor explicitly nulls out all fields, it should be perfectly 
okay to instead test for null explicitly (e.g. " if (this.runType === null) {" 
above).


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

        

Reply via email to