public class BaseSpqrSchemaGenerator
extends io.leangen.graphql.GraphQLSchemaGenerator
This class is the main entry point to the library. It is used to generate a GraphQL schema by analyzing the registered classes
and exposing the chosen methods as GraphQL queries or mutations. The process of choosing the methods to expose is delegated
to ResolverBuilder
instances, and a different set of builders can be attached to each registered class.
One such coupling of a registered class and a set of builders is modeled by an instance of OperationSource
.
Methods of the with*OperationSource
family are used to register sources to be analyzed.
Builders can also be registered globally (to be used when none are provided explicitly) via withResolverBuilders(ResolverBuilder...)
.
The process of mapping the Java methods to GraphQL queries/mutations will also transparently map all encountered Java types
to corresponding GraphQL types. The entire mapping process is handled by an instance OperationMapper
where actual type
mapping is delegated to different instances of TypeMapper
.
To customize the mapping process, clients can registers their own TypeMapper
s using withTypeMappers(TypeMapper...)
.
Runtime conversion between values provided by the GraphQL client and those expected by Java code might be needed.
This is handled by InputConverter
instances.
Similarly, the conversion between values returned by Java code and those expected by the GraphQL client (if needed) is
handled by OutputConverter
instances.
Custom implementations of both InputConverter
and OutputConverter
can be provided using
withInputConverters(InputConverter[])
and withOutputConverters(OutputConverter[])
respectively.
Example:
UserService userService = new UserService(); //could also be injected by a framework
GraphQLSchema schema = new GraphQLSchemaGenerator()
.withOperationsFromSingletons(userService) //register an operations source and use the default strategy
.withNestedResolverBuildersForType(User.class, new BeanResolverBuilder()) //customize how queries are extracted from User.class
.generate();
GraphQL graphQL = new GraphQL(schema);
//keep the reference to GraphQL instance and execute queries against it.
//this query selects a user by ID and requests name and regDate fields only
ExecutionResult result = graphQL.execute(
"{ user (id: 123) {
name,
regDate
}}");
Modifier and Type | Class and Description |
---|---|
static interface |
BaseSpqrSchemaGenerator.CodeRegistryBuilder |
protected static class |
BaseSpqrSchemaGenerator.CodeRegistryMerger |
protected static class |
BaseSpqrSchemaGenerator.DelegatingResolverInterceptorFactory |
protected static class |
BaseSpqrSchemaGenerator.GlobalResolverInterceptorFactory |
protected static class |
BaseSpqrSchemaGenerator.MemoizedValueMapperFactory |
protected static class |
BaseSpqrSchemaGenerator.NoOpCodeRegistryBuilder |
Modifier and Type | Field and Description |
---|---|
protected io.leangen.graphql.generator.mapping.strategy.AbstractInputHandler |
abstractInputHandler |
protected java.util.Map<java.lang.String,graphql.schema.GraphQLDirective> |
additionalDirectives |
protected java.util.List<java.lang.reflect.AnnotatedType> |
additionalDirectiveTypes |
protected java.util.Map<java.lang.String,graphql.schema.GraphQLNamedType> |
additionalTypes |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.ArgumentInjector>> |
argumentInjectorProviders |
protected java.lang.String[] |
basePackages |
protected graphql.schema.GraphQLCodeRegistry.Builder |
codeRegistry |
protected io.leangen.graphql.metadata.strategy.query.DirectiveBuilder |
directiveBuilder |
protected io.leangen.graphql.execution.GlobalEnvironment |
environment |
protected io.leangen.graphql.generator.mapping.strategy.ImplementationDiscoveryStrategy |
implDiscoveryStrategy |
protected io.leangen.graphql.metadata.strategy.InclusionStrategy |
inclusionStrategy |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.InputConverter>> |
inputConverterProviders |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.ExtendedGeneratorConfiguration,io.leangen.graphql.metadata.strategy.value.InputFieldBuilder>> |
inputFieldBuilderProviders |
protected java.util.List<io.leangen.graphql.metadata.strategy.value.InputFieldBuilder> |
inputFieldBuilders |
protected io.leangen.graphql.execution.ResolverInterceptorFactory |
interceptorFactory |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.execution.ResolverInterceptorFactory>> |
interceptorFactoryProviders |
protected io.leangen.graphql.generator.mapping.strategy.InterfaceMappingStrategy |
interfaceStrategy |
protected io.leangen.graphql.generator.JavaDeprecationMappingConfig |
javaDeprecationConfig |
protected io.leangen.graphql.metadata.messages.DelegatingMessageBundle |
messageBundle |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.module.Module>> |
moduleProviders |
protected java.lang.String |
mutationRoot |
protected java.lang.String |
mutationRootDescription |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder>> |
nestedResolverBuilderProviders |
protected io.leangen.graphql.metadata.strategy.query.OperationBuilder |
operationBuilder |
protected io.leangen.graphql.generator.OperationSourceRegistry |
operationSourceRegistry |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.OutputConverter>> |
outputConverterProviders |
protected java.util.Collection<io.leangen.graphql.GraphQLSchemaProcessor> |
processors |
protected java.lang.String |
queryRoot |
protected java.lang.String |
queryRootDescription |
protected io.leangen.graphql.generator.RelayMappingConfig |
relayMappingConfig |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder>> |
resolverBuilderProviders |
protected io.leangen.graphql.metadata.strategy.value.ScalarDeserializationStrategy |
scalarStrategy |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.SchemaTransformer>> |
schemaTransformerProviders |
protected java.lang.String |
subscriptionRoot |
protected java.lang.String |
subscriptionRootDescription |
protected java.util.List<io.leangen.graphql.generator.mapping.SchemaTransformer> |
transformers |
protected java.util.Comparator<java.lang.reflect.AnnotatedType> |
typeComparator |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,java.util.Comparator<java.lang.reflect.AnnotatedType>>> |
typeComparatorProviders |
protected io.leangen.graphql.metadata.strategy.type.TypeInfoGenerator |
typeInfoGenerator |
protected java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper>> |
typeMapperProviders |
protected java.util.List<io.leangen.graphql.generator.mapping.TypeMapper> |
typeMappers |
protected io.leangen.graphql.metadata.strategy.type.TypeTransformer |
typeTransformer |
protected io.leangen.graphql.metadata.strategy.value.ValueMapperFactory |
valueMapperFactory |
Constructor and Description |
---|
BaseSpqrSchemaGenerator()
Default constructor
|
BaseSpqrSchemaGenerator(java.lang.String queryRoot,
java.lang.String mutationRoot,
java.lang.String subscriptionRoot)
Constructor which allows to customize names of root types.
|
BaseSpqrSchemaGenerator(java.lang.String queryRoot,
java.lang.String queryRootDescription,
java.lang.String mutationRoot,
java.lang.String mutationRootDescription,
java.lang.String subscriptionRoot,
java.lang.String subscriptionRootDescription)
Constructor which allows to customize names of root types.
|
Modifier and Type | Method and Description |
---|---|
protected void |
applyProcessors(graphql.schema.GraphQLSchema.Builder builder,
io.leangen.graphql.generator.BuildContext buildContext) |
protected <E> void |
checkForDuplicates(java.lang.String extensionType,
java.util.List<E> extensions) |
protected void |
checkForEmptyOrDuplicates(java.lang.String extensionType,
java.util.List<?> extensions) |
protected void |
checkType(java.lang.reflect.AnnotatedType type) |
protected java.lang.reflect.Type |
checkType(java.lang.reflect.Type type) |
graphql.schema.GraphQLSchema |
generate()
Generates a GraphQL schema based on the results of analysis of the registered sources.
|
protected void |
init()
Sets the default values for all settings not configured explicitly,
ensuring the builder is in a valid state
|
protected boolean |
isRealType(graphql.schema.GraphQLNamedType type) |
protected void |
merge(graphql.schema.GraphQLType type,
java.util.Map<java.lang.String,graphql.schema.GraphQLNamedType> additionalTypes,
BaseSpqrSchemaGenerator.CodeRegistryBuilder updater,
graphql.schema.GraphQLCodeRegistry.Builder builder) |
BaseSpqrSchemaGenerator |
withAbstractInputHandler(io.leangen.graphql.generator.mapping.strategy.AbstractInputHandler abstractInputHandler) |
BaseSpqrSchemaGenerator |
withAbstractInputTypeResolution() |
BaseSpqrSchemaGenerator |
withAdditionalDirectives(java.lang.reflect.AnnotatedType... additionalDirectives) |
BaseSpqrSchemaGenerator |
withAdditionalDirectives(graphql.schema.GraphQLDirective... additionalDirectives) |
BaseSpqrSchemaGenerator |
withAdditionalDirectives(java.lang.reflect.Type... additionalDirectives) |
BaseSpqrSchemaGenerator |
withAdditionalTypes(java.util.Collection<? extends graphql.schema.GraphQLType> additionalTypes,
BaseSpqrSchemaGenerator.CodeRegistryBuilder codeRegistryUpdater) |
BaseSpqrSchemaGenerator |
withAdditionalTypes(java.util.Collection<? extends graphql.schema.GraphQLType> additionalTypes,
graphql.schema.GraphQLCodeRegistry codeRegistry) |
BaseSpqrSchemaGenerator |
withAdditionalTypes(java.util.Collection<graphql.schema.GraphQLType> additionalTypes)
Deprecated.
|
BaseSpqrSchemaGenerator |
withArgumentInjectors(io.leangen.graphql.generator.mapping.ArgumentInjector... argumentInjectors) |
BaseSpqrSchemaGenerator |
withArgumentInjectors(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.ArgumentInjector> provider) |
BaseSpqrSchemaGenerator |
withBasePackages(java.lang.String... basePackages) |
BaseSpqrSchemaGenerator |
withDirectiveBuilder(io.leangen.graphql.metadata.strategy.query.DirectiveBuilder directiveBuilder) |
BaseSpqrSchemaGenerator |
withImplementationDiscoveryStrategy(io.leangen.graphql.generator.mapping.strategy.ImplementationDiscoveryStrategy implDiscoveryStrategy) |
BaseSpqrSchemaGenerator |
withInclusionStrategy(io.leangen.graphql.metadata.strategy.InclusionStrategy inclusionStrategy) |
BaseSpqrSchemaGenerator |
withInputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.InputConverter> provider) |
BaseSpqrSchemaGenerator |
withInputConverters(io.leangen.graphql.generator.mapping.InputConverter<?,?>... inputConverters)
Registers custom
InputConverter s to be used for converting values provided by the GraphQL client
into those expected by the corresponding Java method. |
BaseSpqrSchemaGenerator |
withInputConvertersPrepended(io.leangen.graphql.generator.mapping.InputConverter<?,?>... inputConverters) |
BaseSpqrSchemaGenerator |
withInputFieldBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.ExtendedGeneratorConfiguration,io.leangen.graphql.metadata.strategy.value.InputFieldBuilder> provider) |
BaseSpqrSchemaGenerator |
withInputFieldBuilders(io.leangen.graphql.metadata.strategy.value.InputFieldBuilder... inputFieldBuilders) |
BaseSpqrSchemaGenerator |
withInterfaceMappingStrategy(io.leangen.graphql.generator.mapping.strategy.InterfaceMappingStrategy interfaceStrategy) |
BaseSpqrSchemaGenerator |
withJavaDeprecationReason(java.lang.String deprecationReason) |
BaseSpqrSchemaGenerator |
withJavaDeprecationRespected(boolean respectJavaDeprecation) |
BaseSpqrSchemaGenerator |
withModules(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.module.Module> provider) |
BaseSpqrSchemaGenerator |
withModules(io.leangen.graphql.module.Module... modules) |
BaseSpqrSchemaGenerator |
withNestedResolverBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder> provider) |
BaseSpqrSchemaGenerator |
withNestedResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
Globally registers
ResolverBuilder s to be used for sources that don't have explicitly assigned builders. |
BaseSpqrSchemaGenerator |
withOperationBuilder(io.leangen.graphql.metadata.strategy.query.OperationBuilder operationBuilder) |
BaseSpqrSchemaGenerator |
withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier,
java.lang.reflect.AnnotatedType beanType,
java.lang.Class<?> exposedType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Same as
withOperationsFromBean(Supplier, Type, Class, ResolverBuilder...) , except that an AnnotatedType
is used as the static type of the instances provided by serviceSupplier . |
BaseSpqrSchemaGenerator |
withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier,
java.lang.reflect.AnnotatedType beanType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Same as
withOperationsFromBean(Supplier, Type, ResolverBuilder...) , except that an AnnotatedType
is used as the static type of the instances provided by serviceSupplier . |
BaseSpqrSchemaGenerator |
withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier,
java.lang.reflect.Type beanType,
java.lang.Class<?> exposedType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Same as
withOperationsFromBean(Supplier, Type, ResolverBuilder...) , but the actual runtime type of
the instances provided by serviceSupplier will be used to choose the method to invoke at runtime. |
BaseSpqrSchemaGenerator |
withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier,
java.lang.reflect.Type beanType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Analyzes
beanType using the provided ResolverBuilder s to look for methods to be exposed
or the globally registered ResolverBuilder s if none are provided, and uses serviceSupplier
to obtain an instance on which query/mutation methods are invoked at runtime. |
BaseSpqrSchemaGenerator |
withOperationsFromSingleton(java.lang.Object serviceSingleton,
java.lang.reflect.AnnotatedType beanType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Same as
withOperationsFromSingleton(Object, Type, ResolverBuilder...) , except that an AnnotatedType is used as
serviceSingleton 's static type. |
BaseSpqrSchemaGenerator |
withOperationsFromSingleton(java.lang.Object serviceSingleton,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Register
serviceSingleton as a singleton OperationSource ,
with its class (obtained via Object.getClass() ) as its runtime type, using the provided
ResolverBuilder s to look for methods to be exposed or the globally registered
ResolverBuilder s if none are provided. |
BaseSpqrSchemaGenerator |
withOperationsFromSingleton(java.lang.Object serviceSingleton,
java.lang.reflect.Type beanType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Register
serviceSingleton as a singleton OperationSource , with beanType
as its static type, using the provided ResolverBuilder s to look for methods to be exposed
or the globally registered ResolverBuilder s if none are provided. |
BaseSpqrSchemaGenerator |
withOperationsFromSingletons(java.lang.Object... serviceSingletons)
Same as
withOperationsFromSingleton(Object, ResolverBuilder...) except that multiple beans
can be registered at the same time. |
BaseSpqrSchemaGenerator |
withOperationsFromType(java.lang.reflect.AnnotatedType serviceType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Same as
withOperationsFromType(Type, ResolverBuilder...) , except that an AnnotatedType is used. |
BaseSpqrSchemaGenerator |
withOperationsFromType(java.lang.reflect.Type serviceType,
io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
Analyzes
serviceType using the provided ResolverBuilder s to look for methods to be exposed
or the globally registered ResolverBuilder s if none are provided. |
BaseSpqrSchemaGenerator |
withOperationsFromTypes(java.lang.reflect.AnnotatedType... serviceType) |
BaseSpqrSchemaGenerator |
withOperationsFromTypes(java.lang.reflect.Type... serviceType) |
BaseSpqrSchemaGenerator |
withOutputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.OutputConverter> provider) |
BaseSpqrSchemaGenerator |
withOutputConverters(io.leangen.graphql.generator.mapping.OutputConverter<?,?>... outputConverters)
Registers custom
OutputConverter s to be used for converting values returned by the exposed Java method
into those expected by the GraphQL client. |
BaseSpqrSchemaGenerator |
withOutputConvertersPrepended(io.leangen.graphql.generator.mapping.OutputConverter<?,?>... outputConverters) |
BaseSpqrSchemaGenerator |
withRelayCompliantMutations()
Sets a flag that all mutations should be mapped in a Relay-compliant way,
using the default name and description for output wrapper fields.
|
BaseSpqrSchemaGenerator |
withRelayCompliantMutations(java.lang.String wrapperFieldName,
java.lang.String wrapperFieldDescription)
Sets a flag signifying that all mutations should be mapped in a Relay-compliant way,
using the default name and description for output wrapper fields.
|
BaseSpqrSchemaGenerator |
withRelayConnectionCheckRelaxed()
Removes the requirement on queries returning a Connection to comply with the Relay Connection spec
|
BaseSpqrSchemaGenerator |
withRelayNodeInterfaceInference(boolean enabled)
Sets the flag controlling whether the Node interface (as defined by the Relay spec) should be automatically
inferred for types that have an ID field.
|
BaseSpqrSchemaGenerator |
withResolverBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder> provider) |
BaseSpqrSchemaGenerator |
withResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
Globally registers
ResolverBuilder s to be used for sources that don't have explicitly assigned builders. |
BaseSpqrSchemaGenerator |
withResolverInterceptorFactories(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.execution.ResolverInterceptorFactory> provider) |
BaseSpqrSchemaGenerator |
withResolverInterceptors(io.leangen.graphql.execution.ResolverInterceptor... interceptors) |
BaseSpqrSchemaGenerator |
withScalarDeserializationStrategy(io.leangen.graphql.metadata.strategy.value.ScalarDeserializationStrategy scalarStrategy) |
BaseSpqrSchemaGenerator |
withSchemaProcessors(io.leangen.graphql.GraphQLSchemaProcessor... processors)
Registers custom schema processors that can perform arbitrary transformations on the schema just before it is built.
|
BaseSpqrSchemaGenerator |
withSchemaTransformers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.SchemaTransformer> provider) |
BaseSpqrSchemaGenerator |
withSchemaTransformers(io.leangen.graphql.generator.mapping.SchemaTransformer... transformers) |
BaseSpqrSchemaGenerator |
withStringInterpolation(io.leangen.graphql.metadata.messages.MessageBundle... messageBundles) |
BaseSpqrSchemaGenerator |
withTypeAdapters(io.leangen.graphql.generator.mapping.AbstractTypeAdapter<?,?>... typeAdapters)
Type adapters (instances of
AbstractTypeAdapter ) are both type mappers and bi-directional converters,
implementing TypeMapper , InputConverter and OutputConverter . |
BaseSpqrSchemaGenerator |
withTypeComparators(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,java.util.Comparator<java.lang.reflect.AnnotatedType>> provider) |
BaseSpqrSchemaGenerator |
withTypeInfoGenerator(io.leangen.graphql.metadata.strategy.type.TypeInfoGenerator typeInfoGenerator) |
BaseSpqrSchemaGenerator |
withTypeMappers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider)
Registers custom
TypeMapper s to be used for mapping Java type to GraphQL types. |
BaseSpqrSchemaGenerator |
withTypeMappers(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers)
Registers custom
TypeMapper s to be used for mapping Java type to GraphQL types. |
BaseSpqrSchemaGenerator |
withTypeMappersPrepended(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider) |
BaseSpqrSchemaGenerator |
withTypeMappersPrepended(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers) |
BaseSpqrSchemaGenerator |
withTypeTransformer(io.leangen.graphql.metadata.strategy.type.TypeTransformer transformer) |
BaseSpqrSchemaGenerator |
withValueMapperFactory(io.leangen.graphql.metadata.strategy.value.ValueMapperFactory valueMapperFactory) |
protected io.leangen.graphql.generator.mapping.strategy.InterfaceMappingStrategy interfaceStrategy
protected io.leangen.graphql.metadata.strategy.value.ScalarDeserializationStrategy scalarStrategy
protected io.leangen.graphql.generator.mapping.strategy.AbstractInputHandler abstractInputHandler
protected io.leangen.graphql.metadata.strategy.query.OperationBuilder operationBuilder
protected io.leangen.graphql.metadata.strategy.query.DirectiveBuilder directiveBuilder
protected io.leangen.graphql.metadata.strategy.value.ValueMapperFactory valueMapperFactory
protected io.leangen.graphql.metadata.strategy.InclusionStrategy inclusionStrategy
protected io.leangen.graphql.generator.mapping.strategy.ImplementationDiscoveryStrategy implDiscoveryStrategy
protected io.leangen.graphql.metadata.strategy.type.TypeInfoGenerator typeInfoGenerator
protected io.leangen.graphql.metadata.strategy.type.TypeTransformer typeTransformer
protected io.leangen.graphql.execution.GlobalEnvironment environment
protected java.lang.String[] basePackages
protected io.leangen.graphql.metadata.messages.DelegatingMessageBundle messageBundle
protected java.util.List<io.leangen.graphql.generator.mapping.TypeMapper> typeMappers
protected java.util.List<io.leangen.graphql.generator.mapping.SchemaTransformer> transformers
protected java.util.Comparator<java.lang.reflect.AnnotatedType> typeComparator
protected java.util.List<io.leangen.graphql.metadata.strategy.value.InputFieldBuilder> inputFieldBuilders
protected io.leangen.graphql.execution.ResolverInterceptorFactory interceptorFactory
protected io.leangen.graphql.generator.JavaDeprecationMappingConfig javaDeprecationConfig
protected final io.leangen.graphql.generator.OperationSourceRegistry operationSourceRegistry
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper>> typeMapperProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.SchemaTransformer>> schemaTransformerProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.InputConverter>> inputConverterProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.OutputConverter>> outputConverterProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.ArgumentInjector>> argumentInjectorProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.ExtendedGeneratorConfiguration,io.leangen.graphql.metadata.strategy.value.InputFieldBuilder>> inputFieldBuilderProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder>> resolverBuilderProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder>> nestedResolverBuilderProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.module.Module>> moduleProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.execution.ResolverInterceptorFactory>> interceptorFactoryProviders
protected final java.util.List<io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,java.util.Comparator<java.lang.reflect.AnnotatedType>>> typeComparatorProviders
protected final java.util.Collection<io.leangen.graphql.GraphQLSchemaProcessor> processors
protected final io.leangen.graphql.generator.RelayMappingConfig relayMappingConfig
protected final java.util.Map<java.lang.String,graphql.schema.GraphQLDirective> additionalDirectives
protected final java.util.List<java.lang.reflect.AnnotatedType> additionalDirectiveTypes
protected final graphql.schema.GraphQLCodeRegistry.Builder codeRegistry
protected final java.util.Map<java.lang.String,graphql.schema.GraphQLNamedType> additionalTypes
protected final java.lang.String queryRoot
protected final java.lang.String mutationRoot
protected final java.lang.String subscriptionRoot
protected final java.lang.String queryRootDescription
protected final java.lang.String mutationRootDescription
protected final java.lang.String subscriptionRootDescription
public BaseSpqrSchemaGenerator()
public BaseSpqrSchemaGenerator(java.lang.String queryRoot, java.lang.String mutationRoot, java.lang.String subscriptionRoot)
queryRoot
- name of query root typemutationRoot
- name of mutation root typesubscriptionRoot
- name of subscription root typepublic BaseSpqrSchemaGenerator(java.lang.String queryRoot, java.lang.String queryRootDescription, java.lang.String mutationRoot, java.lang.String mutationRootDescription, java.lang.String subscriptionRoot, java.lang.String subscriptionRootDescription)
queryRoot
- name of query root typequeryRootDescription
- query root descriptionmutationRoot
- name of mutation root typemutationRootDescription
- mutation root descriptionsubscriptionRoot
- name of subscription root typesubscriptionRootDescription
- subscription root descriptionpublic BaseSpqrSchemaGenerator withOperationsFromSingleton(java.lang.Object serviceSingleton, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
serviceSingleton
as a singleton OperationSource
,
with its class (obtained via Object.getClass()
) as its runtime type, using the provided
ResolverBuilder
s to look for methods to be exposed or the globally registered
ResolverBuilder
s if none are provided.
All query/mutation methods discovered by analyzing the serviceSingleton
's type will be later,
in query resolution time, invoked on this specific instance (hence the 'singleton' in the method name).
Instances of stateless service classes are commonly registered this way.
implNote: Injection containers (like Spring or CDI) will often wrap managed bean instances into proxies,
making it difficult to reliably detect their type. For this reason, it is recommended in such cases to use
a different overload of this method and provide the type explicitly.withOperationsFromSingleton
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSingleton
- The singleton bean whose type is to be scanned for query/mutation methods and on which
those methods will be invoked in query/mutation execution timebuilders
- Custom strategy to use when analyzing beanType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromSingleton(java.lang.Object serviceSingleton, java.lang.reflect.Type beanType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
serviceSingleton
as a singleton OperationSource
, with beanType
as its static type, using the provided ResolverBuilder
s to look for methods to be exposed
or the globally registered ResolverBuilder
s if none are provided.
All query/mutation methods discovered by analyzing the beanType
will be later,
in query resolution time, invoked on this specific instance (hence the 'singleton' in the method name).
Instances of stateless service classes are commonly registered this way.withOperationsFromSingleton
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSingleton
- The singleton bean whose type is to be scanned for query/mutation methods and on which
those methods will be invoked in query/mutation execution timebeanType
- Runtime type of serviceSingleton
. Should be explicitly provided when it differs from its class
(that can be obtained via Object.getClass()
). This is commonly the case when the class is generic
or when the instance has been proxied by a framework.
Use TypeToken
to get a Type
literal
or TypeFactory
to create it dynamically.builders
- Custom strategy to use when analyzing beanType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromSingleton(java.lang.Object serviceSingleton, java.lang.reflect.AnnotatedType beanType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
withOperationsFromSingleton(Object, Type, ResolverBuilder...)
, except that an AnnotatedType
is used as
serviceSingleton
's static type. Needed when type annotations such as GraphQLNonNull
not directly declared on the class should be captured.withOperationsFromSingleton
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSingleton
- The singleton bean whose type is to be scanned for query/mutation methods and on which
those methods will be invoked in query/mutation execution timebeanType
- Runtime type of serviceSingleton
. Should be explicitly provided when it differs from its class
(that can be obtained via Object.getClass()
) and when annotations on the type should be kept.
Use TypeToken
to get an AnnotatedType
literal
or TypeFactory
to create it dynamically.builders
- Custom builders to use when analyzing beanType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromSingletons(java.lang.Object... serviceSingletons)
withOperationsFromSingleton(Object, ResolverBuilder...)
except that multiple beans
can be registered at the same time.withOperationsFromSingletons
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSingletons
- Singleton beans whose type is to be scanned for query/mutation methods and on which
those methods will be invoked in query/mutation execution timeBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier, java.lang.reflect.Type beanType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
beanType
using the provided ResolverBuilder
s to look for methods to be exposed
or the globally registered ResolverBuilder
s if none are provided, and uses serviceSupplier
to obtain an instance on which query/mutation methods are invoked at runtime.
Container managed beans (of any scope) are commonly registered this way..withOperationsFromBean
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSupplier
- The supplier that will be used to obtain an instance on which the exposed methods
will be invoked when resolving queries/mutations/subscriptions.beanType
- Static type of instances provided by serviceSupplier
.
Use TypeToken
to get a Type
literal
or TypeFactory
to create it dynamically.builders
- Custom strategy to use when analyzing beanType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier, java.lang.reflect.AnnotatedType beanType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
withOperationsFromBean(Supplier, Type, ResolverBuilder...)
, except that an AnnotatedType
is used as the static type of the instances provided by serviceSupplier
.
Needed when type annotations such as GraphQLNonNull
not directly declared on the class should be captured.withOperationsFromBean
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier, java.lang.reflect.Type beanType, java.lang.Class<?> exposedType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
withOperationsFromBean(Supplier, Type, ResolverBuilder...)
, but the actual runtime type of
the instances provided by serviceSupplier
will be used to choose the method to invoke at runtime.
This is the absolute safest approach to registering beans, and is needed when the instances are proxied
by a container (e.g. Spring, CDI or others) and can _not_ be cast to beanType
at runtime.withOperationsFromBean
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceSupplier
- The supplier that will be used to obtain an instance on which the exposed methods
will be invoked when resolving queries/mutations/subscriptions.beanType
- Static type of instances provided by serviceSupplier
.
Use TypeToken
to get a Type
literal
or TypeFactory
to create it dynamically.exposedType
- Runtime type of the instances provided by serviceSupplier
,
not necessarily possible to cast to beanType
builders
- Custom strategy to use when analyzing beanType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromBean(java.util.function.Supplier<java.lang.Object> serviceSupplier, java.lang.reflect.AnnotatedType beanType, java.lang.Class<?> exposedType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
withOperationsFromBean(Supplier, Type, Class, ResolverBuilder...)
, except that an AnnotatedType
is used as the static type of the instances provided by serviceSupplier
.
Needed when type annotations such as GraphQLNonNull
not directly declared on the class should be captured.withOperationsFromBean
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOperationsFromType(java.lang.reflect.Type serviceType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
serviceType
using the provided ResolverBuilder
s to look for methods to be exposed
or the globally registered ResolverBuilder
s if none are provided.
An instance of serviceType
on which the exposed methods are invoked at runtime must be explicitly
provided as GraphQL root
for each execution. See ExecutionInput.Builder.root(Object)
.withOperationsFromType
in class io.leangen.graphql.GraphQLSchemaGenerator
serviceType
- Type to analyze for methods to expose.
Use TypeToken
to get a Type
literal
or TypeFactory
to create it dynamically.builders
- Custom strategy to use when analyzing serviceType
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromTypes(java.lang.reflect.Type... serviceType)
withOperationsFromTypes
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOperationsFromType(java.lang.reflect.AnnotatedType serviceType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
withOperationsFromType(Type, ResolverBuilder...)
, except that an AnnotatedType
is used.
Needed when type annotations such as GraphQLNonNull
not directly declared on the class should be captured.withOperationsFromType
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOperationsFromTypes(java.lang.reflect.AnnotatedType... serviceType)
withOperationsFromTypes
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
ResolverBuilder
s to be used for sources that don't have explicitly assigned builders.withResolverBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
resolverBuilders
- builders to be globally registeredBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withResolverBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder> provider)
withResolverBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withNestedResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
ResolverBuilder
s to be used for sources that don't have explicitly assigned builders.withNestedResolverBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
resolverBuilders
- builders to be globally registeredBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withNestedResolverBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.metadata.strategy.query.ResolverBuilder> provider)
withNestedResolverBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInputFieldBuilders(io.leangen.graphql.metadata.strategy.value.InputFieldBuilder... inputFieldBuilders)
withInputFieldBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInputFieldBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.ExtendedGeneratorConfiguration,io.leangen.graphql.metadata.strategy.value.InputFieldBuilder> provider)
withInputFieldBuilders
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAbstractInputTypeResolution()
withAbstractInputTypeResolution
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAbstractInputHandler(io.leangen.graphql.generator.mapping.strategy.AbstractInputHandler abstractInputHandler)
withAbstractInputHandler
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withBasePackages(java.lang.String... basePackages)
withBasePackages
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withStringInterpolation(io.leangen.graphql.metadata.messages.MessageBundle... messageBundles)
withStringInterpolation
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withJavaDeprecationRespected(boolean respectJavaDeprecation)
withJavaDeprecationRespected
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withJavaDeprecationReason(java.lang.String deprecationReason)
withJavaDeprecationReason
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeInfoGenerator(io.leangen.graphql.metadata.strategy.type.TypeInfoGenerator typeInfoGenerator)
withTypeInfoGenerator
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withValueMapperFactory(io.leangen.graphql.metadata.strategy.value.ValueMapperFactory valueMapperFactory)
withValueMapperFactory
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInterfaceMappingStrategy(io.leangen.graphql.generator.mapping.strategy.InterfaceMappingStrategy interfaceStrategy)
withInterfaceMappingStrategy
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withScalarDeserializationStrategy(io.leangen.graphql.metadata.strategy.value.ScalarDeserializationStrategy scalarStrategy)
withScalarDeserializationStrategy
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInclusionStrategy(io.leangen.graphql.metadata.strategy.InclusionStrategy inclusionStrategy)
withInclusionStrategy
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withImplementationDiscoveryStrategy(io.leangen.graphql.generator.mapping.strategy.ImplementationDiscoveryStrategy implDiscoveryStrategy)
withImplementationDiscoveryStrategy
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeTransformer(io.leangen.graphql.metadata.strategy.type.TypeTransformer transformer)
withTypeTransformer
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeMappers(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers)
TypeMapper
s to be used for mapping Java type to GraphQL types.
Ordering of mappers is strictly important as the first TypeMapper
that supports the given Java type
will be used for mapping it.
See TypeMapper.supports(java.lang.reflect.AnnotatedElement, AnnotatedType)
withTypeMappers
in class io.leangen.graphql.GraphQLSchemaGenerator
typeMappers
- Custom type mappers to register with the builderBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withTypeMappersPrepended(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers)
withTypeMappersPrepended
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeMappersPrepended(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider)
withTypeMappersPrepended
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeMappers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider)
TypeMapper
s to be used for mapping Java type to GraphQL types.
Ordering of mappers is strictly important as the first TypeMapper
that supports the given Java type
will be used for mapping it.
See TypeMapper.supports(java.lang.reflect.AnnotatedElement, AnnotatedType)
withTypeMappers
in class io.leangen.graphql.GraphQLSchemaGenerator
provider
- Provides the customized list of TypeMappers to useBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withSchemaTransformers(io.leangen.graphql.generator.mapping.SchemaTransformer... transformers)
withSchemaTransformers
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withSchemaTransformers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.SchemaTransformer> provider)
withSchemaTransformers
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInputConverters(io.leangen.graphql.generator.mapping.InputConverter<?,?>... inputConverters)
InputConverter
s to be used for converting values provided by the GraphQL client
into those expected by the corresponding Java method. Only needed in some specific cases when usual deserialization
isn't enough, for example, when a client-provided List
should be repackaged into a Map
,
which is normally done because GraphQL type system has no direct support for maps.
Ordering of converters is strictly important as the first InputConverter
that supports the given Java type
will be used for converting it.
See InputConverter.supports(AnnotatedType)
withInputConverters
in class io.leangen.graphql.GraphQLSchemaGenerator
inputConverters
- Custom input converters to register with the builderBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withInputConvertersPrepended(io.leangen.graphql.generator.mapping.InputConverter<?,?>... inputConverters)
withInputConvertersPrepended
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withInputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.InputConverter> provider)
withInputConverters
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOutputConverters(io.leangen.graphql.generator.mapping.OutputConverter<?,?>... outputConverters)
OutputConverter
s to be used for converting values returned by the exposed Java method
into those expected by the GraphQL client. Only needed in some specific cases when usual serialization isn't enough,
for example, when an instance of Map
should be repackaged into a List
, which
is normally done because GraphQL type system has no direct support for maps.
Ordering of converters is strictly important as the first OutputConverter
that supports the given Java type
will be used for converting it.
See OutputConverter.supports(java.lang.reflect.AnnotatedElement, AnnotatedType)
withOutputConverters
in class io.leangen.graphql.GraphQLSchemaGenerator
outputConverters
- Custom output converters to register with the builderBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOutputConvertersPrepended(io.leangen.graphql.generator.mapping.OutputConverter<?,?>... outputConverters)
withOutputConvertersPrepended
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOutputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.OutputConverter> provider)
withOutputConverters
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeAdapters(io.leangen.graphql.generator.mapping.AbstractTypeAdapter<?,?>... typeAdapters)
AbstractTypeAdapter
) are both type mappers and bi-directional converters,
implementing TypeMapper
, InputConverter
and OutputConverter
.
They're used in the same way as mappers/converters individually, and exist solely because it can sometimes
be convenient to group the logic for mapping and converting to/from the same Java type in one place.
For example, because GraphQL type system has no notion of maps, Map
s require special logic
both when mapping them to a GraphQL type and when converting them before and after invoking a Java method.
For this reason, all code dealing with translating Map
s is kept in one place in
MapToListTypeAdapter
.
Ordering of mappers/converters is strictly important as the first one supporting the given Java type will be used to map/convert it.
See withTypeMappers(ExtensionProvider)
withTypeAdapters
in class io.leangen.graphql.GraphQLSchemaGenerator
typeAdapters
- Custom type adapters to register with the builderBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withArgumentInjectors(io.leangen.graphql.generator.mapping.ArgumentInjector... argumentInjectors)
withArgumentInjectors
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withArgumentInjectors(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.ArgumentInjector> provider)
withArgumentInjectors
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withModules(io.leangen.graphql.module.Module... modules)
withModules
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withModules(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.module.Module> provider)
withModules
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withResolverInterceptors(io.leangen.graphql.execution.ResolverInterceptor... interceptors)
withResolverInterceptors
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withResolverInterceptorFactories(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.execution.ResolverInterceptorFactory> provider)
withResolverInterceptorFactories
in class io.leangen.graphql.GraphQLSchemaGenerator
@Deprecated public BaseSpqrSchemaGenerator withAdditionalTypes(java.util.Collection<graphql.schema.GraphQLType> additionalTypes)
withAdditionalTypes
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAdditionalTypes(java.util.Collection<? extends graphql.schema.GraphQLType> additionalTypes, graphql.schema.GraphQLCodeRegistry codeRegistry)
withAdditionalTypes
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAdditionalTypes(java.util.Collection<? extends graphql.schema.GraphQLType> additionalTypes, BaseSpqrSchemaGenerator.CodeRegistryBuilder codeRegistryUpdater)
protected void merge(graphql.schema.GraphQLType type, java.util.Map<java.lang.String,graphql.schema.GraphQLNamedType> additionalTypes, BaseSpqrSchemaGenerator.CodeRegistryBuilder updater, graphql.schema.GraphQLCodeRegistry.Builder builder)
public BaseSpqrSchemaGenerator withAdditionalDirectives(java.lang.reflect.Type... additionalDirectives)
withAdditionalDirectives
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAdditionalDirectives(java.lang.reflect.AnnotatedType... additionalDirectives)
withAdditionalDirectives
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withAdditionalDirectives(graphql.schema.GraphQLDirective... additionalDirectives)
withAdditionalDirectives
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withTypeComparators(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,java.util.Comparator<java.lang.reflect.AnnotatedType>> provider)
withTypeComparators
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withOperationBuilder(io.leangen.graphql.metadata.strategy.query.OperationBuilder operationBuilder)
withOperationBuilder
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withDirectiveBuilder(io.leangen.graphql.metadata.strategy.query.DirectiveBuilder directiveBuilder)
withDirectiveBuilder
in class io.leangen.graphql.GraphQLSchemaGenerator
public BaseSpqrSchemaGenerator withRelayCompliantMutations()
withRelayCompliantMutations
in class io.leangen.graphql.GraphQLSchemaGenerator
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayCompliantMutations(java.lang.String wrapperFieldName, java.lang.String wrapperFieldDescription)
withRelayCompliantMutations
in class io.leangen.graphql.GraphQLSchemaGenerator
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayNodeInterfaceInference(boolean enabled)
withRelayNodeInterfaceInference
in class io.leangen.graphql.GraphQLSchemaGenerator
enabled
- Whether the inference should be enabledBaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayConnectionCheckRelaxed()
withRelayConnectionCheckRelaxed
in class io.leangen.graphql.GraphQLSchemaGenerator
BaseSpqrSchemaGenerator
instance, to allow method chainingpublic BaseSpqrSchemaGenerator withSchemaProcessors(io.leangen.graphql.GraphQLSchemaProcessor... processors)
withSchemaProcessors
in class io.leangen.graphql.GraphQLSchemaGenerator
processors
- Custom processors to call right before the GraphQL schema is builtBaseSpqrSchemaGenerator
instance, to allow method chainingprotected void init()
public graphql.schema.GraphQLSchema generate()
GraphQL
instances. See the example in the description of this class.generate
in class io.leangen.graphql.GraphQLSchemaGenerator
protected void applyProcessors(graphql.schema.GraphQLSchema.Builder builder, io.leangen.graphql.generator.BuildContext buildContext)
protected boolean isRealType(graphql.schema.GraphQLNamedType type)
protected java.lang.reflect.Type checkType(java.lang.reflect.Type type)
protected void checkType(java.lang.reflect.AnnotatedType type)
protected void checkForEmptyOrDuplicates(java.lang.String extensionType, java.util.List<?> extensions)
protected <E> void checkForDuplicates(java.lang.String extensionType, java.util.List<E> extensions)