@@ -113,40 +113,49 @@ public Object get(DataFetchingEnvironment environment) throws Exception {
113
113
* data fetchers with the {@link ContextDataFetcherDecorator}.
114
114
*/
115
115
static GraphQLTypeVisitor createVisitor (List <SubscriptionExceptionResolver > resolvers ) {
116
+ return new ContextTypeVisitor (resolvers );
117
+ }
116
118
117
- SubscriptionExceptionResolver exceptionResolver = new CompositeSubscriptionExceptionResolver (resolvers );
118
119
119
- return new GraphQLTypeVisitorStub () {
120
+ /**
121
+ * Type visitor to apply {@link ContextDataFetcherDecorator}.
122
+ */
123
+ private static class ContextTypeVisitor extends GraphQLTypeVisitorStub {
120
124
121
- @ Override
122
- public TraversalControl visitGraphQLFieldDefinition (
123
- GraphQLFieldDefinition fieldDefinition , TraverserContext <GraphQLSchemaElement > context ) {
125
+ private final SubscriptionExceptionResolver exceptionResolver ;
124
126
125
- TypeVisitorHelper visitorHelper = context .getVarFromParents (TypeVisitorHelper .class );
126
- GraphQLCodeRegistry .Builder codeRegistry = context .getVarFromParents (GraphQLCodeRegistry .Builder .class );
127
+ private ContextTypeVisitor (List <SubscriptionExceptionResolver > resolvers ) {
128
+ this .exceptionResolver = new CompositeSubscriptionExceptionResolver (resolvers );
129
+ }
127
130
128
- GraphQLFieldsContainer parent = (GraphQLFieldsContainer ) context .getParentNode ();
129
- DataFetcher <?> dataFetcher = codeRegistry .getDataFetcher (parent , fieldDefinition );
131
+ @ Override
132
+ public TraversalControl visitGraphQLFieldDefinition (
133
+ GraphQLFieldDefinition fieldDefinition , TraverserContext <GraphQLSchemaElement > context ) {
130
134
131
- if (applyDecorator (dataFetcher )) {
132
- boolean handlesSubscription = visitorHelper .isSubscriptionType (parent );
133
- dataFetcher = new ContextDataFetcherDecorator (dataFetcher , handlesSubscription , exceptionResolver );
134
- codeRegistry .dataFetcher (parent , fieldDefinition , dataFetcher );
135
- }
135
+ TypeVisitorHelper visitorHelper = context .getVarFromParents (TypeVisitorHelper .class );
136
+ GraphQLCodeRegistry .Builder codeRegistry = context .getVarFromParents (GraphQLCodeRegistry .Builder .class );
136
137
137
- return TraversalControl .CONTINUE ;
138
+ GraphQLFieldsContainer parent = (GraphQLFieldsContainer ) context .getParentNode ();
139
+ DataFetcher <?> dataFetcher = codeRegistry .getDataFetcher (parent , fieldDefinition );
140
+
141
+ if (applyDecorator (dataFetcher )) {
142
+ boolean handlesSubscription = visitorHelper .isSubscriptionType (parent );
143
+ dataFetcher = new ContextDataFetcherDecorator (dataFetcher , handlesSubscription , exceptionResolver );
144
+ codeRegistry .dataFetcher (parent , fieldDefinition , dataFetcher );
138
145
}
139
146
140
- private boolean applyDecorator (DataFetcher <?> dataFetcher ) {
141
- Class <?> type = dataFetcher .getClass ();
142
- String packageName = type .getPackage ().getName ();
143
- if (packageName .startsWith ("graphql." )) {
144
- return (type .getSimpleName ().startsWith ("DataFetcherFactories" ) ||
145
- packageName .startsWith ("graphql.validation" ));
146
- }
147
- return true ;
147
+ return TraversalControl .CONTINUE ;
148
+ }
149
+
150
+ private boolean applyDecorator (DataFetcher <?> dataFetcher ) {
151
+ Class <?> type = dataFetcher .getClass ();
152
+ String packageName = type .getPackage ().getName ();
153
+ if (packageName .startsWith ("graphql." )) {
154
+ return (type .getSimpleName ().startsWith ("DataFetcherFactories" ) ||
155
+ packageName .startsWith ("graphql.validation" ));
148
156
}
149
- };
157
+ return true ;
158
+ }
150
159
}
151
160
152
161
}
0 commit comments