You want something like this:
-----
public class MySecurityRealm extends SecurityRealm {
private MyConfiguration configuration;
private transient String clientId;
private transient Secret clientSecret;
private Object readResolve() {
if (clientId != null || clientSecret != null) {
this.configuration = new MyConfiguration(…)
clientId = null;
clientSecret = null;
}
return this;
}
@DataBoundConstructor
public MySecurityRealm(String clientId, String clientSecret) {
this.configuration = new MyConfiguration(
Util.fixEmptyAndTrim(clientId),
Secret.fromString(Util.fixEmptyAndTrim(clientSecret))
);
}
}
-----
For examples, search for readResolve in Jenkins and plugin source code.
> On 8. Jul 2020, at 15:57, Goyot, Martin <[email protected]> wrote:
>
> Sure,
>
> so the old version was:
>
> public class MySecurityRealm extends SecurityRealm {
> private String clientId;
> private Secret clientSecret;
>
> @DataBoundConstructor
> public MySecurityRealm(String clientId, String clientSecret) {
> this.clientId = Util.fixEmptyAndTrim(clientId);
> this.setClientSecret(Util.fixEmptyAndTrim(clientSecret));
> }
> }
>
> And the new is:
>
>
> public class MySecurityRealm extends SecurityRealm {
> private MyConfiguration configuration;
>
> @DataBoundConstructor
> public MySecurityRealm(String clientId, String clientSecret) {
> this.configuration = new MyConfiguration(
> Util.fixEmptyAndTrim(clientId),
> Secret.fromString(Util.fixEmptyAndTrim(clientSecret))
> );
> }
> }
>
> Something along those lines.
>
> Le mer. 8 juil. 2020 à 15:50, Ullrich Hafner <[email protected]> a
> écrit :
> https://wiki.jenkins.io/display/JENKINS/Hint+on+retaining+backward+compatibility
>
> It would help if you could describe the exact changes in your class (old vs.
> new version).
>
>> Am 08.07.2020 um 10:51 schrieb Goyot, Martin <[email protected]>:
>>
>> Thanks Ullrich!
>>
>> Do you have any pointer for me as to how to proceed?
>>
>> Le mer. 8 juil. 2020 à 10:34, Ullrich Hafner <[email protected]> a
>> écrit :
>>
>>
>>> Am 08.07.2020 um 10:16 schrieb Goyot, Martin <[email protected]>:
>>>
>>> Hi there,
>>>
>>> On the OAuth plugin I'm working on, I'd like to modify the
>>> @DataboundConstructor for the Realm. Issue is, if I modify it, whether be
>>> the signature or the inners of the function, the deserialization for
>>> previous instances won't work anymore hence breaking any previous
>>> installation of the plugin.
>>>
>>> How am I supposed to proceed in such particular cases, when I need to
>>> update this constructor without breaking any config already set on Jenkins
>>> instances?
>>>
>>
>> The serialization does not use the constructor. You need to provide a
>> readResolve method that will map the old fields to the new fields.
>>
>>> Here is some code for reference:
>>>
>>> public class MySecurityRealm extends SecurityRealm {
>>> private String clientId;
>>> private Secret clientSecret;
>>>
>>> @DataBoundConstructor
>>> public MySecurityRealm(String clientId, String clientSecret) {
>>> this.clientId = Util.fixEmptyAndTrim(clientId);
>>> this.setClientSecret(Util.fixEmptyAndTrim(clientSecret));
>>> }
>>> }
>>>
>>> Thanks in advance !
>>> Martin
>>>
>>> --
>>> 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/CA%2Bb6JB-wx%3D%2BPRcXb057-9idgZkL7kYw%3DSvmSsaR-mxRJ9_g96A%40mail.gmail.com.
>>
>>
>> --
>> 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/E316B1D7-CCBE-4BCE-A50C-E64A53A88E68%40gmail.com.
>>
>> --
>> 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/CA%2Bb6JB8J4-AHbMyb%3DWDATiXGvtnuw6YcEcB-pV0SPc4Ju6xNkA%40mail.gmail.com.
>
>
> --
> 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/1C9C0447-9863-4833-A03A-9EF3ADC9872A%40gmail.com.
>
> --
> 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/CA%2Bb6JB9Bz-YyMi9oC1mrRWZdDtteCszf7FmpCOxHEQLRmrKRQw%40mail.gmail.com.
--
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/28EB61A5-5DFF-4BC4-8CEF-4C13FDDD7D52%40beckweb.net.