Vitali Lovich created THRIFT-2055:
-------------------------------------
Summary: Inconsistent serialization of unset variables between
primitives & objects
Key: THRIFT-2055
URL: https://issues.apache.org/jira/browse/THRIFT-2055
Project: Thrift
Issue Type: Bug
Components: Java - Compiler
Affects Versions: 0.9
Reporter: Vitali Lovich
A non-optional field will be serialized even if not set if it is a
number/boolean whereas not for objects. For example, round-tripping:
{code}
struct Foo {
int x;
string y;
}
{code}
Using JSON notation for convenience
Input: { "x": 5 }
In-memory object: isSetX() returns true, isSetY() returns false
Output: { "x": 5 }
Input: { "y": "foo" }
In-memory object: isSetX() returns false, isSetY() returns true
Output: { "x": 0, "y": "foo" }
It should be consistent. My gut is that the latter case is wrong and unset
primitives should be omitted from serialization even if not optional. My guess
is that fields marked with required should always output them regardless of
isSet, but not sure.
--
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