On 10/03/2013 09:38 PM, nicolas de loof wrote:
great,so next step is to be able to directly annotate fields à la hibernate :) class Foo { @DataBound int a,b,c,d; }
Good idea. I should support that.
2013/10/4 Kohsuke Kawaguchi <[email protected] <mailto:[email protected]>> Today, many complex plugins suffer from a massive constructor annotated with @DataBoundConstructor. This is because the form data-binding requires that all the parameters passed in through the constructor. See xcode plugin [1] for an example of this. The situation was worse with plugins that are used by other plugins, which needed to preserve ever-increasing list of constructors to remain backward compatible. Starting Jenkins 1.535, this problem is no more. Stapler can not only look for @DataBoundConstructor, but it'll also perform setter injection on methods annotated with @DataBoundSetter. So whereas you had to write: class Foo { int a,b,c,d; @DataBoundConstructor public Foo(int a, int b, int c, int d) { this.a = a; this.b = b; this.c = c; this.d = d; } } You can now write: class Foo { int a,b,c,d; @DataBoundConstructor public Foo(int a, int b) { this.a = a; this.b = b; } @DataBoundSetter public void setC(int c) { this.c = c; } @DataBoundSetter public void setD(int d) { this.d = d; } } Or even: class Foo { int a,b,c,d; @DataBoundConstructor public Foo() {} @DataBoundSetter public void setA(int a) { this.a = a; } @DataBoundSetter public void setC(int b) { this.b = b; } @DataBoundSetter public void setC(int c) { this.c = c; } @DataBoundSetter public void setD(int d) { this.d = d; } } This will make it easier to evolve plugins that have a large number of configuration options. [1] https://github.com/jenkinsci/xcode-plugin/blob/master/src/main/java/au/com/rayh/XCodeBuilder.java#L165 -- Kohsuke Kawaguchi -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:jenkinsci-dev%[email protected]>. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
-- Kohsuke Kawaguchi | CloudBees, Inc. | http://cloudbees.com/ Try Jenkins Enterprise, our professional version of Jenkins -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
