From 9b80d157a801cc4a35c61bc383aebf9d1d7dd69a Mon Sep 17 00:00:00 2001 From: Atanas Gegov <atanas.gegov.oss@gmail.com> Date: Thu, 31 Oct 2024 17:45:12 +0100 Subject: [PATCH 1/2] Return immutable Set for a Collection Fixes https://github.com/jwtk/jjwt/issues/965 --- .../main/java/io/jsonwebtoken/lang/Collections.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/io/jsonwebtoken/lang/Collections.java b/api/src/main/java/io/jsonwebtoken/lang/Collections.java index 01768fc64..326267da2 100644 --- a/api/src/main/java/io/jsonwebtoken/lang/Collections.java +++ b/api/src/main/java/io/jsonwebtoken/lang/Collections.java @@ -86,19 +86,13 @@ public static <T> List<T> of(T... elements) { /** * Returns the specified collection as a {@link Set} instance. * - * @param c the collection to represent as a set + * @param c the collection to be converted * @param <T> collection element type - * @return a type-safe immutable {@code Set} containing the specified collection elements. + * @return a type-safe immutable {@code Set} containing the specified collection elements. * @since 0.12.0 */ public static <T> Set<T> asSet(Collection<T> c) { - if (c instanceof Set) { - return (Set<T>) c; - } - if (isEmpty(c)) { - return java.util.Collections.emptySet(); - } - return java.util.Collections.unmodifiableSet(new LinkedHashSet<>(c)); + return java.util.Collections.unmodifiableSet(new LinkedHashSet<T>(c)); } /** From 34e36ed1f57e3adaa7869203088729433e62406a Mon Sep 17 00:00:00 2001 From: Atanas Gegov <atanas.gegov.oss@gmail.com> Date: Thu, 31 Oct 2024 18:01:27 +0100 Subject: [PATCH 2/2] Revert null or empty case Still immutable set is returned in every case --- api/src/main/java/io/jsonwebtoken/lang/Collections.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/src/main/java/io/jsonwebtoken/lang/Collections.java b/api/src/main/java/io/jsonwebtoken/lang/Collections.java index 326267da2..ead04ac3e 100644 --- a/api/src/main/java/io/jsonwebtoken/lang/Collections.java +++ b/api/src/main/java/io/jsonwebtoken/lang/Collections.java @@ -92,6 +92,9 @@ public static <T> List<T> of(T... elements) { * @since 0.12.0 */ public static <T> Set<T> asSet(Collection<T> c) { + if (isEmpty(c)) { + return java.util.Collections.emptySet(); + } return java.util.Collections.unmodifiableSet(new LinkedHashSet<T>(c)); }