Skip to content

Commit c11a4d6

Browse files
Marvin Froedervelo
authored andcommitted
Change customTemplates Map key to be type String
1 parent 52eb425 commit c11a4d6

File tree

11 files changed

+28
-24
lines changed

11 files changed

+28
-24
lines changed

docs/codegen-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
| `typeResolverPrefix` | String | Empty | Sets the prefix for GraphQL type resolver classes. |
3232
| `typeResolverSuffix` | String | `Resolver` | Sets the suffix for GraphQL type resolver classes. |
3333
| `customTypesMapping` | Map(String,String) | Empty | *See [CustomTypesMapping](#option-customtypesmapping)* |
34-
| `customTemplates` | Map(FreeMarkerTemplateType,String) | Empty | Use to supply paths to custom FreeMarker templates for code generation. |
34+
| `customTemplates` | Map(String,String) | Empty | Use to supply paths to custom FreeMarker templates for code generation. |
3535
| `customAnnotationsMapping` | Map(String,String[]) | Empty | *See [CustomAnnotationsMapping](#option-customannotationsmapping)* |
3636
| `directiveAnnotationsMapping` | Map(String,String[]) | Empty | *See [DirectiveAnnotationsMapping](#option-directiveannotationsmapping)* |
3737
| `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`. |

plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.kobylynskyi.graphql.codegen.gradle;
22

33
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
4-
import com.kobylynskyi.graphql.codegen.generators.FreeMarkerTemplateType;
54
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
65
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
76
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
@@ -55,7 +54,7 @@ public class GraphQLCodegenGradleTask extends DefaultTask implements GraphQLCode
5554

5655
private Map<String, String> customTypesMapping = new HashMap<>();
5756
private Map<String, List<String>> customAnnotationsMapping = new HashMap<>();
58-
private Map<FreeMarkerTemplateType, String> customTemplates = new HashMap<>();
57+
private Map<String, String> customTemplates = new HashMap<>();
5958
private Map<String, List<String>> directiveAnnotationsMapping = new HashMap<>();
6059
private String packageName;
6160
private String apiPackageName;
@@ -338,11 +337,11 @@ public void setCustomTypesMapping(Map<String, String> customTypesMapping) {
338337
@Input
339338
@Optional
340339
@Override
341-
public Map<FreeMarkerTemplateType, String> getCustomTemplates() {
340+
public Map<String, String> getCustomTemplates() {
342341
return customTemplates;
343342
}
344343

345-
public void setCustomTemplates(Map<FreeMarkerTemplateType, String> customTemplates) {
344+
public void setCustomTemplates(Map<String, String> customTemplates) {
346345
this.customTemplates = customTemplates;
347346
}
348347

plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.kobylynskyi.graphql.codegen;
22

33
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
4-
import com.kobylynskyi.graphql.codegen.generators.FreeMarkerTemplateType;
54
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
65
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
76
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
@@ -67,7 +66,7 @@ public class GraphQLCodegenMojo extends AbstractMojo implements GraphQLCodegenCo
6766
private Map<String, Properties> customAnnotationsMapping;
6867

6968
@Parameter
70-
private Map<FreeMarkerTemplateType, String> customTemplates;
69+
private Map<String, String> customTemplates;
7170

7271
@Parameter
7372
private Map<String, Properties> directiveAnnotationsMapping;
@@ -743,7 +742,7 @@ private static Map<String, String> convertToMap(Properties properties) {
743742
}
744743

745744
@Override
746-
public Map<FreeMarkerTemplateType, String> getCustomTemplates() {
745+
public Map<String, String> getCustomTemplates() {
747746
if (customTemplates == null) {
748747
return new HashMap<>();
749748
}

plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenKeys.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package io.github.dreamylost.graphql.codegen
33
import java.util
44

55
import com.kobylynskyi.graphql.codegen.model._
6-
import com.kobylynskyi.graphql.codegen.generators._
76
import sbt._
87

98
/** @author
@@ -44,7 +43,7 @@ trait GraphQLCodegenKeys {
4443

4544
val customAnnotationsMapping = settingKey[util.Map[String, util.List[String]]]("customAnnotationsMapping")
4645

47-
val customTemplates = settingKey[util.Map[FreeMarkerTemplateType, String]]("customTemplates")
46+
val customTemplates = settingKey[util.Map[String, String]]("customTemplates")
4847

4948
val generateEqualsAndHashCode =
5049
settingKey[Boolean]("Specifies whether generated model classes should have equals and hashCode methods defined.")

plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.kobylynskyi.graphql.codegen.model.exception.LanguageNotSupportedExcep
77
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage._
88
import com.kobylynskyi.graphql.codegen.scala.ScalaGraphQLCodegen
99
import com.kobylynskyi.graphql.codegen.supplier._
10-
import com.kobylynskyi.graphql.codegen.generators.FreeMarkerTemplateType
1110
import sbt.{ AutoPlugin, PluginTrigger, _ }
1211
import sbt.Keys.{ sLog, sourceManaged, _ }
1312
import sbt.internal.util.complete.DefaultParsers.spaceDelimited
@@ -68,7 +67,7 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co
6867
generateJacksonTypeIdResolver := MappingConfigConstants.DEFAULT_GENERATE_JACKSON_TYPE_ID_RESOLVER,
6968
customTypesMapping := new JHashMap[String, String](), // TODO use scala Map, convert to java Map
7069
customAnnotationsMapping := new JHashMap[String, JList[String]](),
71-
customTemplates := new JHashMap[FreeMarkerTemplateType, String](),
70+
customTemplates := new JHashMap[String, String](),
7271
directiveAnnotationsMapping := new JHashMap[String, JList[String]](),
7372
javaxValidationApiVersion := None,
7473
graphqlJavaCodegenVersion := None,

src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplateFilesCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ private static Template getTemplateForTypeAndLanguage(MappingContext mappingCont
6161
GeneratedLanguage language) {
6262
String templatePath = null;
6363
if (mappingContext.getCustomTemplates() != null) {
64-
templatePath = mappingContext.getCustomTemplates().get(templateType);
64+
templatePath = mappingContext.getCustomTemplates().get(templateType.name());
6565
}
6666
if (templatePath != null) {
6767
return FreeMarkerTemplatesRegistry.getCustomTemplates(templatePath);

src/main/java/com/kobylynskyi/graphql/codegen/generators/FreeMarkerTemplatesRegistry.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
44
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
55
import com.kobylynskyi.graphql.codegen.model.exception.UnableToLoadFreeMarkerTemplateException;
6+
import freemarker.cache.ClassTemplateLoader;
7+
import freemarker.cache.FileTemplateLoader;
8+
import freemarker.cache.MultiTemplateLoader;
9+
import freemarker.cache.TemplateLoader;
610
import freemarker.core.PlainTextOutputFormat;
711
import freemarker.ext.beans.BeansWrapper;
812
import freemarker.template.Configuration;
913
import freemarker.template.Template;
1014
import freemarker.template.TemplateExceptionHandler;
1115
import freemarker.template.Version;
12-
16+
import java.io.File;
1317
import java.io.IOException;
1418
import java.util.EnumMap;
1519

@@ -22,10 +26,11 @@ class FreeMarkerTemplatesRegistry {
2226
private static final EnumMap<GeneratedLanguage, EnumMap<FreeMarkerTemplateType, Template>> templateMap =
2327
new EnumMap<>(GeneratedLanguage.class);
2428

25-
private static final Configuration configuration = buildFreeMarkerTemplateConfiguration();
29+
private static final Configuration configuration;
2630

2731
static {
2832
try {
33+
configuration = buildFreeMarkerTemplateConfiguration();
2934
templateMap.put(GeneratedLanguage.JAVA, getTemplates(configuration, GeneratedLanguage.JAVA));
3035
templateMap.put(GeneratedLanguage.SCALA, getTemplates(configuration, GeneratedLanguage.SCALA));
3136
templateMap.put(GeneratedLanguage.KOTLIN, getTemplates(configuration, GeneratedLanguage.KOTLIN));
@@ -58,9 +63,12 @@ private static String buildTemplatePath(FreeMarkerTemplateType templateType, Gen
5863
templateType.name().toLowerCase());
5964
}
6065

61-
private static Configuration buildFreeMarkerTemplateConfiguration() {
66+
private static Configuration buildFreeMarkerTemplateConfiguration() throws IOException {
6267
Configuration configuration = new Configuration(FREEMARKER_TEMPLATE_VERSION);
63-
configuration.setClassLoaderForTemplateLoading(GraphQLCodegen.class.getClassLoader(), "");
68+
ClassTemplateLoader classTemplateLoader = new ClassTemplateLoader(GraphQLCodegen.class.getClassLoader(), "");
69+
FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(new File("."));
70+
configuration.setTemplateLoader(new MultiTemplateLoader(new TemplateLoader[] {classTemplateLoader,
71+
fileTemplateLoader}));
6472
configuration.setDefaultEncoding(DEFAULT_ENCODING);
6573
configuration.setOutputFormat(PlainTextOutputFormat.INSTANCE);
6674
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

src/main/java/com/kobylynskyi/graphql/codegen/model/GraphQLCodegenConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public interface GraphQLCodegenConfiguration {
3434
*
3535
* @return a map, where key is a tempalte type and a value is path to a FreeMarker template
3636
*/
37-
Map<FreeMarkerTemplateType, String> getCustomTemplates();
37+
Map<String, String> getCustomTemplates();
3838

3939
/**
4040
* Can be used to supply custom annotations (serializers) for scalars.

src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfig.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public class MappingConfig implements GraphQLCodegenConfiguration, Combinable<Ma
8686
private Set<String> parametrizedResolverAnnotations = new HashSet<>();
8787

8888
private Map<String, String> customTypesMapping = new HashMap<>();
89-
private Map<FreeMarkerTemplateType, String> customTemplates = new HashMap<>();
89+
private Map<String, String> customTemplates = new HashMap<>();
9090

9191
private Set<String> typesAsInterfaces = new HashSet<>();
9292

@@ -253,19 +253,19 @@ public void setCustomTypesMapping(Map<String, String> customTypesMapping) {
253253
* @param from the from
254254
* @param to the to
255255
*/
256-
public void putCustomTemplatesIfAbsent(FreeMarkerTemplateType from, String to) {
256+
public void putCustomTemplatesIfAbsent(String from, String to) {
257257
if (customTemplates == null) {
258258
customTemplates = new HashMap<>();
259259
}
260260
customTemplates.computeIfAbsent(from, k -> to);
261261
}
262262

263263
@Override
264-
public Map<FreeMarkerTemplateType, String> getCustomTemplates() {
264+
public Map<String, String> getCustomTemplates() {
265265
return customTemplates;
266266
}
267267

268-
public void setCustomTemplates(Map<FreeMarkerTemplateType, String> customTemplates) {
268+
public void setCustomTemplates(Map<String, String> customTemplates) {
269269
this.customTemplates = customTemplates;
270270
}
271271

src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public Map<String, String> getCustomTypesMapping() {
8686
}
8787

8888
@Override
89-
public Map<FreeMarkerTemplateType, String> getCustomTemplates() {
89+
public Map<String, String> getCustomTemplates() {
9090
return config.getCustomTemplates();
9191
}
9292

0 commit comments

Comments
 (0)