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); + } }