public GraphQLFieldDefinition getMethodDefinition(DfsContext dfsContext, Class<?> objectClass, Method method) {
GraphQLFieldDefinition graphQLFieldDefinition = null;
ResolvableTypeAccessor resolvableTypeAccessor =
ResolvableTypeAccessor.forMethodReturnType(method, objectClass);
if (resolvableTypeAccessor.isGraphQLIdOrGraphQLField()) {
GraphQLOutputType graphQLOutputType = (GraphQLOutputType) createGraphQLFieldType(dfsContext, resolvableTypeAccessor, true);
List<GraphQLArgument> graphQLArguments = buildGraphQLArgumentsFromMethodParams(dfsContext, method, objectClass);
GraphQLFieldDefinition.Builder builder =
GraphQLFieldDefinition
.newFieldDefinition()
.name(resolvableTypeAccessor.getName())
.deprecate(resolvableTypeAccessor.getGraphQLDeprecationReason())
.argument(graphQLArguments)
.type(graphQLOutputType)
.description(resolvableTypeAccessor.getDescription());
if (!objectClass.isInterface()) {
String beanName = objectClass.getName() + resolvableTypeAccessor.getName();
Object object = getGraphQLSchemaBeanFactory().getBeanByType(objectClass);
builder.dataFetcher(new ReflectionGraphQLDataFetcher(getGraphQLSchemaConfig(), object, method));
}
graphQLFieldDefinition = builder.build();
addToFieldDefinitionResolverMap(dfsContext, graphQLFieldDefinition, resolvableTypeAccessor.getGraphQLComplexitySpelExpression());
}
return graphQLFieldDefinition;
}