This might be a dummy question, but would it make sense to extract stapler into 
a separate plugin - like we do with other libs already? Is this even possible?

> Am 07.10.2013 um 17:16 schrieb "Kevin Fleming (BLOOMBERG/ 731 LEXIN)" 
> <[email protected]>:
> 
> Great! I'll experiment with it in a few weeks after a long overdue vacation 
> :-)
> 
> ----- Original Message -----
> From: [email protected]
> To: [email protected]
> At: Oct  7 2013 11:12:13
> @PostConstruct, @DataBoundSetter on fiels, and Descriptor.newInstance() all 
> fixed in 1.535.
> 
> 
> 2013/10/5 domi <[email protected]>
>> Kohsuke,
>> while you'r at it, there are more issues around this topic. e.g.
>> Plugins still using newInstance() are not usable everywhere: 
>> https://issues.jenkins-ci.org/browse/JENKINS-15445
>> Even worse, when a plugin provides newInstance() and @DBC: 
>> https://issues.jenkins-ci.org/browse/JENKINS-18629
>> /Domi
>> 
>> 
>> On 04.10.2013, at 20:15, Kohsuke Kawaguchi <[email protected]> wrote:
>> 
>> > On 10/04/2013 07:00 AM, nicolas de loof wrote:
>> >> maybe using @PostConstruct ?
>> >>
>> >>
>> >> 2013/10/4 Kevin Fleming (BLOOMBERG/ 731 LEXIN) <[email protected]
>> >> <mailto:[email protected]>>
>> >>
>> >>     How will the object know that Stapler has completed calling 
>> >> DataBoundSetters
>> >>     (that all configuration data has been applied)?
>> >
>> > Another great idea. Will implement this.
>> >
>> >
>> >>
>> >>     ----- Original Message -----
>> >>     From: [email protected] 
>> >> <mailto:[email protected]>
>> >>     To: [email protected] 
>> >> <mailto:[email protected]>
>> >>     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 <[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]
>> >>         <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]
>> >>     <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.
>> 
>> --
>> 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
> -- 
> 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.
> -- 
> 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.

-- 
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.

Reply via email to