You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Sherban Drulea (JIRA)" <ji...@apache.org> on 2013/06/25 04:44:19 UTC

[jira] [Updated] (THRIFT-2064) Node thrift can't handle boolean or int

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

Sherban Drulea updated THRIFT-2064:
-----------------------------------

    Description: 
When passing an object with a 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': canEditEmblem,
                    'isBanned': isBanned,
                    'canEditMotto': canEditMotto,
                    'canJoinOperations': canJoinOperations,
                    'canEditBio': canEditBio,
                    'canEditRulesOfConduct': canEditRulesOfConduct,
                    'canEditMottoBg': canEditMottoBg,
                    'canEditClanTag': canEditClanTag,
                    'canEditMotd': canEditMotd
                }
    });

    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 JS primitives. 

  was:
When passing an object with a 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

Please fix transports.js to handle JS primitives. 

    
> Node thrift can't handle boolean or int
> ---------------------------------------
>
>                 Key: THRIFT-2064
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2064
>             Project: Thrift
>          Issue Type: Bug
>          Components: Node.js - Library
>    Affects Versions: 0.9
>            Reporter: Sherban Drulea
>            Priority: Critical
>
> When passing an object with a 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': canEditEmblem,
>                     'isBanned': isBanned,
>                     'canEditMotto': canEditMotto,
>                     'canJoinOperations': canJoinOperations,
>                     'canEditBio': canEditBio,
>                     'canEditRulesOfConduct': canEditRulesOfConduct,
>                     'canEditMottoBg': canEditMottoBg,
>                     'canEditClanTag': canEditClanTag,
>                     'canEditMotd': canEditMotd
>                 }
>     });
>     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 JS primitives. 

--
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