How will the object know that Stapler has completed calling DataBoundSetters (that all configuration data has been applied)?
----- Original Message ----- From: jenkinsci-dev@googlegroups.com To: jenkinsci-dev@googlegroups.com At: Oct 4 2013 00:38:55 great, so next step is to be able to directly annotate fields à la hibernate :) class Foo { @DataBound int a,b,c,d; } 2013/10/4 Kohsuke Kawaguchi <k...@kohsuke.org> 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 jenkinsci-dev+unsubscr...@googlegroups.com. 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 jenkinsci-dev+unsubscr...@googlegroups.com. 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 jenkinsci-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.