diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt index 2dcd87bb1..aa80a4604 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt @@ -35,7 +35,6 @@ import com.netflix.graphql.dgs.internal.method.ArgumentResolver import com.netflix.graphql.dgs.internal.method.MethodDataFetcherFactory import com.netflix.graphql.dgs.scalars.UploadScalar import com.netflix.graphql.mocking.MockProvider -import graphql.GraphQLContext import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy import graphql.execution.DataFetcherExceptionHandler @@ -49,7 +48,6 @@ import graphql.schema.DataFetcherFactory import graphql.schema.GraphQLCodeRegistry import graphql.schema.GraphQLSchema import graphql.schema.idl.TypeDefinitionRegistry -import graphql.schema.visibility.DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY import graphql.schema.visibility.GraphqlFieldVisibility import io.micrometer.context.ContextRegistry import io.micrometer.context.ContextSnapshotFactory @@ -78,7 +76,7 @@ import org.springframework.mock.web.MockHttpServletRequest import org.springframework.web.context.request.NativeWebRequest import org.springframework.web.context.request.WebRequest import java.time.Duration -import java.util.* +import java.util.Optional import java.util.concurrent.Executors import java.util.concurrent.ScheduledExecutorService @@ -282,8 +280,13 @@ open class DgsAutoConfiguration( @Bean @ConditionalOnMissingBean - open fun schema(dgsSchemaProvider: DgsSchemaProvider, fieldVisibility: GraphqlFieldVisibility): GraphQLSchema { - return dgsSchemaProvider.schema(null, fieldVisibility).graphQLSchema + open fun schema(dgsSchemaProvider: DgsSchemaProvider, fieldVisibility: GraphqlFieldVisibility?): GraphQLSchema { + val result = if (fieldVisibility == null) { + dgsSchemaProvider.schema(schema = null) + } else { + dgsSchemaProvider.schema(schema = null, fieldVisibility = fieldVisibility) + } + return result.graphQLSchema } @Bean @@ -309,21 +312,7 @@ open class DgsAutoConfiguration( matchIfMissing = false ) open fun disableIntrospectionContextContributor(): GraphQLContextContributor { - return object : GraphQLContextContributor { - override fun contribute( - builder: GraphQLContext.Builder, - extensions: Map?, - requestData: DgsRequestData? - ) { - builder.put(Introspection.INTROSPECTION_DISABLED, true) - } - } - } - - @Bean - @ConditionalOnMissingBean - open fun defaultFieldVisibility(): GraphqlFieldVisibility { - return DEFAULT_FIELD_VISIBILITY + return GraphQLContextContributor { builder, _, _ -> builder.put(Introspection.INTROSPECTION_DISABLED, true) } } @Bean diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt index fe3e75812..30c4d757c 100644 --- a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt @@ -32,7 +32,6 @@ import com.netflix.graphql.dgs.springgraphql.SpringGraphQLDgsQueryExecutor import com.netflix.graphql.dgs.springgraphql.SpringGraphQLDgsReactiveQueryExecutor import com.netflix.graphql.dgs.springgraphql.webflux.DgsWebFluxGraphQLInterceptor import com.netflix.graphql.dgs.springgraphql.webmvc.DgsWebMvcGraphQLInterceptor -import graphql.GraphQLContext import graphql.execution.AsyncExecutionStrategy import graphql.execution.AsyncSerialExecutionStrategy import graphql.execution.DataFetcherExceptionHandler @@ -71,7 +70,7 @@ import org.springframework.web.reactive.result.method.annotation.CookieValueMeth import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter import org.springframework.web.servlet.mvc.method.annotation.ServletCookieValueMethodArgumentResolver import org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory -import java.util.* +import java.util.Optional /** * Framework auto configuration based on open source Spring only, without Netflix integrations. @@ -105,7 +104,7 @@ open class DgsSpringGraphQLAutoConfiguration { return DgsTypeDefinitionConfigurerBridge() } - class DgsTypeDefinitionConfigurerBridge() { + class DgsTypeDefinitionConfigurerBridge { @DgsTypeDefinitionRegistry fun typeDefinitionRegistry(typeDefinitionRegistry: TypeDefinitionRegistry): TypeDefinitionRegistry { val newTypeDefinitionRegistry = TypeDefinitionRegistry() @@ -146,15 +145,7 @@ open class DgsSpringGraphQLAutoConfiguration { matchIfMissing = false ) open fun disableIntrospectionContextContributor(): GraphQLContextContributor { - return object : GraphQLContextContributor { - override fun contribute( - builder: GraphQLContext.Builder, - extensions: Map?, - requestData: DgsRequestData? - ) { - builder.put(Introspection.INTROSPECTION_DISABLED, true) - } - } + return GraphQLContextContributor { builder, _, _ -> builder.put(Introspection.INTROSPECTION_DISABLED, true) } } @Bean diff --git a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/context/GraphQLContextContributor.kt b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/context/GraphQLContextContributor.kt index 63ae9a17f..19f01875d 100644 --- a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/context/GraphQLContextContributor.kt +++ b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/context/GraphQLContextContributor.kt @@ -23,7 +23,7 @@ import graphql.GraphQLContext * For each bean implementing this interface found, the framework will call the [contribute] method for every request. * The [contribute] method is then able to use the [GraphQLContext.Builder] to provide additional entries to place in the context. */ -interface GraphQLContextContributor { +fun interface GraphQLContextContributor { fun contribute( builder: GraphQLContext.Builder, extensions: Map?,