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 TypeMappers 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
InputConverters 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
ResolverBuilders 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 ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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
ResolverBuilders to look for methods to be exposed or the globally registered
ResolverBuilders 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 ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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 ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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
OutputConverters 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
ResolverBuilders 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
TypeMappers to be used for mapping Java type to GraphQL types. |
BaseSpqrSchemaGenerator |
withTypeMappers(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers)
Registers custom
TypeMappers 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
ResolverBuilders to look for methods to be exposed or the globally registered
ResolverBuilders 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.GraphQLSchemaGeneratorserviceSingleton - 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 beanTypeBaseSpqrSchemaGenerator 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 ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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.GraphQLSchemaGeneratorserviceSingleton - 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 beanTypeBaseSpqrSchemaGenerator 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.GraphQLSchemaGeneratorserviceSingleton - 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 beanTypeBaseSpqrSchemaGenerator 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.GraphQLSchemaGeneratorserviceSingletons - 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 ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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.GraphQLSchemaGeneratorserviceSupplier - 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 beanTypeBaseSpqrSchemaGenerator 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.GraphQLSchemaGeneratorpublic 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.GraphQLSchemaGeneratorserviceSupplier - 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 beanTypebuilders - Custom strategy to use when analyzing beanTypeBaseSpqrSchemaGenerator 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withOperationsFromType(java.lang.reflect.Type serviceType, io.leangen.graphql.metadata.strategy.query.ResolverBuilder... builders)
serviceType using the provided ResolverBuilders to look for methods to be exposed
or the globally registered ResolverBuilders 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.GraphQLSchemaGeneratorserviceType - 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 serviceTypeBaseSpqrSchemaGenerator instance, to allow method chainingpublic BaseSpqrSchemaGenerator withOperationsFromTypes(java.lang.reflect.Type... serviceType)
withOperationsFromTypes in class io.leangen.graphql.GraphQLSchemaGeneratorpublic 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withOperationsFromTypes(java.lang.reflect.AnnotatedType... serviceType)
withOperationsFromTypes in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
ResolverBuilders to be used for sources that don't have explicitly assigned builders.withResolverBuilders in class io.leangen.graphql.GraphQLSchemaGeneratorresolverBuilders - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withNestedResolverBuilders(io.leangen.graphql.metadata.strategy.query.ResolverBuilder... resolverBuilders)
ResolverBuilders to be used for sources that don't have explicitly assigned builders.withNestedResolverBuilders in class io.leangen.graphql.GraphQLSchemaGeneratorresolverBuilders - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInputFieldBuilders(io.leangen.graphql.metadata.strategy.value.InputFieldBuilder... inputFieldBuilders)
withInputFieldBuilders in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInputFieldBuilders(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.ExtendedGeneratorConfiguration,io.leangen.graphql.metadata.strategy.value.InputFieldBuilder> provider)
withInputFieldBuilders in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withAbstractInputTypeResolution()
withAbstractInputTypeResolution in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withAbstractInputHandler(io.leangen.graphql.generator.mapping.strategy.AbstractInputHandler abstractInputHandler)
withAbstractInputHandler in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withBasePackages(java.lang.String... basePackages)
withBasePackages in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withStringInterpolation(io.leangen.graphql.metadata.messages.MessageBundle... messageBundles)
withStringInterpolation in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withJavaDeprecationRespected(boolean respectJavaDeprecation)
withJavaDeprecationRespected in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withJavaDeprecationReason(java.lang.String deprecationReason)
withJavaDeprecationReason in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeInfoGenerator(io.leangen.graphql.metadata.strategy.type.TypeInfoGenerator typeInfoGenerator)
withTypeInfoGenerator in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withValueMapperFactory(io.leangen.graphql.metadata.strategy.value.ValueMapperFactory valueMapperFactory)
withValueMapperFactory in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInterfaceMappingStrategy(io.leangen.graphql.generator.mapping.strategy.InterfaceMappingStrategy interfaceStrategy)
withInterfaceMappingStrategy in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withScalarDeserializationStrategy(io.leangen.graphql.metadata.strategy.value.ScalarDeserializationStrategy scalarStrategy)
withScalarDeserializationStrategy in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInclusionStrategy(io.leangen.graphql.metadata.strategy.InclusionStrategy inclusionStrategy)
withInclusionStrategy in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withImplementationDiscoveryStrategy(io.leangen.graphql.generator.mapping.strategy.ImplementationDiscoveryStrategy implDiscoveryStrategy)
withImplementationDiscoveryStrategy in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeTransformer(io.leangen.graphql.metadata.strategy.type.TypeTransformer transformer)
withTypeTransformer in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeMappers(io.leangen.graphql.generator.mapping.TypeMapper... typeMappers)
TypeMappers 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.GraphQLSchemaGeneratortypeMappers - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeMappersPrepended(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider)
withTypeMappersPrepended in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeMappers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.TypeMapper> provider)
TypeMappers 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.GraphQLSchemaGeneratorprovider - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withSchemaTransformers(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.SchemaTransformer> provider)
withSchemaTransformers in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInputConverters(io.leangen.graphql.generator.mapping.InputConverter<?,?>... inputConverters)
InputConverters 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.GraphQLSchemaGeneratorinputConverters - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withInputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.InputConverter> provider)
withInputConverters in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withOutputConverters(io.leangen.graphql.generator.mapping.OutputConverter<?,?>... outputConverters)
OutputConverters 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.GraphQLSchemaGeneratoroutputConverters - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withOutputConverters(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.OutputConverter> provider)
withOutputConverters in class io.leangen.graphql.GraphQLSchemaGeneratorpublic 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, Maps 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 Maps 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.GraphQLSchemaGeneratortypeAdapters - 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withArgumentInjectors(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.generator.mapping.ArgumentInjector> provider)
withArgumentInjectors in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withModules(io.leangen.graphql.module.Module... modules)
withModules in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withModules(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,io.leangen.graphql.module.Module> provider)
withModules in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withResolverInterceptors(io.leangen.graphql.execution.ResolverInterceptor... interceptors)
withResolverInterceptors in class io.leangen.graphql.GraphQLSchemaGeneratorpublic 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withAdditionalTypes(java.util.Collection<? extends graphql.schema.GraphQLType> additionalTypes, graphql.schema.GraphQLCodeRegistry codeRegistry)
withAdditionalTypes in class io.leangen.graphql.GraphQLSchemaGeneratorpublic 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.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withAdditionalDirectives(java.lang.reflect.AnnotatedType... additionalDirectives)
withAdditionalDirectives in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withAdditionalDirectives(graphql.schema.GraphQLDirective... additionalDirectives)
withAdditionalDirectives in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withTypeComparators(io.leangen.graphql.ExtensionProvider<io.leangen.graphql.GeneratorConfiguration,java.util.Comparator<java.lang.reflect.AnnotatedType>> provider)
withTypeComparators in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withOperationBuilder(io.leangen.graphql.metadata.strategy.query.OperationBuilder operationBuilder)
withOperationBuilder in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withDirectiveBuilder(io.leangen.graphql.metadata.strategy.query.DirectiveBuilder directiveBuilder)
withDirectiveBuilder in class io.leangen.graphql.GraphQLSchemaGeneratorpublic BaseSpqrSchemaGenerator withRelayCompliantMutations()
withRelayCompliantMutations in class io.leangen.graphql.GraphQLSchemaGeneratorBaseSpqrSchemaGenerator instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayCompliantMutations(java.lang.String wrapperFieldName, java.lang.String wrapperFieldDescription)
withRelayCompliantMutations in class io.leangen.graphql.GraphQLSchemaGeneratorBaseSpqrSchemaGenerator instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayNodeInterfaceInference(boolean enabled)
withRelayNodeInterfaceInference in class io.leangen.graphql.GraphQLSchemaGeneratorenabled - Whether the inference should be enabledBaseSpqrSchemaGenerator instance, to allow method chainingpublic BaseSpqrSchemaGenerator withRelayConnectionCheckRelaxed()
withRelayConnectionCheckRelaxed in class io.leangen.graphql.GraphQLSchemaGeneratorBaseSpqrSchemaGenerator instance, to allow method chainingpublic BaseSpqrSchemaGenerator withSchemaProcessors(io.leangen.graphql.GraphQLSchemaProcessor... processors)
withSchemaProcessors in class io.leangen.graphql.GraphQLSchemaGeneratorprocessors - 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.GraphQLSchemaGeneratorprotected 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)