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