[ https://issues.apache.org/jira/browse/THRIFT-3122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Henrique Mendonça resolved THRIFT-3122. --------------------------------------- Resolution: Fixed Fix Version/s: 0.9.3 Assignee: (was: Henrique Mendonça) Committed. Thanks Igor! > Javascript struct constructor should properly initialize struct and container > members from plain js arguments > ------------------------------------------------------------------------------------------------------------- > > Key: THRIFT-3122 > URL: https://issues.apache.org/jira/browse/THRIFT-3122 > Project: Thrift > Issue Type: Improvement > Components: JavaScript - Compiler > Reporter: Igor Tkach > Fix For: 0.9.3 > > > Currently constructors for struct types in generated javascript accept > {{args}} object and initialize struct's members by simply assigning a value > from corresponding {{args}} object property (if not undefined). If struct > member is > another struct it must be explicitly created with constructor and passed as > an argument value. > Given following definitions: > {code} > struct A { > 1: string something > } > struct B { > 1: A value > } > {code} > this works: > {code:javascript} > var b1 = new B( > { > value: new A( > { > something: 'hello' > } > ) > } > ); > {code} > this doesn't: > {code:javascript} > var b2 = new B( > { > value: { > something: 'hello' > } > } > ); > {code} > Attempt to serialize b2 will result in error because {{b2.a}} doesn't have a > {{write}} method. > This becomes especially problematic when deep objects are used with libraries > like [Underscore.js|http://underscorejs.org/], [lodash|https://lodash.com/], > [React's immutability > helpers|https://facebook.github.io/react/docs/update.html] or > [Immutable.js|https://github.com/facebook/immutable-js]: most operations will > return or produce plain javascript objects without read/write methods even if > Thrift objects were given as input. Manually converting object graphs back to > Thrift serializable form is not workable. -- This message was sent by Atlassian JIRA (v6.3.4#6332)