Skip to content

Commit e0c48a4

Browse files
authored
Merge pull request #215 from osher-sade/master
fixed a bug that could cause directives to be built with synthetic fields
2 parents cfdba31 + e860593 commit e0c48a4

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

src/main/java/graphql/annotations/processor/directives/DirectiveArgumentCreator.java

-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ public DirectiveArgumentCreator(CommonPropertiesCreator commonPropertiesCreator,
3535
this.container = container;
3636
}
3737

38-
3938
public GraphQLArgument getArgument(Field field, Class<?> containingClass) {
4039
GraphQLArgument.Builder builder = newArgument()
4140
.name(commonPropertiesCreator.getName(field))
@@ -60,6 +59,4 @@ private GraphQLInputType getType(Field field) {
6059
return (GraphQLInputType) typeFunction.buildType(true, field.getType(),
6160
field.getAnnotatedType(), container);
6261
}
63-
64-
6562
}

src/main/java/graphql/annotations/processor/directives/DirectiveCreator.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public DirectiveCreator(DirectiveArgumentCreator directiveArgumentCreator, Commo
3636

3737
public GraphQLDirective getDirective(Class<?> annotatedClass) {
3838
GraphQLDirective.Builder builder = newDirective()
39-
.name(commonPropertiesCreator.getName(annotatedClass))
40-
.description(commonPropertiesCreator.getDescription(annotatedClass));
39+
.name(commonPropertiesCreator.getName(annotatedClass))
40+
.description(commonPropertiesCreator.getDescription(annotatedClass));
4141
Introspection.DirectiveLocation[] validLocations = getValidLocations(annotatedClass);
4242
if (validLocations == null || validLocations.length == 0) {
4343
throw new GraphQLAnnotationsException("No valid locations defined on directive", null);
@@ -49,17 +49,16 @@ public GraphQLDirective getDirective(Class<?> annotatedClass) {
4949
}
5050

5151
private void buildArguments(GraphQLDirective.Builder builder, Class<?> annotatedClass) {
52-
Arrays.stream(annotatedClass.getDeclaredFields()).forEach(x ->
53-
builder.argument(directiveArgumentCreator.getArgument(x, annotatedClass)));
52+
Arrays.stream(annotatedClass.getDeclaredFields())
53+
.filter(field -> !field.isSynthetic())
54+
.forEach(field -> builder.argument(directiveArgumentCreator.getArgument(field, annotatedClass)));
5455
}
5556

56-
5757
private Introspection.DirectiveLocation[] getValidLocations(Class<?> annotatedClass) {
5858
DirectiveLocations directiveLocationsAnnotation = annotatedClass.getAnnotation(DirectiveLocations.class);
5959
if (directiveLocationsAnnotation != null) {
6060
return directiveLocationsAnnotation.value();
6161
}
6262
return null;
6363
}
64-
6564
}

src/main/java/graphql/annotations/processor/util/ObjectUtil.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import java.util.Map;
1919
import java.util.TreeMap;
2020

21-
public class ObjectUtil {
21+
public class ObjectUtil {
2222

2323
public static Map<String, Field> getAllFields(Class c) {
2424
Map<String, Field> fields;
@@ -30,7 +30,9 @@ public static Map<String, Field> getAllFields(Class c) {
3030
}
3131

3232
for (Field f : c.getDeclaredFields()) {
33-
fields.put(f.getName(), f);
33+
if (!f.isSynthetic()) {
34+
fields.put(f.getName(), f);
35+
}
3436
}
3537

3638
return fields;

0 commit comments

Comments
 (0)