Interface GenerateServerCodeConfiguration
- All Superinterfaces:
CommonConfiguration
,GenerateCodeCommonConfiguration
- All Known Subinterfaces:
GeneratePojoConfiguration
,GraphQLConfiguration
- Author:
- etienne-sf
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
static final String
Fields inherited from interface com.graphql_java_generator.plugin.conf.CommonConfiguration
DEFAULT_ADD_RELAY_CONNECTIONS, DEFAULT_MAX_TOKENS, DEFAULT_PACKAGE_NAME, DEFAULT_PREFIX, DEFAULT_SCHEMA_FILE_FOLDER, DEFAULT_SCHEMA_FILE_PATTERN, DEFAULT_SCHEMA_SUB_FOLDER, DEFAULT_SKIP_GENERATION_IF_SCHEMA_HAS_NOT_CHANGED, DEFAULT_SUFFIX
Fields inherited from interface com.graphql_java_generator.plugin.conf.GenerateCodeCommonConfiguration
DEFAULT_COPY_RUNTIME_SOURCES, DEFAULT_QUERY_MUTATION_EXECUTION_PROTOCOL, DEFAULT_SCHEMA_PERSONALIZATION_FILE, DEFAULT_SEPARATE_UTIL_CLASSES, DEFAULT_SOURCE_ENCODING, DEFAULT_SPRING_BEAN_SUFFIX, DEFAULT_TARGET_RESOURCE_FOLDER, DEFAULT_TARGET_SOURCE_FOLDER, DEFAULT_USE_JAKARTA_EE9
-
Method Summary
Modifier and TypeMethodDescription(only for server mode) The javaTypeForIDType is the java class that is used in the generated code for GraphQL fields that are of the GraphQL ID type.(only for server mode) The packaging is the kind of artefact generated by the project.default String
(only for server mode) Transform the list of package names returned bygetScanBasePackages()
by a list of package names, surrounded by double quotes, as it can be used in the Spring scanBasePackages property of the &SpringBootApplication Spring annotation.(only for server mode) A comma separated list of package names, without double quotes, that will also be parsed by Spring, to discover Spring beans, Spring repositories and JPA entities when the server starts.boolean
(only for server mode) Indicates if the plugin should generate add theBatchLoaderEnvironment
parameter to the batchLoader methods, in DataFetchersDelegate.boolean
(only for server mode, since 2.5) Defines if a data fetcher is needed for every GraphQL field that has input argument, and add them in the generated POJOs.boolean
(only for server mode) Defines how the methods in the data fetchers delegates are generated.default boolean
This method is used only inGeneratePojoConfiguration
.boolean
(only for server mode) Indicates whether the plugin should generate the JPA annotations, for generated objects.default void
Logs all the configuration parameters (only when in the debug level)default void
Logs all the configuration parameters for the generateServerCode task/goal (only when in the debug level)Methods inherited from interface com.graphql_java_generator.plugin.conf.CommonConfiguration
getDefaultTargetSchemaFileName, getEnumPrefix, getEnumSuffix, getInputPrefix, getInputSuffix, getInterfacePrefix, getInterfaceSuffix, getMaxTokens, getProjectDir, getSchemaFileFolder, getSchemaFilePattern, getTargetSchemaSubFolder, getTemplates, getTypePrefix, getTypeSuffix, getUnionPrefix, getUnionSuffix, isAddRelayConnections, isSkipGenerationIfSchemaHasNotChanged, logCommonConfiguration
Methods inherited from interface com.graphql_java_generator.plugin.conf.GenerateCodeCommonConfiguration
getCustomScalars, getMode, getPackageName, getQueryMutationExecutionProtocol, getSchemaPersonalizationFile, getSourceEncoding, getSpringAutoConfigurationPackage, getSpringBeanSuffix, getTargetClassFolder, getTargetResourceFolder, getTargetSourceFolder, isCopyRuntimeSources, isGenerateUtilityClasses, isSeparateUtilityClasses, isUseJakartaEE9, logGenerateCodeCommonConfiguration
-
Field Details
-
DEFAULT_GENERATE_BATCH_LOADER_ENVIRONMENT
- See Also:
-
DEFAULT_GENERATE_DATA_FETCHER_FOR_EVERY_FIELD_WITH_ARGUMENT
- See Also:
-
DEFAULT_GENERATE_DATA_LOADER_FOR_LISTS
- See Also:
-
DEFAULT_GENERATE_JPA_ANNOTATION
- See Also:
-
DEFAULT_JAVA_TYPE_FOR_ID_TYPE
- See Also:
-
DEFAULT_SCAN_BASE_PACKAGES
- See Also:
-
-
Method Details
-
getPackaging
Packaging getPackaging()(only for server mode) The packaging is the kind of artefact generated by the project. Typically: jar (for a standard Java application) or war (for a webapp) -
getJavaTypeForIDType
String getJavaTypeForIDType()(only for server mode) The javaTypeForIDType is the java class that is used in the generated code for GraphQL fields that are of the GraphQL ID type. The default value is java.util.UUID. Valid values are: java.lang.String, java.lang.Long and java.util.UUID.
This parameter is only valid for the server mode. When generating the client code, the ID is always generated as a String type, as recommended in the GraphQL doc.
In other words: when in server mode and javaTypeForIDType is not set, all GraphQL ID fields are UUID attributes in java. When in server mode and javaTypeForIDType is set to the X type, all GraphQL ID fields are X attributes in java.
Note: you can override this, by using the schema personalization capability. For more information, please have a look at the Schema Personalization doc page.
- Returns:
-
getScanBasePackages
String getScanBasePackages()(only for server mode) A comma separated list of package names, without double quotes, that will also be parsed by Spring, to discover Spring beans, Spring repositories and JPA entities when the server starts. You should use this parameter only for packages that are not subpackage of the package defined in the _packageName_ parameter and not subpackage of com.graphql_java_generator
This allows for instance, to set packageName to your.app.package.graphql, and to define your Spring beans, like the DataFetcherDelegates or your Spring data repositories in any other folder, by setting for instance scanBasePackages to your.app.package.impl, your.app.package.graphql, or just your.app.package
-
getQuotedScanBasePackages
(only for server mode) Transform the list of package names returned bygetScanBasePackages()
by a list of package names, surrounded by double quotes, as it can be used in the Spring scanBasePackages property of the &SpringBootApplication Spring annotation.- Returns:
- A string that can be added to the scanBasePackages property of &SpringBootApplication, that is: an empty String, or a list of quoted package names starting with a comma (e.g.: ", \"my.package\", \"my.other.package\"")
-
isGenerateBatchLoaderEnvironment
boolean isGenerateBatchLoaderEnvironment()(only for server mode) Indicates if the plugin should generate add the
BatchLoaderEnvironment
parameter to the batchLoader methods, in DataFetchersDelegate. This parameter allows to get the context of the Batch Loader, including the context associated to the id, when using the id has been added by theDataLoader.load(Object, Object)
method.For instance, if you have the method below, for a field named oneWithIdSubType in a DataFetcherDelegate:
@Override public CompletableFuture<AllFieldCasesWithIdSubtype> oneWithIdSubType( DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, AllFieldCasesWithIdSubtype> dataLoader, AllFieldCases source, Boolean uppercase) { return dataLoader.load(UUID.randomUUID()); }
then, in the AllFieldCasesWithIdSubtype DataFetcherDelegate, you can retrieve the uppercase this way:
@Override public List<AllFieldCasesWithIdSubtype> batchLoader(List<UUID> keys, BatchLoaderEnvironment environment) { List<AllFieldCasesWithIdSubtype> list = new ArrayList<>(keys.size()); for (UUID id : keys) { // Let's manage the uppercase parameter, that was associated with this key Boolean uppercase = (Boolean) environment.getKeyContexts().get(id); if (uppercase != null && uppercase) { item.setName(item.getName().toUpperCase()); } // Do something with the id and the uppercase value } return list; }
For more complex cases, you can store a
Map
with all the needed values, instead of just the parameter value.The default value changed since 2.0 version: it is false in 1.x version, and true since the 2.0 version
-
isGenerateDataFetcherForEveryFieldsWithArguments
boolean isGenerateDataFetcherForEveryFieldsWithArguments()(only for server mode, since 2.5) Defines if a data fetcher is needed for every GraphQL field that has input argument, and add them in the generated POJOs. This allows a better compatibility with spring-graphql, and an easy access to the field's parameters.
With this argument to false, the data fetchers are generated only for field which type is a type (not a scalar or an enum), and for the query, mutation and subscription types.
With this argument to true, the data fetchers are generated for all GraphQL fields which type is a type (not a scalar or an enum) or that has one or arguments
This parameter is available since version 2.5. Its default value is false in 2.x versions for backward compatibility with existing implementations based on the plugin. But the recommended value is true.
- Returns:
-
isGenerateDataLoaderForLists
boolean isGenerateDataLoaderForLists()(only for server mode) Defines how the methods in the data fetchers delegates are generated. The detailed information is available in the Wiki server page
When generateDataLoaderForLists is false (default mode), the data loaders are used only for fields that don't return a list. In other words, for fields which type is a sub-object with an id, two methods are generated: one which returns a
CompletableFuture
, and one which returns a noneCompletableFuture
result (that is used by the generated code only if no data loader is available).When generateDataLoaderForLists is true, the above behavior is extended to fields that are a list.
Note: if set to true, this plugin parameter make the use of data loader mandatory for every field which type is a list of GraphQL objects, which have an id. This may not be suitable, for instance when your data is stored in a relational database, where you would need a first query to retrieve the ids and push them into the data loader, then another one to retrieve the associated values. If you want to use data loader for only some of particular fields, you should consider using the
generateDataLoaderForLists
. You'll find more information on the Wiki server page.This parameter is available since version 1.18.4
- Returns:
-
isGenerateJacksonAnnotations
default boolean isGenerateJacksonAnnotations()This method is used only inGeneratePojoConfiguration
.In server mode, the Jackson annotations are always generated
- Specified by:
isGenerateJacksonAnnotations
in interfaceCommonConfiguration
- Returns:
- The
GeneratePojoConfiguration
implementation of this method always returns true - See Also:
-
isGenerateJPAAnnotation
boolean isGenerateJPAAnnotation()(only for server mode) Indicates whether the plugin should generate the JPA annotations, for generated objects.
Default value is false
-
logConfiguration
default void logConfiguration()Logs all the configuration parameters (only when in the debug level)- Specified by:
logConfiguration
in interfaceCommonConfiguration
- Specified by:
logConfiguration
in interfaceGenerateCodeCommonConfiguration
-
logGenerateServerCodeConfiguration
default void logGenerateServerCodeConfiguration()Logs all the configuration parameters for the generateServerCode task/goal (only when in the debug level)
-