2020public class ResolveType {
2121
2222
23- public GraphQLObjectType resolveType (ExecutionContext executionContext , MergedField field , Object source , ExecutionStepInfo executionStepInfo , GraphQLType fieldType ) {
23+ public GraphQLObjectType resolveType (ExecutionContext executionContext , MergedField field , Object source , ExecutionStepInfo executionStepInfo , GraphQLType fieldType , Object localContext ) {
2424 GraphQLObjectType resolvedType ;
25+ DataFetchingFieldSelectionSet fieldSelectionSet = buildSelectionSet (executionContext , field , (GraphQLOutputType ) fieldType , executionStepInfo );
26+ TypeResolutionEnvironment env = TypeResolutionParameters .newParameters ()
27+ .field (field )
28+ .fieldType (fieldType )
29+ .value (source )
30+ .argumentValues (executionStepInfo .getArguments ())
31+ .selectionSet (fieldSelectionSet )
32+ .context (executionContext .getContext ())
33+ .graphQLContext (executionContext .getGraphQLContext ())
34+ .localContext (localContext )
35+ .schema (executionContext .getGraphQLSchema ())
36+ .build ();
2537 if (fieldType instanceof GraphQLInterfaceType ) {
26- DataFetchingFieldSelectionSet fieldSelectionSet = buildSelectionSet (executionContext , field , (GraphQLOutputType ) fieldType , executionStepInfo );
27- TypeResolutionParameters resolutionParams = TypeResolutionParameters .newParameters ()
28- .graphQLInterfaceType ((GraphQLInterfaceType ) fieldType )
29- .field (field )
30- .value (source )
31- .argumentValues (executionStepInfo .getArguments ())
32- .selectionSet (fieldSelectionSet )
33- .context (executionContext .getContext ())
34- .graphQLContext (executionContext .getGraphQLContext ())
35- .schema (executionContext .getGraphQLSchema ()).build ();
36- resolvedType = resolveTypeForInterface (resolutionParams );
37-
38+ resolvedType = resolveTypeForInterface (env , (GraphQLInterfaceType ) fieldType );
3839 } else if (fieldType instanceof GraphQLUnionType ) {
39- DataFetchingFieldSelectionSet selectionSet = buildSelectionSet (executionContext , field , (GraphQLOutputType ) fieldType , executionStepInfo );
40- TypeResolutionParameters resolutionParams = TypeResolutionParameters .newParameters ()
41- .graphQLUnionType ((GraphQLUnionType ) fieldType )
42- .field (field )
43- .value (source )
44- .argumentValues (executionStepInfo .getArguments ())
45- .selectionSet (selectionSet )
46- .context (executionContext .getContext ())
47- .graphQLContext (executionContext .getGraphQLContext ())
48- .schema (executionContext .getGraphQLSchema ()).build ();
49- resolvedType = resolveTypeForUnion (resolutionParams );
40+ resolvedType = resolveTypeForUnion (env , (GraphQLUnionType ) fieldType );
5041 } else {
5142 resolvedType = (GraphQLObjectType ) fieldType ;
5243 }
@@ -59,28 +50,23 @@ private DataFetchingFieldSelectionSet buildSelectionSet(ExecutionContext executi
5950 return DataFetchingFieldSelectionSetImpl .newCollector (executionContext .getGraphQLSchema (), fieldType , normalizedFieldSupplier );
6051 }
6152
62- public GraphQLObjectType resolveTypeForInterface (TypeResolutionParameters params ) {
63- TypeResolutionEnvironment env = new TypeResolutionEnvironment (params .getValue (), params .getArgumentValues (), params .getField (), params .getGraphQLInterfaceType (), params .getSchema (), params .getContext (), params .getGraphQLContext (), params .getSelectionSet ());
64- GraphQLInterfaceType abstractType = params .getGraphQLInterfaceType ();
65- TypeResolver typeResolver = params .getSchema ().getCodeRegistry ().getTypeResolver (abstractType );
66- return resolveAbstractType (params , env , typeResolver , abstractType );
53+ public GraphQLObjectType resolveTypeForInterface (TypeResolutionEnvironment env , GraphQLInterfaceType abstractType ) {
54+ TypeResolver typeResolver = env .getSchema ().getCodeRegistry ().getTypeResolver (abstractType );
55+ return resolveAbstractType (env , typeResolver , abstractType );
6756 }
6857
69- public GraphQLObjectType resolveTypeForUnion (TypeResolutionParameters params ) {
70- TypeResolutionEnvironment env = new TypeResolutionEnvironment (params .getValue (), params .getArgumentValues (), params .getField (), params .getGraphQLUnionType (), params .getSchema (), params .getContext (), params .getGraphQLContext (), params .getSelectionSet ());
71- GraphQLUnionType abstractType = params .getGraphQLUnionType ();
72- TypeResolver typeResolver = params .getSchema ().getCodeRegistry ().getTypeResolver (abstractType );
73- return resolveAbstractType (params , env , typeResolver , abstractType );
58+ public GraphQLObjectType resolveTypeForUnion (TypeResolutionEnvironment env , GraphQLUnionType abstractType ) {
59+ TypeResolver typeResolver = env .getSchema ().getCodeRegistry ().getTypeResolver (abstractType );
60+ return resolveAbstractType (env , typeResolver , abstractType );
7461 }
7562
76- private GraphQLObjectType resolveAbstractType (TypeResolutionParameters params , TypeResolutionEnvironment env , TypeResolver typeResolver , GraphQLNamedOutputType abstractType ) {
63+ private GraphQLObjectType resolveAbstractType (TypeResolutionEnvironment env , TypeResolver typeResolver , GraphQLNamedOutputType abstractType ) {
7764 GraphQLObjectType result = typeResolver .getType (env );
78-
7965 if (result == null ) {
8066 throw new UnresolvedTypeException (abstractType );
8167 }
8268
83- if (!params .getSchema ().isPossibleType (abstractType , result )) {
69+ if (!env .getSchema ().isPossibleType (abstractType , result )) {
8470 throw new UnresolvedTypeException (abstractType , result );
8571 }
8672
0 commit comments