From b3757e7048676cd274f48d4a2015aa03c6c1a3cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= <568845948@qq.com> Date: Thu, 14 Jan 2021 19:41:38 +0800 Subject: [PATCH 1/2] support to generate xxTypeRefer for scala enum --- plugins/sbt/README.md | 87 +++---------------- .../example-client-scala/build.sbt | 9 +- .../io/github/dreamylost/EpisodeDOEnum.scala | 6 -- .../example-client-scala/version.sbt | 1 + .../example-client/build.sbt | 2 +- .../example-client/version.sbt | 1 + .../simple/build.sbt | 4 +- .../simple/version.sbt | 1 + .../EnumDefinitionToDataModelMapper.java | 10 +-- .../codegen/model/DataModelFields.java | 1 + .../codegen/model/MappingConfigConstants.java | 4 + .../scala-lang/scalaClassGraphqlEnum.ftl | 8 +- .../scala/deprecated/Status.scala.txt | 6 +- .../scala/empty/Status.scala.txt | 6 +- .../scala/extend/Status.scala.txt | 6 +- 15 files changed, 50 insertions(+), 102 deletions(-) delete mode 100644 plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/src/main/scala/io/github/dreamylost/EpisodeDOEnum.scala create mode 100644 plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/version.sbt create mode 100644 plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/version.sbt create mode 100644 plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/version.sbt diff --git a/plugins/sbt/README.md b/plugins/sbt/README.md index 93653ea75..2cf7fe4b9 100644 --- a/plugins/sbt/README.md +++ b/plugins/sbt/README.md @@ -15,89 +15,25 @@ Server example at https://github.com/jxnu-liguobin/springboot-examples/tree/mast ```scala // plugins.sbt -addSbtPlugin("io.github.jxnu-liguobin" % "graphql-codegen-sbt-plugin" % "") - -//since graphql-java-codegen V2.2.1 +addSbtPlugin("io.github.jxnu-liguobin" % "graphql-codegen-sbt-plugin" % "") // since graphql-java-codegen V2.2.1 ``` -> Java code will be generated by default, via set `generatedLanguage =: GeneratedLanguage.SCALA` to generate Scala code(since 4.0.0) -> By the way, Scala code is currently ugly. +> Java code will be generated by default, via set `generatedLanguage =: GeneratedLanguage.SCALA` to generate Scala code (since 4.0.0). By the way, Scala code is currently ugly. -### Config +### Config for generating scala code +Options example in ```build.sbt``` ```scala -// build.sbt - - enablePlugins(GraphQLCodegenPlugin) - - -GraphQLCodegenPluginDependencies - -//default graphqlJavaCodegen is release -graphqlJavaCodegenVersion := Some("4.1.1") -graphqlSchemaPaths := List("src/main/resources/schema.graphqls") -modelPackageName := Some("io.github.dreamylost.model") -apiPackageName := Some("io.github.dreamylost.api") -generateClient := false -generateApis := true -// Scala collection cannot be used. The latter one uses the put method, which is not supported by Scala collection. -// in FB, collection is immutable -customTypesMapping := { - val mapping = new util.HashMap[String, String] - mapping.put("Email", "io.github.dreamylost.scalar.EmailScalar") - //Character will conflict with java.lang.Character. maybe because Scala imports it automatically java.lang *. - //So we use Full class name - mapping -} - -//Of course, you can also add a suffix to be different from it -modelNameSuffix := Some("DO") - -customAnnotationsMapping := { - val mapping = new util.HashMap[String, String] - //must add this annotation - //property is __typename and you must with __typename while invoke, like new CharacterResponseProjection().id().name().typename() - //and in @JsonSubTypes.Type, name is __typename's value - mapping.put("Character", - s"""@com.fasterxml.jackson.annotation.JsonTypeInfo(use=com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, include=com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY,property = "__typename")${System.lineSeparator()}@com.fasterxml.jackson.annotation.JsonSubTypes(value = { - | @com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = HumanDO.class, name = "Human"), - | @com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = DroidDO.class, name = "Droid")}) - |""".stripMargin) - mapping -} -``` - -### Config(generate scala code) - - -```scala -import java.util - -name := "example-client-scala" - -organization := "io.github.jxnu-liguobin" - -libraryDependencies ++= Seq( - "org.apache.logging.log4j" %% "log4j-api-scala" % "11.0", - "org.apache.logging.log4j" % "log4j-api" % "2.8.2", - "org.apache.logging.log4j" % "log4j-core" % "2.8.2", - "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.8.2", - "com.squareup.okhttp3" % "okhttp" % "4.7.2", - "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.11.3", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.11.3", - "org.json" % "json" % "20190722") - -enablePlugins(GraphQLCodegenPlugin) -graphqlJavaCodegenVersion := Some("4.1.1") GraphQLCodegenPluginDependencies graphqlSchemaPaths := List("src/main/resources/schema.graphqls") modelPackageName := Some("io.github.dreamylost.model") apiPackageName := Some("io.github.dreamylost.api") generateClient := true generateApis := true -//TODO wrap it in plugin maybe better? after wrapping, them import automatically +// Default value is com.kobylynskyi.graphql.codegen.model.GeneratedLanguage.JAVA to generate java codes +// Use Java code if your Scala code encounters errors. Configuration is the same. QAQ generatedLanguage := com.kobylynskyi.graphql.codegen.model.GeneratedLanguage.SCALA generateImmutableModels := true modelNameSuffix := Some("DO") @@ -111,9 +47,10 @@ customAnnotationsMapping := { | new com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = classOf[HumanDO], name = "Human"), | new com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = classOf[DroidDO], name = "Droid")))""".stripMargin) mapping.put("Character", annotations) - // please pay attention here, codegen have not generated `EpisodeDOEnum.scala` class, so you should create it. - mapping.put("Droid.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.EpisodeDOEnum])")) - mapping.put("Human.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.EpisodeDOEnum])")) + // Note: only for Scala, please pay attention here, codegen have not generated `EpisodeDOTypeRefer.scala` class, so you should create it. + // Since, 4.1.2, support to generate it. + mapping.put("Droid.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.model.EpisodeDOTypeRefer])")) + mapping.put("Human.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.model.EpisodeDOTypeRefer])")) mapping } generateCodegenTargetPath in GraphQLCodegenConfig := crossTarget.value / "src_managed_graphql_scala" @@ -141,6 +78,4 @@ Please refer to [Codegen Options](../../docs/codegen-options.md) > in sbt plugin option - `packageName` was rename to `generatePackageName` -- `generateCodegenTargetPath` can be used for setting codegen path where code have bean created by task `graphqlCodegen`, since 3.0.0 . - - +- `generateCodegenTargetPath` can be used for setting codegen path where code have bean created by task `graphqlCodegen`, since 3.0.0 . \ No newline at end of file diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/build.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/build.sbt index b725baf58..8dbe3e685 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/build.sbt +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/build.sbt @@ -15,19 +15,17 @@ libraryDependencies ++= Seq( "org.json" % "json" % "20190722") enablePlugins(GraphQLCodegenPlugin) -graphqlJavaCodegenVersion := Some("4.1.2-SNAPSHOT") +graphqlJavaCodegenVersion := Some((version in Scope.ThisScope).value) GraphQLCodegenPluginDependencies graphqlSchemaPaths := List("src/main/resources/schema.graphqls") modelPackageName := Some("io.github.dreamylost.model") apiPackageName := Some("io.github.dreamylost.api") generateClient := true generateApis := true -//TODO wrap it in plugin maybe better? after wrapping, them import automatically generatedLanguage := com.kobylynskyi.graphql.codegen.model.GeneratedLanguage.SCALA generateImmutableModels := true modelNameSuffix := Some("DO") customAnnotationsMapping := { - // in the future, maybe wrap it by scala coolection val mapping = new util.HashMap[String, util.List[String]] val annotations = new util.ArrayList[String]() annotations.add("@com.fasterxml.jackson.annotation.JsonTypeInfo(use=com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, include=com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY,property = \"__typename\")") @@ -36,9 +34,8 @@ customAnnotationsMapping := { | new com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = classOf[HumanDO], name = "Human"), | new com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = classOf[DroidDO], name = "Droid")))""".stripMargin) mapping.put("Character", annotations) - // Please pay attention here, codegen have not generated `EpisodeDOEnum.scala` class, so you should create it. - mapping.put("Droid.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.EpisodeDOEnum])")) - mapping.put("Human.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.EpisodeDOEnum])")) + mapping.put("Droid.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.model.EpisodeDOTypeRefer])")) + mapping.put("Human.appearsIn", util.Arrays.asList("@com.fasterxml.jackson.module.scala.JsonScalaEnumeration(classOf[io.github.dreamylost.model.EpisodeDOTypeRefer])")) mapping } generateCodegenTargetPath in GraphQLCodegenConfig := crossTarget.value / "src_managed_graphql_scala" diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/src/main/scala/io/github/dreamylost/EpisodeDOEnum.scala b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/src/main/scala/io/github/dreamylost/EpisodeDOEnum.scala deleted file mode 100644 index 2d3cbe416..000000000 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/src/main/scala/io/github/dreamylost/EpisodeDOEnum.scala +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.dreamylost - -import com.fasterxml.jackson.core.`type`.TypeReference -import io.github.dreamylost.model.EpisodeDO - -class EpisodeDOEnum extends TypeReference[EpisodeDO.type] diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/version.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/version.sbt new file mode 100644 index 000000000..4b00be486 --- /dev/null +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client-scala/version.sbt @@ -0,0 +1 @@ +version in ThisBuild := "4.1.2-SNAPSHOT" diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/build.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/build.sbt index 3ff412aa2..5265196ec 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/build.sbt +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/build.sbt @@ -17,7 +17,7 @@ libraryDependencies ++= Seq( enablePlugins(GraphQLCodegenPlugin) -graphqlJavaCodegenVersion := Some("4.1.2-SNAPSHOT") +graphqlJavaCodegenVersion := Some((version in Scope.ThisScope).value) GraphQLCodegenPluginDependencies diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/version.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/version.sbt new file mode 100644 index 000000000..4b00be486 --- /dev/null +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/example-client/version.sbt @@ -0,0 +1 @@ +version in ThisBuild := "4.1.2-SNAPSHOT" diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/build.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/build.sbt index b85daaf7e..8b9ac7f94 100644 --- a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/build.sbt +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/build.sbt @@ -2,12 +2,12 @@ name := "simple" lazy val root = (project in file(".")) .settings( - version := "0.1", scalaVersion := "2.13.2", apiPackageName := Some("io.github.kobylynskyi.graphql.test.api"), modelPackageName := Some("io.github.kobylynskyi.graphql.test.model"), apiReturnType := Some("scala.concurrent.Future"), // if Async class is not at current source, need import dependency - //use full class name is good + graphqlJavaCodegenVersion := Some((version in Scope.ThisScope).value) + //use full class name is good ).enablePlugins(GraphQLCodegenPlugin).settings(GraphQLCodegenPluginDependencies) diff --git a/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/version.sbt b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/version.sbt new file mode 100644 index 000000000..4b00be486 --- /dev/null +++ b/plugins/sbt/graphql-java-codegen-sbt-plugin/src/sbt-test/graphql-codegen-sbt-plugin/simple/version.sbt @@ -0,0 +1 @@ +version in ThisBuild := "4.1.2-SNAPSHOT" diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/EnumDefinitionToDataModelMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/EnumDefinitionToDataModelMapper.java index 8fc1a0987..4f1aedcd7 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/EnumDefinitionToDataModelMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/EnumDefinitionToDataModelMapper.java @@ -2,6 +2,7 @@ import com.kobylynskyi.graphql.codegen.model.DeprecatedDefinition; import com.kobylynskyi.graphql.codegen.model.EnumValueDefinition; +import com.kobylynskyi.graphql.codegen.model.MappingConfigConstants; import com.kobylynskyi.graphql.codegen.model.MappingContext; import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedEnumTypeDefinition; import com.kobylynskyi.graphql.codegen.model.definitions.ExtendedUnionTypeDefinition; @@ -16,13 +17,7 @@ import java.util.Set; import java.util.stream.Collectors; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.ANNOTATIONS; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.CLASS_NAME; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.FIELDS; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.GENERATED_INFO; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.IMPLEMENTS; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.JAVA_DOC; -import static com.kobylynskyi.graphql.codegen.model.DataModelFields.PACKAGE; +import static com.kobylynskyi.graphql.codegen.model.DataModelFields.*; /** * Map enum definition to a Freemarker data model @@ -83,6 +78,7 @@ public Map map(MappingContext mappingContext, ExtendedEnumTypeDe dataModel.put(JAVA_DOC, definition.getJavaDoc()); dataModel.put(FIELDS, map(mappingContext, definition.getValueDefinitions())); dataModel.put(GENERATED_INFO, mappingContext.getGeneratedInformation()); + dataModel.put(SERIALIZATION_LIBRARY, MappingConfigConstants.DEFAULT_SERIALIZATION_LIBRARY); return dataModel; } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/DataModelFields.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/DataModelFields.java index dd132e826..f4e5e9b97 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/DataModelFields.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/DataModelFields.java @@ -30,6 +30,7 @@ public final class DataModelFields { public static final String RESPONSE_PROJECTION_MAX_DEPTH = "responseProjectionMaxDepth"; public static final String ENUM_IMPORT_IT_SELF_IN_SCALA = "enumImportItSelfInScala"; public static final String PARENT_INTERFACE_PROPERTIES = "parentInterfaceProperties"; + public static final String SERIALIZATION_LIBRARY = "serializationLibrary"; private DataModelFields() { } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfigConstants.java b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfigConstants.java index fa340f3ed..80aa1aaa1 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfigConstants.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingConfigConstants.java @@ -47,6 +47,10 @@ public class MappingConfigConstants { public static final GeneratedLanguage DEFAULT_GENERATED_LANGUAGE = GeneratedLanguage.JAVA; public static final String DEFAULT_GENERATED_LANGUAGE_STRING = "JAVA"; + // This library is the only one that supports Scala well and is generally used. + // There is no need to consider the possibility of switching. + public static final String DEFAULT_SERIALIZATION_LIBRARY = "JACKSON"; + private MappingConfigConstants() { } } diff --git a/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl b/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl index 9debc1eda..7b9caedd7 100644 --- a/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl +++ b/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl @@ -2,6 +2,8 @@ package ${package} +import com.fasterxml.jackson.core.`type`.TypeReference + <#if javaDoc?has_content> /** <#list javaDoc as javaDocLine> @@ -38,4 +40,8 @@ object ${className} extends Enumeration<#if implements?has_content> with<#list i -} \ No newline at end of file +} +<#if serializationLibrary == 'JACKSON'> + +class ${className}TypeRefer extends TypeReference[${className}.type] + diff --git a/src/test/resources/expected-classes/scala/deprecated/Status.scala.txt b/src/test/resources/expected-classes/scala/deprecated/Status.scala.txt index fcbcd89e9..f5102e3a2 100644 --- a/src/test/resources/expected-classes/scala/deprecated/Status.scala.txt +++ b/src/test/resources/expected-classes/scala/deprecated/Status.scala.txt @@ -1,5 +1,7 @@ package com.github.graphql +import com.fasterxml.jackson.core.`type`.TypeReference + @javax.annotation.Generated( value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" @@ -12,4 +14,6 @@ object Status extends Enumeration { val CREATED: Value = Value("CREATED") val IN_PROGRESS: Value = Value("IN_PROGRESS") -} \ No newline at end of file +} + +class StatusTypeRefer extends TypeReference[Status.type] \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/empty/Status.scala.txt b/src/test/resources/expected-classes/scala/empty/Status.scala.txt index 7f146c9cc..b719b046b 100644 --- a/src/test/resources/expected-classes/scala/empty/Status.scala.txt +++ b/src/test/resources/expected-classes/scala/empty/Status.scala.txt @@ -1,3 +1,5 @@ +import com.fasterxml.jackson.core.`type`.TypeReference + @javax.annotation.Generated( value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" @@ -7,4 +9,6 @@ object Status extends Enumeration { type Status = Value -} \ No newline at end of file +} + +class StatusTypeRefer extends TypeReference[Status.type] \ No newline at end of file diff --git a/src/test/resources/expected-classes/scala/extend/Status.scala.txt b/src/test/resources/expected-classes/scala/extend/Status.scala.txt index b0771a516..84eeb20b3 100644 --- a/src/test/resources/expected-classes/scala/extend/Status.scala.txt +++ b/src/test/resources/expected-classes/scala/extend/Status.scala.txt @@ -1,3 +1,5 @@ +import com.fasterxml.jackson.core.`type`.TypeReference + @javax.annotation.Generated( value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" @@ -10,4 +12,6 @@ object Status extends Enumeration { val IN_PROGRESS: Value = Value("IN_PROGRESS") val ASSIGNED: Value = Value("ASSIGNED") -} \ No newline at end of file +} + +class StatusTypeRefer extends TypeReference[Status.type] \ No newline at end of file From 23fbf5939b9ee6b63f2296663bc4d56a1940e333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E5=A2=83=E8=BF=B7=E7=A6=BB?= Date: Sat, 16 Jan 2021 18:53:48 +0800 Subject: [PATCH 2/2] add jugge --- .../resources/templates/scala-lang/scalaClassGraphqlEnum.ftl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl b/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl index 7b9caedd7..5bd285553 100644 --- a/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl +++ b/src/main/resources/templates/scala-lang/scalaClassGraphqlEnum.ftl @@ -2,8 +2,10 @@ package ${package} +<#if serializationLibrary == 'JACKSON'> import com.fasterxml.jackson.core.`type`.TypeReference + <#if javaDoc?has_content> /** <#list javaDoc as javaDocLine>