diff --git a/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java b/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java index 8d54d462..d0b260bf 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java @@ -61,7 +61,7 @@ import org.springframework.util.Assert; */ public final class ConnectionFieldTypeVisitor extends GraphQLTypeVisitorStub { - private static Log logger = LogFactory.getLog(ConnectionFieldTypeVisitor.class); + private static final Log logger = LogFactory.getLog(ConnectionFieldTypeVisitor.class); private final ConnectionAdapter adapter; diff --git a/spring-graphql/src/test/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitorTests.java b/spring-graphql/src/test/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitorTests.java index 6079c8d7..a98f6864 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitorTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitorTests.java @@ -41,9 +41,7 @@ public class ConnectionFieldTypeVisitorTests { @Test void paginationDataFetcher() { - String document = BookSource.booksConnectionQuery(""); - - TestConnectionAdapter adapter = new TestConnectionAdapter(); + ListConnectionAdapter adapter = new ListConnectionAdapter(); adapter.setInitialOffset(30); adapter.setHasNext(true); @@ -52,22 +50,22 @@ public class ConnectionFieldTypeVisitorTests { .typeDefinitionConfigurer(new ConnectionTypeDefinitionConfigurer()) .typeVisitor(ConnectionFieldTypeVisitor.create(List.of(adapter))) .toGraphQlService() - .execute(TestExecutionRequest.forDocument(document)); + .execute(TestExecutionRequest.forDocument(BookSource.booksConnectionQuery(null))); ResponseHelper.forResponse(response).assertData( "{\"books\":{" + "\"edges\":[" + - "{\"cursor\":\"T_30\",\"node\":{\"id\":\"1\",\"name\":\"Nineteen Eighty-Four\"}}," + - "{\"cursor\":\"T_31\",\"node\":{\"id\":\"2\",\"name\":\"The Great Gatsby\"}}," + - "{\"cursor\":\"T_32\",\"node\":{\"id\":\"3\",\"name\":\"Catch-22\"}}," + - "{\"cursor\":\"T_33\",\"node\":{\"id\":\"4\",\"name\":\"To The Lighthouse\"}}," + - "{\"cursor\":\"T_34\",\"node\":{\"id\":\"5\",\"name\":\"Animal Farm\"}}," + - "{\"cursor\":\"T_35\",\"node\":{\"id\":\"53\",\"name\":\"Breaking Bad\"}}," + - "{\"cursor\":\"T_36\",\"node\":{\"id\":\"42\",\"name\":\"Hitchhiker's Guide to the Galaxy\"}}" + + "{\"cursor\":\"O_30\",\"node\":{\"id\":\"1\",\"name\":\"Nineteen Eighty-Four\"}}," + + "{\"cursor\":\"O_31\",\"node\":{\"id\":\"2\",\"name\":\"The Great Gatsby\"}}," + + "{\"cursor\":\"O_32\",\"node\":{\"id\":\"3\",\"name\":\"Catch-22\"}}," + + "{\"cursor\":\"O_33\",\"node\":{\"id\":\"4\",\"name\":\"To The Lighthouse\"}}," + + "{\"cursor\":\"O_34\",\"node\":{\"id\":\"5\",\"name\":\"Animal Farm\"}}," + + "{\"cursor\":\"O_35\",\"node\":{\"id\":\"53\",\"name\":\"Breaking Bad\"}}," + + "{\"cursor\":\"O_36\",\"node\":{\"id\":\"42\",\"name\":\"Hitchhiker's Guide to the Galaxy\"}}" + "]," + "\"pageInfo\":{" + - "\"startCursor\":\"T_30\"," + - "\"endCursor\":\"T_36\"," + + "\"startCursor\":\"O_30\"," + + "\"endCursor\":\"O_36\"," + "\"hasPreviousPage\":true," + "\"hasNextPage\":true}" + "}}" @@ -77,16 +75,12 @@ public class ConnectionFieldTypeVisitorTests { @Test // gh-707 void trivialDataFetcherIsSkipped() { - TestConnectionAdapter adapter = new TestConnectionAdapter(); - adapter.setInitialOffset(30); - adapter.setHasNext(true); - Mono response = GraphQlSetup.schemaResource(BookSource.paginationSchema) .dataFetcher("Query", "books", new PropertyDataFetcher<>("books")) .typeDefinitionConfigurer(new ConnectionTypeDefinitionConfigurer()) - .typeVisitor(ConnectionFieldTypeVisitor.create(List.of(adapter))) + .typeVisitor(ConnectionFieldTypeVisitor.create(List.of(new ListConnectionAdapter()))) .toGraphQlService() - .execute(TestExecutionRequest.forDocument(BookSource.booksConnectionQuery(""))); + .execute(TestExecutionRequest.forDocument(BookSource.booksConnectionQuery(null))); ResponseHelper.forResponse(response).assertData("{\"books\":null}"); } @@ -94,16 +88,12 @@ public class ConnectionFieldTypeVisitorTests { @Test // gh-707 void nullValueTreatedAsEmptyConnection() { - TestConnectionAdapter adapter = new TestConnectionAdapter(); - adapter.setInitialOffset(30); - adapter.setHasNext(true); - Mono response = GraphQlSetup.schemaResource(BookSource.paginationSchema) .dataFetcher("Query", "books", environment -> null) .typeDefinitionConfigurer(new ConnectionTypeDefinitionConfigurer()) - .typeVisitor(ConnectionFieldTypeVisitor.create(List.of(adapter))) + .typeVisitor(ConnectionFieldTypeVisitor.create(List.of(new ListConnectionAdapter()))) .toGraphQlService() - .execute(TestExecutionRequest.forDocument(BookSource.booksConnectionQuery(""))); + .execute(TestExecutionRequest.forDocument(BookSource.booksConnectionQuery(null))); ResponseHelper.forResponse(response).assertData( "{\"books\":{" + @@ -118,7 +108,7 @@ public class ConnectionFieldTypeVisitorTests { } - private static class TestConnectionAdapter implements ConnectionAdapter { + private static class ListConnectionAdapter implements ConnectionAdapter { private int initialOffset = 0; @@ -137,9 +127,10 @@ public class ConnectionFieldTypeVisitorTests { return Collection.class.isAssignableFrom(containerType); } + @SuppressWarnings("unchecked") @Override - public Collection getContent(Object container) { - return (Collection) container; + public List getContent(Object container) { + return (List) container; } @Override @@ -154,7 +145,7 @@ public class ConnectionFieldTypeVisitorTests { @Override public String cursorAt(Object container, int index) { - return "T_" + (this.initialOffset + index); + return "O_" + (this.initialOffset + index); } }