Skip to content

Commit 5742dcf

Browse files
committed
Hotfix - check if the GraphQL type has extension annotation, and only then use the ExtensionDataFetcherWrapper
1 parent 6d2b428 commit 5742dcf

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/main/java/graphql/annotations/processor/retrievers/fieldBuilders/field/FieldDataFetcherBuilder.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package graphql.annotations.processor.retrievers.fieldBuilders.field;
1616

1717
import graphql.annotations.annotationTypes.GraphQLDataFetcher;
18+
import graphql.annotations.annotationTypes.GraphQLTypeExtension;
1819
import graphql.annotations.connection.GraphQLConnection;
1920
import graphql.annotations.dataFetchers.ExtensionDataFetcherWrapper;
2021
import graphql.annotations.dataFetchers.MethodDataFetcher;
@@ -73,13 +74,13 @@ private DataFetcher handleNullCase(DataFetcher actualDataFetcher) {
7374
if (isaBoolean()) {
7475
actualDataFetcher = getBooleanDataFetcher(actualDataFetcher);
7576
} else if (checkIfPrefixGetterExists(field.getDeclaringClass(), "get", field.getName())) {
76-
actualDataFetcher = wrapExtension(new PropertyDataFetcher(field.getName()));
77+
actualDataFetcher = wrapExtension(new PropertyDataFetcher(field.getName()), field);
7778
} else{
7879
actualDataFetcher = getDataFetcherWithFluentGetter(actualDataFetcher);
7980
}
8081

8182
if (actualDataFetcher == null) {
82-
actualDataFetcher = wrapExtension(new FieldDataFetcher(field.getName()));
83+
actualDataFetcher = wrapExtension(new PropertyDataFetcher(field.getName()), field);
8384
}
8485
return actualDataFetcher;
8586
}
@@ -103,14 +104,17 @@ private DataFetcher getDataFetcherWithFluentGetter(DataFetcher actualDataFetcher
103104
return actualDataFetcher;
104105
}
105106

106-
private ExtensionDataFetcherWrapper wrapExtension(DataFetcher dataFetcher) {
107-
return new ExtensionDataFetcherWrapper(field.getDeclaringClass(), dataFetcher);
107+
private DataFetcher wrapExtension(DataFetcher dataFetcher, Field field) {
108+
if (field.getDeclaringClass().isAnnotationPresent(GraphQLTypeExtension.class)) {
109+
return new ExtensionDataFetcherWrapper(field.getDeclaringClass(), dataFetcher);
110+
}
111+
return dataFetcher;
108112
}
109113

110114
private DataFetcher getBooleanDataFetcher(DataFetcher actualDataFetcher) {
111115
if (checkIfPrefixGetterExists(field.getDeclaringClass(), "is", field.getName()) ||
112116
checkIfPrefixGetterExists(field.getDeclaringClass(), "get", field.getName())) {
113-
actualDataFetcher = wrapExtension(new PropertyDataFetcher(field.getName()));
117+
actualDataFetcher = wrapExtension(new PropertyDataFetcher(field.getName()), field);
114118
}
115119
return actualDataFetcher;
116120
}

src/test/java/graphql/annotations/GraphQLObjectTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,6 @@ public void fields() {
214214
assertEquals(fields.get(5).getName(), "privateTest");
215215
assertEquals(fields.get(6).getName(), "publicTest");
216216

217-
assertEquals(fields.get(5).getDataFetcher().getClass(), ExtensionDataFetcherWrapper.class);
218-
assertEquals(fields.get(6).getDataFetcher().getClass(), ExtensionDataFetcherWrapper.class);
219-
220217
assertEquals(fields.get(7).getName(), "z_nonOptionalString");
221218
assertTrue(fields.get(7).getType() instanceof graphql.schema.GraphQLNonNull);
222219
}

0 commit comments

Comments
 (0)