[
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': 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 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
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.
> 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': 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 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