Skip to content

Commit 31b5bfc

Browse files
authored
fix:(jans-auth-server): fixed Client serialization/deserialization issue #2946 (#3064)
* fix:(jans-auth-server): fixed Client serialization/deserialization bug #2946 * fix:(jans-auth-server): fixed Client serialization/deserialization bug #2946
1 parent 012a29e commit 31b5bfc

File tree

3 files changed

+93
-13
lines changed

3 files changed

+93
-13
lines changed

jans-auth-server/common/src/main/java/io/jans/as/common/model/registration/Client.java

+39-9
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
package io.jans.as.common.model.registration;
88

9+
import com.fasterxml.jackson.annotation.JsonIgnore;
910
import com.fasterxml.jackson.annotation.JsonInclude;
1011
import com.fasterxml.jackson.annotation.JsonProperty;
12+
import com.fasterxml.jackson.annotation.JsonSetter;
1113
import io.jans.as.model.common.*;
1214
import io.jans.as.model.crypto.signature.AsymmetricSignatureAlgorithm;
1315
import io.jans.as.model.register.ApplicationType;
@@ -28,7 +30,7 @@
2830
* @author Javier Rojas Blum
2931
* @version October 17, 2022
3032
*/
31-
@DataEntry(sortBy = {"displayName"})
33+
@DataEntry(sortBy = {"clientName"})
3234
@ObjectClass(value = "jansClnt")
3335
@JsonInclude(JsonInclude.Include.NON_NULL)
3436
public class Client extends DeletableEntity implements Serializable {
@@ -600,6 +602,7 @@ public void setIdTokenTokenBindingCnf(String idTokenTokenBindingCnf) {
600602
this.idTokenTokenBindingCnf = idTokenTokenBindingCnf;
601603
}
602604

605+
@JsonIgnore
603606
public boolean isTokenBindingSupported() {
604607
return StringUtils.isNotBlank(idTokenTokenBindingCnf);
605608
}
@@ -707,11 +710,37 @@ public LocalizedString getClientNameLocalized() {
707710
return clientNameLocalized;
708711
}
709712

713+
@JsonSetter
714+
public void setClientNameLocalized(LocalizedString clientNameLocalized) {
715+
this.clientNameLocalized = clientNameLocalized;
716+
}
717+
718+
@JsonSetter
719+
public void setLogoUriLocalized(LocalizedString logoUriLocalized) {
720+
this.logoUriLocalized = logoUriLocalized;
721+
}
722+
723+
@JsonSetter
724+
public void setClientUriLocalized(LocalizedString clientUriLocalized) {
725+
this.clientUriLocalized = clientUriLocalized;
726+
}
727+
728+
@JsonSetter
729+
public void setPolicyUriLocalized(LocalizedString policyUriLocalized) {
730+
this.policyUriLocalized = policyUriLocalized;
731+
}
732+
733+
@JsonSetter
734+
public void setTosUriLocalized(LocalizedString tosUriLocalized) {
735+
this.tosUriLocalized = tosUriLocalized;
736+
}
737+
710738
/**
711739
* Sets the name of the Client to be presented to the user.
712740
*
713741
* @param clientName The name of the Client to be presented to the user.
714742
*/
743+
@JsonIgnore
715744
public void setClientNameLocalized(String clientName) {
716745
this.clientName = clientName;
717746
this.clientNameLocalized.setValue(clientName);
@@ -723,6 +752,7 @@ public void setClientNameLocalized(String clientName) {
723752
* @param clientName The name of the Client to be presented to the user.
724753
* @param locale The locale
725754
*/
755+
@JsonIgnore
726756
public void setClientNameLocalized(String clientName, Locale locale) {
727757
if (StringUtils.isNotBlank(locale.toString())) {
728758
this.clientNameLocalized.setValue(clientName, locale);
@@ -745,6 +775,7 @@ public LocalizedString getLogoUriLocalized() {
745775
*
746776
* @param logoUri The URL of a logo image for the Client where it can be retrieved.
747777
*/
778+
@JsonIgnore
748779
public void setLogoUriLocalized(String logoUri) {
749780
this.logoUri = logoUri;
750781
this.logoUriLocalized.setValue(logoUri);
@@ -756,6 +787,7 @@ public void setLogoUriLocalized(String logoUri) {
756787
* @param logoUri The URL of a logo image for the Client where it can be retrieved.
757788
* @param locale The locale
758789
*/
790+
@JsonIgnore
759791
public void setLogoUriLocalized(String logoUri, Locale locale) {
760792
if (StringUtils.isNotBlank(locale.toString())) {
761793
this.logoUriLocalized.setValue(logoUri, locale);
@@ -778,6 +810,7 @@ public LocalizedString getClientUriLocalized() {
778810
*
779811
* @param clientUri The URL of the home page of the Client.
780812
*/
813+
@JsonIgnore
781814
public void setClientUriLocalized(String clientUri) {
782815
this.clientUri = clientUri;
783816
this.clientUriLocalized.setValue(clientUri);
@@ -789,6 +822,7 @@ public void setClientUriLocalized(String clientUri) {
789822
* @param clientUri The URL of the home page of the Client.
790823
* @param locale The locale
791824
*/
825+
@JsonIgnore
792826
public void setClientUriLocalized(String clientUri, Locale locale) {
793827
if (StringUtils.isNotBlank(locale.toString())) {
794828
this.clientUriLocalized.setValue(clientUri, locale);
@@ -813,6 +847,7 @@ public LocalizedString getPolicyUriLocalized() {
813847
*
814848
* @param policyUri A URL location about how the profile data will be used.
815849
*/
850+
@JsonIgnore
816851
public void setPolicyUriLocalized(String policyUri) {
817852
this.policyUri = policyUri;
818853
this.policyUriLocalized.setValue(policyUri);
@@ -825,6 +860,7 @@ public void setPolicyUriLocalized(String policyUri) {
825860
* @param policyUri A URL location about how the profile data will be used.
826861
* @param locale The locale
827862
*/
863+
@JsonIgnore
828864
public void setPolicyUriLocalized(String policyUri, Locale locale) {
829865
if (StringUtils.isNotBlank(locale.toString())) {
830866
this.policyUriLocalized.setValue(policyUri, locale);
@@ -849,6 +885,7 @@ public LocalizedString getTosUriLocalized() {
849885
*
850886
* @param tosUri The terms of service URL.
851887
*/
888+
@JsonIgnore
852889
public void setTosUriLocalized(String tosUri) {
853890
this.tosUri = tosUri;
854891
this.tosUriLocalized.setValue(tosUri);
@@ -861,6 +898,7 @@ public void setTosUriLocalized(String tosUri) {
861898
* @param tosUri The terms of service URL.
862899
* @param locale The Locale
863900
*/
901+
@JsonIgnore
864902
public void setTosUriLocalized(String tosUri, Locale locale) {
865903
if (StringUtils.isNotBlank(locale.toString())) {
866904
this.tosUriLocalized.setValue(tosUri, locale);
@@ -1421,14 +1459,6 @@ public void setBackchannelUserCodeParameter(Boolean backchannelUserCodeParameter
14211459
this.backchannelUserCodeParameter = backchannelUserCodeParameter;
14221460
}
14231461

1424-
public String getDisplayName() {
1425-
return getClientName();
1426-
}
1427-
1428-
public void setDisplayName(String displayName) {
1429-
setClientName(displayName);
1430-
}
1431-
14321462
public String getDescription() {
14331463
return description;
14341464
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.jans.as.common.model.registration;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import io.jans.as.model.util.Util;
6+
import org.testng.annotations.Test;
7+
8+
import java.io.IOException;
9+
import java.util.Locale;
10+
11+
import static org.testng.AssertJUnit.assertEquals;
12+
import static org.testng.AssertJUnit.assertNotNull;
13+
14+
/**
15+
* @author Yuriy Zabrovarnyy
16+
*/
17+
public class ClientSerializationTest {
18+
19+
@Test
20+
public void deserialization_whenSerialized_shouldGetCorrectValues() throws IOException {
21+
Client c = new Client();
22+
c.setClientName("name");
23+
c.setClientNameLocalized("myLocalized");
24+
c.setClientNameLocalized("myLocalized_canada", Locale.CANADA);
25+
c.setClientNameLocalized("myLocalized_canadaFR", Locale.CANADA_FRENCH);
26+
27+
final ObjectMapper mapper = Util.createJsonMapper();
28+
mapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_EMPTY);
29+
final String asJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(c);
30+
31+
final Client client = mapper.readValue(asJson, Client.class);
32+
assertNotNull(client);
33+
assertEquals("myLocalized", client.getClientName());
34+
assertEquals("myLocalized", client.getClientNameLocalized().getValue());
35+
assertEquals("myLocalized_canada", client.getClientNameLocalized().getValue(Locale.CANADA));
36+
assertEquals("myLocalized_canadaFR", client.getClientNameLocalized().getValue(Locale.CANADA_FRENCH));
37+
}
38+
}

jans-orm/model/src/main/java/io/jans/orm/model/base/LocalizedString.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66

77
package io.jans.orm.model.base;
88

9+
import com.fasterxml.jackson.annotation.JsonIgnore;
910
import org.apache.commons.lang3.StringUtils;
1011
import org.json.JSONObject;
1112

12-
import io.jans.orm.util.StringHelper;
13-
1413
import java.io.Serializable;
1514
import java.util.*;
1615
import java.util.function.BiFunction;
@@ -24,7 +23,7 @@ public class LocalizedString implements Serializable {
2423

2524
private static final long serialVersionUID = -7651487701235873969L;
2625

27-
private final Map<String, String> values;
26+
private Map<String, String> values;
2827

2928
public static final String EMPTY_LANG_TAG = "";
3029
public static final String LANG_SEPARATOR = ";";
@@ -46,22 +45,34 @@ public void setValue(String value, Locale locale) {
4645
values.put(getLanguageTag(locale), value);
4746
}
4847

48+
@JsonIgnore
4949
public String getValue() {
5050
return getValue(EMPTY_LANG_TAG);
5151
}
5252

53+
@JsonIgnore
5354
public String getValue(String languageTag) {
5455
return values.getOrDefault(languageTag, null);
5556
}
5657

58+
@JsonIgnore
59+
public String getValue(Locale locale) {
60+
return getValue(getLanguageTag(locale));
61+
}
62+
5763
public Map<String, String> getValues() {
5864
return values;
5965
}
6066

67+
public void setValues(Map<String, String> values) {
68+
this.values = values;
69+
}
70+
6171
public int size() {
6272
return values.size();
6373
}
6474

75+
@JsonIgnore
6576
public Set<String> getLanguageTags() {
6677
return values.keySet();
6778
}
@@ -76,7 +87,8 @@ public String removeLdapLanguageTag(String value, String ldapAttributeName) {
7687
.replace(LANG_SEPARATOR + LANG_PREFIX + LANG_JOINER, "");
7788
}
7889

79-
private String getLanguageTag(Locale locale) {
90+
@JsonIgnore
91+
public static String getLanguageTag(Locale locale) {
8092
List<String> keyParts = new ArrayList<>();
8193
keyParts.add(locale.getLanguage());
8294
keyParts.add(locale.getScript());

0 commit comments

Comments
 (0)