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.