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.

Reply via email to