Skip to content

Commit a7a78d9

Browse files
committed
Do not skip a graphql.validation wrapped DataFetcher
Closes gh-479
1 parent 65be8ed commit a7a78d9

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

spring-graphql/src/main/java/org/springframework/graphql/execution/ContextDataFetcherDecorator.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,22 +116,23 @@ public TraversalControl visitGraphQLFieldDefinition(
116116
GraphQLFieldsContainer parent = (GraphQLFieldsContainer) context.getParentNode();
117117
DataFetcher<?> dataFetcher = codeRegistry.getDataFetcher(parent, fieldDefinition);
118118

119-
if (skipDataFetcher(dataFetcher)) {
120-
return TraversalControl.CONTINUE;
119+
if (applyDecorator(dataFetcher)) {
120+
boolean handlesSubscription = parent.getName().equals("Subscription");
121+
dataFetcher = new ContextDataFetcherDecorator(dataFetcher, handlesSubscription, compositeResolver);
122+
codeRegistry.dataFetcher(parent, fieldDefinition, dataFetcher);
121123
}
122124

123-
boolean handlesSubscription = parent.getName().equals("Subscription");
124-
dataFetcher = new ContextDataFetcherDecorator(dataFetcher, handlesSubscription, compositeResolver);
125-
codeRegistry.dataFetcher(parent, fieldDefinition, dataFetcher);
126125
return TraversalControl.CONTINUE;
127126
}
128127

129-
private boolean skipDataFetcher(DataFetcher<?> dataFetcher) {
128+
private boolean applyDecorator(DataFetcher<?> dataFetcher) {
130129
Class<?> type = dataFetcher.getClass();
131-
if (type.getPackage().getName().startsWith("graphql.")) {
132-
return !type.getSimpleName().startsWith("DataFetcherFactories");
130+
String packageName = type.getPackage().getName();
131+
if (packageName.startsWith("graphql.")) {
132+
return (type.getSimpleName().startsWith("DataFetcherFactories") ||
133+
packageName.startsWith("graphql.validation"));
133134
}
134-
return false;
135+
return true;
135136
}
136137
};
137138
}

0 commit comments

Comments
 (0)