On 24/07/15 01:15, Thiago Augusto Ventura Lima wrote:
Assume I have a setting like "List<Foo> foos", where Foo is something like
class Foo {
public String propertyA;
public String propertyB;
}
What I'm trying to do is to default "foos" to an "one element list", say
it "[Foo('valueA', 'valueB')]", when this class is firstly loaded and
there's no instance.
repeatableProperty has a "default" field, which specifies the initial
list of values for the repeatable collection, if there isn't yet an
instance.
So basically you just need to add a way of fetching that default list
from Foo.
For example, you could do something like this:
--- Inside BarPublisher.java / wherever Foo is defined ---
public static final class Foo extends AbstractDescribableImpl<Foo> {
@Exported public final String propA;
@Exported public final String propB;
@DataBoundConstructor
public Foo(String a, String b) {
this.propA = a;
this.propB = b;
}
public static Foo[] getSomeDefaults() {
return new Foo[] { new Foo("valueA", "valueB") };
}
// ...
}
---------------------------------
--- BarPublisher/config.jelly ---
<j:invokeStatic
var="myWonderfulDefaults"
className="com.example.BarPublisher$Foo"
method="getSomeDefaults" />
<f:entry title="${%List of foos}" field="foos">
<f:repeatableProperty
field="foos"
default="${myWonderfulDefaults}"
add="${%Add foo...}" />
</f:entry>
---------------------------------
Though remember that users can delete the default "Foo" that appears and
save the job anyway, or they can upload job config directly via the API etc.
So you should probably additionally check in your
builder/publisher/whatever constructor whether the collection is empty,
and if so, apply the defaults (if that's what you want).
Regards,
Chris
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-dev/55B1894B.9030300%40orr.me.uk.
For more options, visit https://groups.google.com/d/optout.