The problem still remains that the code in core needs to statically link to
stapler, so it is just not technically possible to move stapler into a
separate plugin.


2013/10/7 Domi <[email protected]>

> Its not that I think it should not be shipped in the core, but it would
> make it easter to backport/fix stuff in older versions too.
> Regards Domi
>
> Am 07.10.2013 um 22:12 schrieb Kohsuke Kawaguchi <[email protected]>:
>
> Most of the things in core depends on it one way or another, so I don't
> think it's feasible.
>
>
> 2013/10/7 Domi <[email protected]>
>
>> 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.
>>
>
>
>
> --
> 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.
>



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