From 07b0d55dd5cf30f9aba4d1a11dbb69de171c80e8 Mon Sep 17 00:00:00 2001 From: Isaac Mercieca Date: Thu, 27 Apr 2023 09:40:01 +0200 Subject: [PATCH 1/5] added support for specifying the template source for custom templates --- docs/codegen-options.md | 3 +- .../gradle/GraphQLCodegenGradleTask.java | 17 ++++++++++ .../graphql/codegen/GraphQLCodegenMojo.java | 9 ++++++ .../codegen/GraphQLCodegenPlugin.scala | 2 ++ .../FreeMarkerTemplateFilesCreator.java | 3 +- .../FreeMarkerTemplatesRegistry.java | 25 ++++++++++----- .../model/GraphQLCodegenConfiguration.java | 11 ++++++- .../graphql/codegen/model/MappingConfig.java | 31 +++++++++++++------ .../graphql/codegen/model/MappingContext.java | 7 ++++- .../GraphQLCodegenCustomTemplatesTest.java | 2 +- 10 files changed, 88 insertions(+), 22 deletions(-) diff --git a/docs/codegen-options.md b/docs/codegen-options.md index 0580d1faa..a8b86b768 100644 --- a/docs/codegen-options.md +++ b/docs/codegen-options.md @@ -31,7 +31,8 @@ | `typeResolverPrefix` | String | Empty | Sets the prefix for GraphQL type resolver classes. | | `typeResolverSuffix` | String | `Resolver` | Sets the suffix for GraphQL type resolver classes. | | `customTypesMapping` | Map(String,String) | Empty | *See [CustomTypesMapping](#option-customtypesmapping)* | -| `customTemplates` | Map(String,String) | Empty | Use to supply paths to custom FreeMarker templates for code generation. | +| `customTemplatesRoot` | File | Project's dir | Use to supply the path the to custom FreeMarker templates root directory. | +| `customTemplates` | Map(String,String) | Empty | Use to supply paths to custom FreeMarker templates for code generation. | | `customAnnotationsMapping` | Map(String,String[]) | Empty | *See [CustomAnnotationsMapping](#option-customannotationsmapping)* | | `directiveAnnotationsMapping` | Map(String,String[]) | Empty | *See [DirectiveAnnotationsMapping](#option-directiveannotationsmapping)* | | `fieldsWithResolvers` | Set(String) | Empty | Fields that require Resolvers should be defined here in format: `TypeName.fieldName` or `TypeName` or `@directive`. E.g.: `Person`, `Person.friends`, `@customResolver`. | diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java index 223a88ee8..015091d1c 100644 --- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java +++ b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java @@ -54,7 +54,10 @@ public class GraphQLCodegenGradleTask extends DefaultTask implements GraphQLCode private Map customTypesMapping = new HashMap<>(); private Map> customAnnotationsMapping = new HashMap<>(); + + private File customTemplatesRoot = null; private Map customTemplates = new HashMap<>(); + private Map> directiveAnnotationsMapping = new HashMap<>(); private String packageName; private String apiPackageName; @@ -136,6 +139,9 @@ public void generate() throws Exception { customTypesMapping != null ? customTypesMapping : new HashMap<>()); mappingConfig.setCustomAnnotationsMapping( customAnnotationsMapping != null ? customAnnotationsMapping : new HashMap<>()); + mappingConfig.setCustomTemplatesRoot( + customTemplatesRoot != null ? customTemplatesRoot : getProject().getProjectDir() + ); mappingConfig.setCustomTemplates( customTemplates != null ? customTemplates : new HashMap<>()); mappingConfig.setDirectiveAnnotationsMapping( @@ -336,6 +342,17 @@ public void setCustomTypesMapping(Map customTypesMapping) { this.customTypesMapping = customTypesMapping; } + @InputFile + @Optional + @Override + public File getCustomTemplatesRoot() { + return customTemplatesRoot; + } + + public void setCustomTemplatesRoot(File customTemplatesRoot) { + this.customTemplatesRoot = customTemplatesRoot; + } + @Input @Optional @Override diff --git a/plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java b/plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java index 8cc9ec448..aebc87214 100644 --- a/plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java +++ b/plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java @@ -65,6 +65,9 @@ public class GraphQLCodegenMojo extends AbstractMojo implements GraphQLCodegenCo @Parameter private Map customAnnotationsMapping; + @Parameter + private File customTemplatesRoot; + @Parameter private Map customTemplates; @@ -249,6 +252,7 @@ public void execute() throws MojoExecutionException { MappingConfig mappingConfig = new MappingConfig(); mappingConfig.setPackageName(packageName); mappingConfig.setCustomTypesMapping(convertToMap(customTypesMapping)); + mappingConfig.setCustomTemplatesRoot(customTemplatesRoot); mappingConfig.setCustomTemplates(customTemplates); mappingConfig.setCustomAnnotationsMapping(convertToListsMap(customAnnotationsMapping)); mappingConfig.setDirectiveAnnotationsMapping(convertToListsMap(directiveAnnotationsMapping)); @@ -739,6 +743,11 @@ private static Map convertToMap(Properties properties) { result.put(name, properties.getProperty(name)); } return result; + } + + @Override + public File getCustomTemplatesRoot() { + return customTemplatesRoot == null ? project.getBasedir() : customTemplatesRoot; } @Override diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala index dfa99b933..0ce7c9ccf 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala @@ -67,6 +67,7 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co generateJacksonTypeIdResolver := MappingConfigConstants.DEFAULT_GENERATE_JACKSON_TYPE_ID_RESOLVER, customTypesMapping := new JHashMap[String, String](), // TODO use scala Map, convert to java Map customAnnotationsMapping := new JHashMap[String, JList[String]](), + customTemplatesRoot := new File("."), customTemplates := new JHashMap[String, String](), directiveAnnotationsMapping := new JHashMap[String, JList[String]](), javaxValidationApiVersion := None, @@ -150,6 +151,7 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co mappingConfig.setTypeResolverPrefix((GraphQLCodegenConfig / typeResolverPrefix).value.orNull) mappingConfig.setModelValidationAnnotation((GraphQLCodegenConfig / modelValidationAnnotation).value) mappingConfig.setCustomAnnotationsMapping((GraphQLCodegenConfig / customAnnotationsMapping).value) + mappingConfig.setCustomTemplatesRoot((GraphQLCodegenConfig / customTemplatesRoot).value) mappingConfig.setCustomTemplates((GraphQLCodegenConfig / customTemplates).value) mappingConfig.setGenerateEqualsAndHashCode((GraphQLCodegenConfig / generateEqualsAndHashCode).value) mappingConfig.setGenerateImmutableModels((GraphQLCodegenConfig / generateImmutableModels).value) diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplateFilesCreator.java b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplateFilesCreator.java index c15f763c7..3c5da2d15 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplateFilesCreator.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplateFilesCreator.java @@ -63,8 +63,9 @@ private static Template getTemplateForTypeAndLanguage(MappingContext mappingCont if (mappingContext.getCustomTemplates() != null) { templatePath = mappingContext.getCustomTemplates().get(templateType.name()); } + if (templatePath != null) { - return FreeMarkerTemplatesRegistry.getCustomTemplates(templatePath); + return FreeMarkerTemplatesRegistry.getCustomTemplate(mappingContext.getCustomTemplatesRoot(), templatePath); } else { return FreeMarkerTemplatesRegistry.getTemplateWithLang(language, templateType); } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java index f1558d33a..6e7fb81a4 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java @@ -28,7 +28,7 @@ class FreeMarkerTemplatesRegistry { new EnumMap<>(GeneratedLanguage.class); private static final Configuration configuration; - + static { try { configuration = buildFreeMarkerTemplateConfiguration(); @@ -64,12 +64,21 @@ private static String buildTemplatePath(FreeMarkerTemplateType templateType, Gen templateType.name().toLowerCase()); } - private static Configuration buildFreeMarkerTemplateConfiguration() throws IOException { - Configuration configuration = new Configuration(FREEMARKER_TEMPLATE_VERSION); + private static Configuration buildFreeMarkerTemplateConfiguration() { ClassTemplateLoader classTemplateLoader = new ClassTemplateLoader(GraphQLCodegen.class.getClassLoader(), ""); - FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(new File(".")); - configuration.setTemplateLoader( - new MultiTemplateLoader(new TemplateLoader[] {classTemplateLoader, fileTemplateLoader})); + + return buildFreeMarkerTemplateConfiguration(classTemplateLoader); + } + + private static Configuration buildFreeMarkerCustomTemplateConfiguration(File file) throws IOException { + FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(file); + + return buildFreeMarkerTemplateConfiguration(fileTemplateLoader); + } + + private static Configuration buildFreeMarkerTemplateConfiguration(TemplateLoader templateLoader) { + Configuration configuration = new Configuration(FREEMARKER_TEMPLATE_VERSION); + configuration.setTemplateLoader(templateLoader); configuration.setDefaultEncoding(DEFAULT_ENCODING); configuration.setOutputFormat(PlainTextOutputFormat.INSTANCE); configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); @@ -79,9 +88,9 @@ private static Configuration buildFreeMarkerTemplateConfiguration() throws IOExc return configuration; } - public static Template getCustomTemplates(String templatePath) { + public static Template getCustomTemplate(File templateRoot, String templatePath) { try { - return configuration.getTemplate(templatePath); + return buildFreeMarkerCustomTemplateConfiguration(templateRoot).getTemplate(templatePath); } catch (IOException e) { throw new UnableToLoadFreeMarkerTemplateException(e); } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/GraphQLCodegenConfiguration.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/GraphQLCodegenConfiguration.java index 6b37b4fd6..1a8863bf5 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/GraphQLCodegenConfiguration.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/GraphQLCodegenConfiguration.java @@ -1,6 +1,8 @@ package com.kobylynskyi.graphql.codegen.model; import com.kobylynskyi.graphql.codegen.generators.FreeMarkerTemplateType; + +import java.io.File; import java.util.List; import java.util.Map; import java.util.Set; @@ -29,10 +31,17 @@ public interface GraphQLCodegenConfiguration { */ Map getCustomTypesMapping(); + /** + * Can be used to specify the root directory for the custom FreeMaker templates + * + * @return the directory source for the root directory + */ + File getCustomTemplatesRoot(); + /** * Can be used to supply paths to custom FreeMarker templates for code generation. * - * @return a map, where key is a tempalte type and a value is path to a FreeMarker template + * @return a map, where key is a template type and a value is path to a FreeMarker template */ Map getCustomTemplates(); diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java index 7faa1dda9..93408d4b7 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java @@ -1,6 +1,8 @@ package com.kobylynskyi.graphql.codegen.model; import com.kobylynskyi.graphql.codegen.generators.FreeMarkerTemplateType; + +import java.io.File; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -86,6 +88,8 @@ public class MappingConfig implements GraphQLCodegenConfiguration, Combinable parametrizedResolverAnnotations = new HashSet<>(); private Map customTypesMapping = new HashMap<>(); + + private File customTemplatesRoot = new File("."); private Map customTemplates = new HashMap<>(); private Set typesAsInterfaces = new HashSet<>(); @@ -247,6 +251,24 @@ public void setCustomTypesMapping(Map customTypesMapping) { this.customTypesMapping = customTypesMapping; } + @Override + public File getCustomTemplatesRoot() { + return customTemplatesRoot; + } + + public void setCustomTemplatesRoot(File customTemplatesRoot) { + this.customTemplatesRoot = customTemplatesRoot; + } + + @Override + public Map getCustomTemplates() { + return customTemplates; + } + + public void setCustomTemplates(Map customTemplates) { + this.customTemplates = customTemplates; + } + /** * Provide a path to a custom template for the specific FreeMarker template type (if absent). * @@ -260,15 +282,6 @@ public void putCustomTemplatesIfAbsent(String from, String to) { customTemplates.computeIfAbsent(from, k -> to); } - @Override - public Map getCustomTemplates() { - return customTemplates; - } - - public void setCustomTemplates(Map customTemplates) { - this.customTemplates = customTemplates; - } - @Override public Map> getCustomAnnotationsMapping() { return customAnnotationsMapping; diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java index 9d80bc411..ec12f3c93 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java @@ -84,7 +84,12 @@ public Boolean isGenerateSealedInterfaces() { public Map getCustomTypesMapping() { return config.getCustomTypesMapping(); } - + + @Override + public File getCustomTemplatesRoot() { + return config.getCustomTemplatesRoot(); + } + @Override public Map getCustomTemplates() { return config.getCustomTemplates(); diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java index 0dcf9c3de..82377359d 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java @@ -36,7 +36,7 @@ void cleanup() { @Test void generate_CustomTemplates_Type() throws Exception { - mappingConfig.putCustomTemplatesIfAbsent(FreeMarkerTemplateType.TYPE.name(), "/template/record_type.ftl"); + mappingConfig.putCustomTemplatesIfAbsent(FreeMarkerTemplateType.TYPE.name(), "src/test/resources/template/record_type.ftl"); generate("src/test/resources/schemas/test.graphqls"); From 56c1b00cd17024a27871484ab3b599e00716eb6a Mon Sep 17 00:00:00 2001 From: Isaac Mercieca Date: Tue, 2 May 2023 09:38:14 +0200 Subject: [PATCH 2/5] formatted test sources --- .../graphql/codegen/GraphQLCodegenCustomTemplatesTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java index 82377359d..1327ce1ef 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenCustomTemplatesTest.java @@ -36,7 +36,10 @@ void cleanup() { @Test void generate_CustomTemplates_Type() throws Exception { - mappingConfig.putCustomTemplatesIfAbsent(FreeMarkerTemplateType.TYPE.name(), "src/test/resources/template/record_type.ftl"); + mappingConfig.putCustomTemplatesIfAbsent( + FreeMarkerTemplateType.TYPE.name(), + "src/test/resources/template/record_type.ftl" + ); generate("src/test/resources/schemas/test.graphqls"); From 1e6dee2e8dc3fdfe4bb7851cf53c33cfebeacb93 Mon Sep 17 00:00:00 2001 From: Isaac Mercieca Date: Tue, 2 May 2023 11:59:47 +0200 Subject: [PATCH 3/5] resolved issues with sbt plugin --- .../github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala | 2 ++ .../dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala index f31cf8a50..fdc728527 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala @@ -43,6 +43,8 @@ trait GraphQLCodegenKeys { val customAnnotationsMapping = settingKey[util.Map[String, util.List[String]]]("customAnnotationsMapping") + val customTemplatesRoot = settingKey[File]("customTemplatesRoot") + val customTemplates = settingKey[util.Map[String, String]]("customTemplates") val generateEqualsAndHashCode = diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala index 0ce7c9ccf..6201e5c09 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala @@ -67,7 +67,7 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co generateJacksonTypeIdResolver := MappingConfigConstants.DEFAULT_GENERATE_JACKSON_TYPE_ID_RESOLVER, customTypesMapping := new JHashMap[String, String](), // TODO use scala Map, convert to java Map customAnnotationsMapping := new JHashMap[String, JList[String]](), - customTemplatesRoot := new File("."), + customTemplatesRoot := (configuration / baseDirectory).value, customTemplates := new JHashMap[String, String](), directiveAnnotationsMapping := new JHashMap[String, JList[String]](), javaxValidationApiVersion := None, From 2d156ac05c51b49fb155f373285945933a9e3995 Mon Sep 17 00:00:00 2001 From: Isaac Mercieca Date: Tue, 2 May 2023 12:13:10 +0200 Subject: [PATCH 4/5] formatted source class according to checkstyle rules --- .../generators/FreeMarkerTemplatesRegistry.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java index 6e7fb81a4..bb4b7d837 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java @@ -5,7 +5,6 @@ import com.kobylynskyi.graphql.codegen.model.exception.UnableToLoadFreeMarkerTemplateException; import freemarker.cache.ClassTemplateLoader; import freemarker.cache.FileTemplateLoader; -import freemarker.cache.MultiTemplateLoader; import freemarker.cache.TemplateLoader; import freemarker.core.PlainTextOutputFormat; import freemarker.ext.beans.BeansWrapper; @@ -70,13 +69,7 @@ private static Configuration buildFreeMarkerTemplateConfiguration() { return buildFreeMarkerTemplateConfiguration(classTemplateLoader); } - private static Configuration buildFreeMarkerCustomTemplateConfiguration(File file) throws IOException { - FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(file); - - return buildFreeMarkerTemplateConfiguration(fileTemplateLoader); - } - - private static Configuration buildFreeMarkerTemplateConfiguration(TemplateLoader templateLoader) { + private static Configuration buildFreeMarkerTemplateConfiguration(TemplateLoader templateLoader) { Configuration configuration = new Configuration(FREEMARKER_TEMPLATE_VERSION); configuration.setTemplateLoader(templateLoader); configuration.setDefaultEncoding(DEFAULT_ENCODING); @@ -85,9 +78,16 @@ private static Configuration buildFreeMarkerTemplateConfiguration(TemplateLoader configuration.setLogTemplateExceptions(false); configuration.setWrapUncheckedExceptions(true); configuration.setSharedVariable("statics", new BeansWrapper(FREEMARKER_TEMPLATE_VERSION).getStaticModels()); + return configuration; } + private static Configuration buildFreeMarkerCustomTemplateConfiguration(File file) throws IOException { + FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(file); + + return buildFreeMarkerTemplateConfiguration(fileTemplateLoader); + } + public static Template getCustomTemplate(File templateRoot, String templatePath) { try { return buildFreeMarkerCustomTemplateConfiguration(templateRoot).getTemplate(templatePath); From 2c19b52a55596a9e2fa4d76a684079a3397e5d9e Mon Sep 17 00:00:00 2001 From: Isaac Mercieca Date: Tue, 2 May 2023 12:36:50 +0200 Subject: [PATCH 5/5] updated scala plugin to resolve to the working directory --- .../dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala index 6201e5c09..ff91ea3d9 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala @@ -67,7 +67,7 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co generateJacksonTypeIdResolver := MappingConfigConstants.DEFAULT_GENERATE_JACKSON_TYPE_ID_RESOLVER, customTypesMapping := new JHashMap[String, String](), // TODO use scala Map, convert to java Map customAnnotationsMapping := new JHashMap[String, JList[String]](), - customTemplatesRoot := (configuration / baseDirectory).value, + customTemplatesRoot := file("."), customTemplates := new JHashMap[String, String](), directiveAnnotationsMapping := new JHashMap[String, JList[String]](), javaxValidationApiVersion := None,