From 4f91e91eb394a21f47891f6d7a9694370797143d Mon Sep 17 00:00:00 2001 From: Giovanni Lovato Date: Tue, 30 Sep 2025 23:22:49 +0200 Subject: [PATCH] Add UUID support to JsonKeysetCursorStrategy Signed-off-by: Giovanni Lovato --- .../data/query/JsonKeysetCursorStrategy.java | 3 +++ .../data/query/JsonKeysetCursorStrategyTests.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategy.java b/spring-graphql/src/main/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategy.java index 65a7e7ae9..517a9c6b7 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategy.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategy.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.Date; import java.util.Map; +import java.util.UUID; import tools.jackson.databind.DefaultTyping; import tools.jackson.databind.ObjectMapper; @@ -157,6 +158,7 @@ static void customize(CodecConfigurer configurer) { .allowIfSubType("java.time.") .allowIfSubType(Calendar.class) .allowIfSubType(Date.class) + .allowIfSubType(UUID.class) .build(); JsonMapper mapper = JsonMapper.builder() @@ -185,6 +187,7 @@ static void customize(CodecConfigurer configurer) { .allowIfSubType("java.time.") .allowIfSubType(Calendar.class) .allowIfSubType(Date.class) + .allowIfSubType(UUID.class) .build(); com.fasterxml.jackson.databind.ObjectMapper mapper = Jackson2ObjectMapperBuilder.json().build(); diff --git a/spring-graphql/src/test/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategyTests.java b/spring-graphql/src/test/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategyTests.java index b7d5a54a6..d93faf2a1 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategyTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategyTests.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; +import java.util.UUID; import org.junit.jupiter.api.Test; @@ -78,4 +79,16 @@ void toAndFromCursorWithZonedDateTime() { assertThat(this.cursorStrategy.fromCursor(json)).isEqualTo(keys); } + @Test + void toAndFromCursorWithUUID() { + + UUID uuid = UUID.randomUUID(); + + Map keys = new LinkedHashMap<>(); + keys.put("uuid", uuid); + String json = "[\"java.util.LinkedHashMap\",{\"uuid\":[\"java.util.UUID\",\"" + uuid + "\"]}]"; + + assertThat(this.cursorStrategy.toCursor(keys)).isEqualTo(json); + assertThat(this.cursorStrategy.fromCursor(json)).isEqualTo(keys); + } }