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.

Reply via email to