Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2064

Node thrift can't handle maps with primitive values

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Cannot Reproduce
    • 0.9
    • 0.9.2
    • Node.js - Library

    Description

      When passing a map with primitive values (i.e. boolean or integer) via the thrift-npm, I get the following error:

      ERROR:Object false has no method 'copy'

      The error is from the many copy() calls in thrift-npm: thrift/lib/thrift/transport.js

      transport.js calls copy() on primitive thrift function parameters (i.e. int and boolean).

      Example IDL:

      struct SetTeamPrivilegesParams {
      1: optional i32 teamId,
      2: optional string platform,
      3: optional string title,
      4: optional map<string,bool> privileges
      }

      /**

      • Sets the bit offsets in the Key Archive index for the various privileges sent by the client.
        **/
        SetTeamPrivilegesResponse setTeamPrivileges(1: SetTeamPrivilegesParams params) throws (1: ServiceException ex)

      Example Client Code (vars in 'values' are all boolean):

      var updateTeamParams = new ttypes.UpdateTeamParams({
      teamId: teamId,
      platform: platform,
      title: title,
      values:

      { 'canEditEmblem': false, 'isBanned': true }

      });

      var argsArray = [updateTeamParams];

      try

      { tc.call( 'setTeamPrivileges', argsArray, restResponse ); }

      catch(err)

      { console.log( "ERROR:" + err.message ) }

      ;

      ERROR:Object false has no method 'copy'

      Please fix transports.js to handle map parameters with primitives.

      Attachments

        Activity

          People

            codesf Randy Abernethy
            sdrulea Sherban Drulea
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: