diff --git a/model/src/main/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeySet.java b/model/src/main/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeySet.java index c24650f51c1..366f08a2cf4 100644 --- a/model/src/main/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeySet.java +++ b/model/src/main/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeySet.java @@ -25,6 +25,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -33,10 +34,10 @@ */ public class JsonWebKeySet { - private static final String KEYS = "keys"; + private static final String JSON_PROPERTY_KEYS = "keys"; private final List keys; - public JsonWebKeySet(@JsonProperty(KEYS) List keys) { + public JsonWebKeySet(@JsonProperty(JSON_PROPERTY_KEYS) List keys) { Set set = new LinkedHashSet<>(); //rules for how to override duplicates for (T key : keys) { @@ -44,7 +45,7 @@ public JsonWebKeySet(@JsonProperty(KEYS) List keys) { set.remove(key); set.add(key); } - this.keys = new LinkedList(set); + this.keys = new LinkedList<>(set); } public List getKeys() { @@ -54,9 +55,12 @@ public List getKeys() { @JsonIgnore public Map getKeySetMap() { Map keySet = new HashMap<>(); - ArrayList keyArray = new ArrayList(); - Optional.ofNullable(keys).orElseThrow(() -> new IllegalStateException("No keys found.")).stream().forEach(k -> keyArray.add(k.getKeyProperties())); - keySet.put(KEYS, keyArray); + ArrayList> keyArray = new ArrayList<>(); + long keyCount = Optional.ofNullable(keys).orElseThrow(() -> new IllegalStateException("No keys found.")).stream() + .map(k -> keyArray.add(k.getKeyProperties())).filter(Objects::nonNull).count(); + if (keyCount > 0) { + keySet.put(JSON_PROPERTY_KEYS, keyArray); + } return keySet; } } diff --git a/model/src/test/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeyTests.java b/model/src/test/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeyTests.java index cde9b72ba18..de2090dc24f 100644 --- a/model/src/test/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeyTests.java +++ b/model/src/test/java/org/cloudfoundry/identity/uaa/oauth/jwk/JsonWebKeyTests.java @@ -4,6 +4,7 @@ import org.cloudfoundry.identity.uaa.util.JsonUtils; import org.junit.jupiter.api.Test; +import java.util.ArrayList; import java.util.Map; import static org.cloudfoundry.identity.uaa.test.ModelTestUtils.getResourceAsString; @@ -26,6 +27,7 @@ void testWebKeyPublic() { // then assertEquals(samlKeySet.getKeys().get(0).getKid(), jsonWebKey.getKid()); assertEquals(samlKeySet.getKeys().get(0).getX5t(), jsonWebKey.getX5t()); + assertEquals(3, ((ArrayList) samlKeySet.getKeySetMap().get("keys")).size()); } @Test