From dbd79ff77ac0b9f6044c5d06b35862d714dcb75f Mon Sep 17 00:00:00 2001 From: Luciano Balmaceda Date: Mon, 4 Oct 2021 19:55:13 +0200 Subject: [PATCH 1/2] Fix de/serialization of Invitation roles --- .../json/mgmt/organizations/Invitation.java | 24 ++++++++++++++----- .../mgmt/organizations/InvitationTest.java | 6 ++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java b/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java index 7c5560e6..41bcc3be 100644 --- a/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java +++ b/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java @@ -1,12 +1,19 @@ package com.auth0.json.mgmt.organizations; import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer; +import com.fasterxml.jackson.databind.ser.impl.StringArraySerializer; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Map; /** * Represents the Invitation object for an organization. + * * @see com.auth0.client.mgmt.OrganizationsEntity */ @JsonIgnoreProperties(ignoreUnknown = true) @@ -44,14 +51,16 @@ public class Invitation { @JsonProperty("organization_id") private String organizationId; @JsonProperty("roles") - private Roles roles; + @JsonDeserialize(using = StringArrayDeserializer.class) + @JsonSerialize(using = StringArraySerializer.class) + private String[] roles; /** * Create a new instance. * - * @param inviter the {@linkplain Inviter} of this invitation. - * @param invitee the {@linkplain Invitee} of this invitation. - * @param clientId The id of the connection the invitee will authenticate with.\ + * @param inviter the {@linkplain Inviter} of this invitation. + * @param invitee the {@linkplain Invitee} of this invitation. + * @param clientId Auth0 client ID. Used to resolve the application's login initiation endpoint. */ @JsonCreator public Invitation(@JsonProperty("inviter") Inviter inviter, @JsonProperty("invitee") Invitee invitee, @JsonProperty("client_id") String clientId) { @@ -193,8 +202,9 @@ public String getTicketId() { /** * @return the roles associated with the user invited. */ + @JsonIgnore public Roles getRoles() { - return roles; + return new Roles(Arrays.asList(roles)); } /** @@ -202,8 +212,10 @@ public Roles getRoles() { * * @param roles the {@linkplain Roles} to associated with the user invited. */ + @JsonIgnore public void setRoles(Roles roles) { - this.roles = roles; + List listOfRoles = roles.getRoles(); + this.roles = listOfRoles.toArray(new String[0]); } /** diff --git a/src/test/java/com/auth0/json/mgmt/organizations/InvitationTest.java b/src/test/java/com/auth0/json/mgmt/organizations/InvitationTest.java index a5fc65be..ed85daba 100644 --- a/src/test/java/com/auth0/json/mgmt/organizations/InvitationTest.java +++ b/src/test/java/com/auth0/json/mgmt/organizations/InvitationTest.java @@ -29,12 +29,16 @@ public void shouldDeserialize() throws Exception { " \"ticket_id\": \"ticket-id\",\n" + " \"created_at\": \"2021-03-31T19:08:40.295Z\",\n" + " \"expires_at\": \"2021-04-07T19:08:40.295Z\",\n" + - " \"organization_id\": \"org_abc\"\n" + + " \"organization_id\": \"org_abc\",\n" + + " \"roles\": [\n" + + " \"rol_0987\"\n" + + " ]\n" + "}\n"; Invitation invitation = fromJSON(json, Invitation.class); assertThat(invitation, is(notNullValue())); + assertThat(invitation.getRoles().getRoles(), is(contains("rol_0987"))); assertThat(invitation.getId(), is("inv_1")); assertThat(invitation.getClientId(), is("client-id")); assertThat(invitation.getInviter(), is(notNullValue())); From f4bc1fa7cb34ab5bc6bdb4d5e118af1a1f08b3fd Mon Sep 17 00:00:00 2001 From: Luciano Balmaceda Date: Tue, 5 Oct 2021 10:51:55 +0200 Subject: [PATCH 2/2] Keep using List instead of String[] --- .../auth0/json/mgmt/organizations/Invitation.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java b/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java index 41bcc3be..79b93cb5 100644 --- a/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java +++ b/src/main/java/com/auth0/json/mgmt/organizations/Invitation.java @@ -1,12 +1,7 @@ package com.auth0.json.mgmt.organizations; import com.fasterxml.jackson.annotation.*; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer; -import com.fasterxml.jackson.databind.ser.impl.StringArraySerializer; -import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -51,9 +46,7 @@ public class Invitation { @JsonProperty("organization_id") private String organizationId; @JsonProperty("roles") - @JsonDeserialize(using = StringArrayDeserializer.class) - @JsonSerialize(using = StringArraySerializer.class) - private String[] roles; + private List roles; /** * Create a new instance. @@ -204,7 +197,7 @@ public String getTicketId() { */ @JsonIgnore public Roles getRoles() { - return new Roles(Arrays.asList(roles)); + return new Roles(roles); } /** @@ -214,8 +207,7 @@ public Roles getRoles() { */ @JsonIgnore public void setRoles(Roles roles) { - List listOfRoles = roles.getRoles(); - this.roles = listOfRoles.toArray(new String[0]); + this.roles = roles.getRoles(); } /**