Skip to content

Commit 4f91e91

Browse files
committed
Add UUID support to JsonKeysetCursorStrategy
Signed-off-by: Giovanni Lovato <[email protected]>
1 parent bdb53a9 commit 4f91e91

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

spring-graphql/src/main/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategy.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Collections;
2222
import java.util.Date;
2323
import java.util.Map;
24+
import java.util.UUID;
2425

2526
import tools.jackson.databind.DefaultTyping;
2627
import tools.jackson.databind.ObjectMapper;
@@ -157,6 +158,7 @@ static void customize(CodecConfigurer configurer) {
157158
.allowIfSubType("java.time.")
158159
.allowIfSubType(Calendar.class)
159160
.allowIfSubType(Date.class)
161+
.allowIfSubType(UUID.class)
160162
.build();
161163

162164
JsonMapper mapper = JsonMapper.builder()
@@ -185,6 +187,7 @@ static void customize(CodecConfigurer configurer) {
185187
.allowIfSubType("java.time.")
186188
.allowIfSubType(Calendar.class)
187189
.allowIfSubType(Date.class)
190+
.allowIfSubType(UUID.class)
188191
.build();
189192

190193
com.fasterxml.jackson.databind.ObjectMapper mapper = Jackson2ObjectMapperBuilder.json().build();

spring-graphql/src/test/java/org/springframework/graphql/data/query/JsonKeysetCursorStrategyTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Date;
2424
import java.util.LinkedHashMap;
2525
import java.util.Map;
26+
import java.util.UUID;
2627

2728
import org.junit.jupiter.api.Test;
2829

@@ -78,4 +79,16 @@ void toAndFromCursorWithZonedDateTime() {
7879
assertThat(this.cursorStrategy.fromCursor(json)).isEqualTo(keys);
7980
}
8081

82+
@Test
83+
void toAndFromCursorWithUUID() {
84+
85+
UUID uuid = UUID.randomUUID();
86+
87+
Map<String, Object> keys = new LinkedHashMap<>();
88+
keys.put("uuid", uuid);
89+
String json = "[\"java.util.LinkedHashMap\",{\"uuid\":[\"java.util.UUID\",\"" + uuid + "\"]}]";
90+
91+
assertThat(this.cursorStrategy.toCursor(keys)).isEqualTo(json);
92+
assertThat(this.cursorStrategy.fromCursor(json)).isEqualTo(keys);
93+
}
8194
}

0 commit comments

Comments
 (0)