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

Reply via email to