Skip to content

Commit b103ffa

Browse files
authored
TypeDefinitionRegistry support (#3)
1 parent 1b0e9a4 commit b103ffa

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

src/main/java/graphql/validation/constraints/DirectiveConstraints.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
import graphql.schema.GraphQLArgument;
55
import graphql.schema.GraphQLFieldDefinition;
66
import graphql.schema.GraphQLFieldsContainer;
7-
import graphql.validation.constraints.standard.ExpressionConstraint;
7+
import graphql.schema.idl.TypeDefinitionRegistry;
88
import graphql.validation.constraints.standard.AssertFalseConstraint;
99
import graphql.validation.constraints.standard.AssertTrueConstraint;
1010
import graphql.validation.constraints.standard.DecimalMaxConstraint;
1111
import graphql.validation.constraints.standard.DecimalMinConstraint;
1212
import graphql.validation.constraints.standard.DigitsConstraint;
13+
import graphql.validation.constraints.standard.ExpressionConstraint;
1314
import graphql.validation.constraints.standard.MaxConstraint;
1415
import graphql.validation.constraints.standard.MinConstraint;
1516
import graphql.validation.constraints.standard.NegativeConstraint;
@@ -85,6 +86,14 @@ public String getDirectivesSDL() {
8586
return sb.toString();
8687
}
8788

89+
public TypeDefinitionRegistry getDirectivesDeclaration() {
90+
TypeDefinitionRegistry registry = new TypeDefinitionRegistry();
91+
for (DirectiveConstraint directiveConstraint : constraints.values()) {
92+
registry.merge(directiveConstraint.getDocumentation().getDirectiveDeclaration());
93+
}
94+
return registry;
95+
}
96+
8897
public List<DirectiveConstraint> whichApplyTo(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsContainer fieldsContainer) {
8998
return constraints.values()
9099
.stream()

src/main/java/graphql/validation/constraints/Documentation.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package graphql.validation.constraints;
22

3+
import graphql.schema.idl.SchemaParser;
4+
import graphql.schema.idl.TypeDefinitionRegistry;
5+
36
import java.util.Arrays;
47
import java.util.List;
58

@@ -8,13 +11,15 @@ public class Documentation {
811
private final String description;
912
private final String example;
1013
private final String directiveSDL;
14+
private final TypeDefinitionRegistry directiveDeclaration;
1115
private final String messageTemplate;
1216
private final List<String> applicableTypeNames;
1317

1418
private Documentation(Builder builder) {
1519
this.description = builder.description;
1620
this.example = builder.example;
1721
this.directiveSDL = builder.directiveSDL;
22+
this.directiveDeclaration = new SchemaParser().parse(builder.directiveSDL);
1823
this.messageTemplate = builder.messageTemplate;
1924
this.applicableTypeNames = builder.applicableTypeNames;
2025
}
@@ -35,6 +40,10 @@ public String getDirectiveSDL() {
3540
return directiveSDL;
3641
}
3742

43+
public TypeDefinitionRegistry getDirectiveDeclaration() {
44+
return directiveDeclaration;
45+
}
46+
3847
public String getMessageTemplate() {
3948
return messageTemplate;
4049
}

src/test/groovy/graphql/validation/constraints/DirectiveConstraintsTest.groovy

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,16 @@ class DirectiveConstraintsTest extends BaseConstraintTestSupport {
107107
"field( testArg : Int! @Size(max : 2) ) : ID" | _ // not allowed for Size
108108
}
109109

110+
def "can combine as type registry"() {
111+
112+
def directiveValidationRules = DirectiveConstraints.newDirectiveConstraints()
113+
.build()
114+
115+
when:
116+
def declaration = directiveValidationRules.getDirectivesDeclaration()
117+
then:
118+
declaration != null
119+
declaration.getDirectiveDefinitions().size() == 17
120+
121+
}
110122
}

0 commit comments

Comments
 (0)