diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java index fbfb2453fcba001d377356ffbb211b478947deba..0ec2c7136267e0c9f6c6d999d00636c8631475b7 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.kobylynskyi.graphql.codegen.mapper.GraphQLTypeMapper.getDirectives; import static com.kobylynskyi.graphql.codegen.mapper.GraphQLTypeMapper.getMandatoryType; @@ -123,9 +124,12 @@ public abstract class AnnotationsMapper { } } // 6. Add annotations for resolver arguments - if (!Utils.isEmpty(mappingContext.getResolverArgumentAnnotations()) - && mappingContext.getOperationsName().contains(parentTypeName)) { - annotations.addAll(mappingContext.getResolverArgumentAnnotations()); + if (!Utils.isEmpty(mappingContext.getResolverArgumentAnnotations())) { + if (mappingContext.getOperationsName().contains(parentTypeName) + || (def instanceof InputValueDefinition + && !mappingContext.getInputsName().contains(parentTypeName))) { + annotations.addAll(mappingContext.getResolverArgumentAnnotations()); + } } // 7. Add annotations for parametrized resolvers if (!Utils.isEmpty(mappingContext.getParametrizedResolverAnnotations()) 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 899ddf5aa155b9de3e2a95c667d6d885654476c8..7768ab8f28f6ccad7aaa1fca99f05e56aadbcd4a 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/model/MappingContext.java @@ -31,6 +31,7 @@ public class MappingContext implements GraphQLCodegenConfiguration { private final Set interfacesName; private final Set unionsName; private final Set operationsName; + private final Set inputsName; private final Map> interfaceChildren; private final GeneratedInformation generatedInformation; private final DataModelMapperFactory dataModelMapperFactory; @@ -49,6 +50,8 @@ public class MappingContext implements GraphQLCodegenConfiguration { this.typesUnionsInterfacesNames = document.getTypesUnionsInterfacesNames(); this.interfacesName = document.getInterfacesNames(); this.unionsName = document.getUnionsNames(); + this.inputsName = document.getInputDefinitions().stream().map(ExtendedDefinition::getName) + .collect(Collectors.toSet()); this.interfaceChildren = document.getInterfaceChildren(); this.generatedInformation = generatedInformation; this.operationsName = document.getOperationsNames(); @@ -366,6 +369,10 @@ public class MappingContext implements GraphQLCodegenConfiguration { return operationsName; } + public Set getInputsName() { + return inputsName; + } + public Map> getInterfaceChildren() { return interfaceChildren; } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenAnnotationsTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenAnnotationsTest.java index 8b118eaa365ecc04cfaa645894d159b37f9e89c6..9c1e23ae78c0d79c3606abce78d14eb62bbc686d 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenAnnotationsTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenAnnotationsTest.java @@ -200,6 +200,7 @@ class GraphQLCodegenAnnotationsTest { @Test void generate_ResolverArgumentAnnotations() throws Exception { mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true); + mappingConfig.setGenerateParameterizedFieldsResolvers(true); mappingConfig.setResolverArgumentAnnotations(singleton( "@org.springframework.graphql.data.method.annotation.Argument")); @@ -212,6 +213,9 @@ class GraphQLCodegenAnnotationsTest { assertSameTrimmedContent( new File("src/test/resources/expected-classes/annotation/QueryResolver_ArgumentAnnotations.java.txt"), getFileByName(files, "QueryResolver.java")); + assertSameTrimmedContent(new File("src/test/resources/expected-classes/annotation/" + + "EventPropertyResolver_ArgumentAnnotations.java.txt"), + getFileByName(files, "EventPropertyResolver.java")); } @Test diff --git a/src/test/resources/expected-classes/annotation/EventPropertyResolver_ArgumentAnnotations.java.txt b/src/test/resources/expected-classes/annotation/EventPropertyResolver_ArgumentAnnotations.java.txt new file mode 100644 index 0000000000000000000000000000000000000000..0394437c12fac35d5d67cd58729826fdecda34a0 --- /dev/null +++ b/src/test/resources/expected-classes/annotation/EventPropertyResolver_ArgumentAnnotations.java.txt @@ -0,0 +1,23 @@ +package com.kobylynskyi.graphql.test1; + + +/** + * Resolver for EventProperty + */ +@javax.annotation.Generated( + value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen", + date = "2020-12-31T23:59:59-0500" +) +public interface EventPropertyResolver { + + /** + * Properties + */ + java.util.List child(EventProperty eventProperty, @org.springframework.graphql.data.method.annotation.Argument Integer first, @org.springframework.graphql.data.method.annotation.Argument Integer last, graphql.schema.DataFetchingEnvironment env) throws Exception; + + /** + * Parent event of the property + */ + Event parent(EventProperty eventProperty, @org.springframework.graphql.data.method.annotation.Argument EventStatus withStatus, @org.springframework.graphql.data.method.annotation.Argument String createdAfter, graphql.schema.DataFetchingEnvironment env) throws Exception; + +}