On Fri, Nov 10, 2017 at 3:54 AM, nicolas de loof
<nicolas.del...@gmail.com> wrote:
> I'll rewrite configure method as :
>
> public boolean configure(StaplerRequest req, JSONObject json) throws
> FormException {
>     req.bindJSON(this, json);
>     save();
>     return true;
> }
>
> (by the way, shouldn't this be the default implementation ?)

Maybe. I already did this for `GlobalConfiguration`:

https://github.com/jenkinsci/jenkins/pull/2509

> if I UNCHECK the optional property, no "authentication" value
> is posted to JSON form, and I don't get SMTPAuthentication reset to null in
> my descriptor.

Unfortunately your `configure` override must start by setting any
optional struct fields to null:

https://github.com/jenkinsci/ui-samples-plugin/blob/7d0fe2b32204a7fe0ec6adb6815e65d48b0dd54e/src/main/java/jenkins/plugins/ui_samples/HeteroList.java#L81

> this configuration mechanism isn't atomic, and
> there's some possible race condition for related attributes to have
> inconsistent values seen from another thread while the configuration is
> being changed.

It is not a “possible” race condition; it is definitely a race
condition. Just how Jenkins works. Anyway this is a change you would
apply on Jenkins startup, not while stuff is running, right?

> considering recommended and well adopted approach to
> retrieve a Descriptor is to use
> Jenkins.getInstance.getDescriptor(describable), not referring to some final
> static constant

Some people (following Kohsuke’s lead) `@Inject` descriptors.

> I wonder we could get the Descriptor.configure mechanism to
> rely on @DataBoundConstructors just like Describable do.

I doubt that could be done compatibly. Would break assumptions deep in
`ExtensionList`. Anyway some `Descriptor`s maintain (transient) state,
etc.

Another style is to avoid `f:optionalProperty` and have an explicit
object representing the choice of no authentication, with a no-arg
`@DataBoundConstructor` and a `@Symbol`.

-- 
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 jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CANfRfr1bGPXiOU6AKwSuVNMuKJmWHtJ0ZoahrKoKdDQigJdi_g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to