JavaBean code generator produces incorrect setter methods
---------------------------------------------------------
Key: THRIFT-663
URL: https://issues.apache.org/jira/browse/THRIFT-663
Project: Thrift
Issue Type: Bug
Components: Compiler (Java)
Affects Versions: 0.2
Reporter: Dave Engberg
Priority: Minor
Attachments: java-setter.diff
The original Thrift JavaBean generator produced set* methods for a property
'foo' that looked like:
public void setFoo(int foo) {
this.foo = foo;
}
The more recent code in the 0.2.0 release now returns a value:
public MyStruct setFoo(int foo) {
this.foo = foo;
return this;
}
I can imagine this was possibly desired by someone to implement a "chaining"
style of coding, but this is no longer a correct JavaBean. The JavaBean spec
requires that the return type of set* functions be 'void', and various tools
and frameworks enforce this requirement. For example, the Stripes web UI
toolkit thinks that a field is read-only if the set* function doesn't return
'void'.
I'll attach a trivial patch to restore this to the previous behavior. If a
chaining-style setter is desired by others, I'd recommend making this a
separate method on the bean rather than replacing the standard setter. E.g.:
public MyStruct setChainFoo(int foo) { ...
Or something like that.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.