File tree Expand file tree Collapse file tree 3 files changed +31
-1
lines changed
main/java/graphql/validation/constraints
test/groovy/graphql/validation/constraints Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Original file line number Diff line number Diff line change 4
4
import graphql .schema .GraphQLArgument ;
5
5
import graphql .schema .GraphQLFieldDefinition ;
6
6
import graphql .schema .GraphQLFieldsContainer ;
7
- import graphql .validation . constraints . standard . ExpressionConstraint ;
7
+ import graphql .schema . idl . TypeDefinitionRegistry ;
8
8
import graphql .validation .constraints .standard .AssertFalseConstraint ;
9
9
import graphql .validation .constraints .standard .AssertTrueConstraint ;
10
10
import graphql .validation .constraints .standard .DecimalMaxConstraint ;
11
11
import graphql .validation .constraints .standard .DecimalMinConstraint ;
12
12
import graphql .validation .constraints .standard .DigitsConstraint ;
13
+ import graphql .validation .constraints .standard .ExpressionConstraint ;
13
14
import graphql .validation .constraints .standard .MaxConstraint ;
14
15
import graphql .validation .constraints .standard .MinConstraint ;
15
16
import graphql .validation .constraints .standard .NegativeConstraint ;
@@ -85,6 +86,14 @@ public String getDirectivesSDL() {
85
86
return sb .toString ();
86
87
}
87
88
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
+
88
97
public List <DirectiveConstraint > whichApplyTo (GraphQLFieldDefinition fieldDefinition , GraphQLFieldsContainer fieldsContainer ) {
89
98
return constraints .values ()
90
99
.stream ()
Original file line number Diff line number Diff line change 1
1
package graphql .validation .constraints ;
2
2
3
+ import graphql .schema .idl .SchemaParser ;
4
+ import graphql .schema .idl .TypeDefinitionRegistry ;
5
+
3
6
import java .util .Arrays ;
4
7
import java .util .List ;
5
8
@@ -8,13 +11,15 @@ public class Documentation {
8
11
private final String description ;
9
12
private final String example ;
10
13
private final String directiveSDL ;
14
+ private final TypeDefinitionRegistry directiveDeclaration ;
11
15
private final String messageTemplate ;
12
16
private final List <String > applicableTypeNames ;
13
17
14
18
private Documentation (Builder builder ) {
15
19
this .description = builder .description ;
16
20
this .example = builder .example ;
17
21
this .directiveSDL = builder .directiveSDL ;
22
+ this .directiveDeclaration = new SchemaParser ().parse (builder .directiveSDL );
18
23
this .messageTemplate = builder .messageTemplate ;
19
24
this .applicableTypeNames = builder .applicableTypeNames ;
20
25
}
@@ -35,6 +40,10 @@ public String getDirectiveSDL() {
35
40
return directiveSDL ;
36
41
}
37
42
43
+ public TypeDefinitionRegistry getDirectiveDeclaration () {
44
+ return directiveDeclaration ;
45
+ }
46
+
38
47
public String getMessageTemplate () {
39
48
return messageTemplate ;
40
49
}
Original file line number Diff line number Diff line change @@ -107,4 +107,16 @@ class DirectiveConstraintsTest extends BaseConstraintTestSupport {
107
107
" field( testArg : Int! @Size(max : 2) ) : ID" | _ // not allowed for Size
108
108
}
109
109
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
+ }
110
122
}
You can’t perform that action at this time.
0 commit comments