diff --git a/build.gradle b/build.gradle index 8aad9b09e..2e11e264a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { id "java-library" id "signing" id "maven-publish" - id "org.sonarqube" version "4.3.0.3225" + id "org.sonarqube" version "4.0.0.2929" } def graphqlCodegenVersion = '5.8.1-SNAPSHOT' // This variable used in the automatic release process @@ -20,7 +20,7 @@ repositories { dependencies { compileOnly "org.freemarker:freemarker:2.3.32" - compileOnly "com.graphql-java:graphql-java:21.0" + compileOnly "com.graphql-java:graphql-java:20.2" compileOnly "com.fasterxml.jackson.core:jackson-databind:2.15.2" compileOnly "com.typesafe:config:1.4.2" diff --git a/plugins/gradle/example-server/build.gradle b/plugins/gradle/example-server/build.gradle index 5f12f23b7..1e548a470 100644 --- a/plugins/gradle/example-server/build.gradle +++ b/plugins/gradle/example-server/build.gradle @@ -13,7 +13,7 @@ mainClassName = "io.github.kobylynskyi.product.Application" dependencies { implementation "org.springframework.boot:spring-boot-starter-web:2.7.14" - implementation "org.springframework.boot:spring-boot-starter-data-mongodb:2.7.13" + implementation "org.springframework.boot:spring-boot-starter-data-mongodb:2.7.14" implementation "com.graphql-java-kickstart:graphql-spring-boot-starter:11.0.0" implementation "com.graphql-java-kickstart:graphiql-spring-boot-starter:11.1.0" diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle b/plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle index d4ecadeb8..662558d80 100644 --- a/plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle +++ b/plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle @@ -27,7 +27,7 @@ dependencies { implementation "io.github.kobylynskyi:graphql-java-codegen:${version}" implementation "org.freemarker:freemarker:2.3.32" - implementation "com.graphql-java:graphql-java:21.0" + implementation "com.graphql-java:graphql-java:20.2" implementation "com.fasterxml.jackson.core:jackson-databind:2.15.2" implementation "com.typesafe:config:1.4.2" diff --git a/plugins/maven/example-client/pom.xml b/plugins/maven/example-client/pom.xml index 35e794736..19477a584 100644 --- a/plugins/maven/example-client/pom.xml +++ b/plugins/maven/example-client/pom.xml @@ -128,7 +128,7 @@ org.springframework.boot spring-boot-starter-data-mongodb - 2.7.13 + 2.7.14 diff --git a/plugins/maven/example-server/pom.xml b/plugins/maven/example-server/pom.xml index 97f8eb3d7..7c8a95cb7 100644 --- a/plugins/maven/example-server/pom.xml +++ b/plugins/maven/example-server/pom.xml @@ -76,12 +76,12 @@ org.springframework.boot spring-boot-starter-web - 2.7.13 + 2.7.14 org.springframework.boot spring-boot-starter-data-mongodb - 2.7.13 + 2.7.14 diff --git a/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml b/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml index ea454b7aa..3cacce50e 100644 --- a/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml +++ b/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml @@ -56,8 +56,8 @@ - 3.9.3 - 3.9.3 + 3.9.4 + 3.9.4 3.9.0 3.9.0 3.11.0 @@ -121,7 +121,7 @@ com.graphql-java graphql-java - 21.0 + 20.2 com.fasterxml.jackson.core diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/ValueMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/ValueMapper.java index 87f161d12..aa187a18b 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/ValueMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/ValueMapper.java @@ -17,6 +17,7 @@ import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -122,6 +123,11 @@ public String map(MappingContext mappingContext, Value value, Type graphQL private String mapEnum(MappingContext mappingContext, EnumValue value, Type graphQLType) { if (graphQLType == null) { + Map customTypesMapping = mappingContext.getCustomTypesMapping(); + if (customTypesMapping.containsKey(value.getName())) { + return customTypesMapping.get(value.getName()); + } + return value.getName(); } if (graphQLType instanceof TypeName) { diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenAnnotationsTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenAnnotationsTest.java index 127abb4f7..fa86b3c28 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenAnnotationsTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenAnnotationsTest.java @@ -119,6 +119,21 @@ void generate_CustomAnnotationMappings_FieldType() throws Exception { " val createdDateTime: org.joda.time.DateTime?"); } + @Test + void generate_CustomAnnotationMappings_With_Annotations() throws Exception { + mappingConfig.setCustomTypesMapping(new HashMap<>( + singletonMap("CAMS", "com.intuit.identity.manage.enum.CamsGroup::class"))); + mappingConfig.setDirectiveAnnotationsMapping(new HashMap<>(singletonMap("NotNull", + singletonList("@javax.validation.constraints.NotNull(message = {{message}}, groups = {{groups}})")))); + + generate("src/test/resources/schemas/kt/customTypesMapping-directive.graphqls"); + + File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); + assertFileContainsElements(files, "TrustAccountInput.kt", + "@field:javax.validation.constraints.NotNull(message = \"test\", " + + "groups = com.intuit.identity.manage.enum.CamsGroup::class)"); + } + private void generate(String path) throws IOException { new KotlinGraphQLCodegen(singletonList(path), outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo(mappingConfig)).generate(); diff --git a/src/test/resources/schemas/kt/customTypesMapping-directive.graphqls b/src/test/resources/schemas/kt/customTypesMapping-directive.graphqls new file mode 100644 index 000000000..c500183a6 --- /dev/null +++ b/src/test/resources/schemas/kt/customTypesMapping-directive.graphqls @@ -0,0 +1,10 @@ +directive @NotNull(message : String, groups: ValidationGroup) on INPUT_FIELD_DEFINITION + +schema { + query: Query +} + +input TrustAccountInput +{ + accountId: String! @NotNull(message: "test", groups: CAMS) +} \ No newline at end of file