Skip to content

Commit 598e375

Browse files
authored
merge with master (#72)
1 parent b7bc9de commit 598e375

15 files changed

+89
-136
lines changed

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

+24-42
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,11 @@
44
import graphql.GraphQLError;
55
import graphql.PublicSpi;
66
import graphql.Scalars;
7-
import graphql.schema.GraphQLArgument;
8-
import graphql.schema.GraphQLDirective;
9-
import graphql.schema.GraphQLFieldDefinition;
10-
import graphql.schema.GraphQLFieldsContainer;
11-
import graphql.schema.GraphQLInputObjectType;
12-
import graphql.schema.GraphQLInputType;
13-
import graphql.schema.GraphQLNamedInputType;
14-
import graphql.schema.GraphQLScalarType;
15-
import graphql.schema.GraphQLTypeUtil;
7+
import graphql.schema.*;
168
import graphql.validation.rules.ValidationEnvironment;
179
import graphql.validation.util.DirectivesAndTypeWalker;
1810
import graphql.validation.util.Util;
11+
1912
import java.lang.reflect.Array;
2013
import java.math.BigDecimal;
2114
import java.util.ArrayList;
@@ -25,6 +18,7 @@
2518
import java.util.LinkedHashMap;
2619
import java.util.List;
2720
import java.util.Map;
21+
2822
import static graphql.schema.GraphQLTypeUtil.isList;
2923
import static graphql.validation.rules.ValidationEnvironment.ValidatedElement.FIELD;
3024
import static graphql.validation.util.Util.mkMap;
@@ -138,17 +132,17 @@ private List<GraphQLError> runValidationImpl(ValidationEnvironment validationEnv
138132
private List<GraphQLError> runConstraintOnDirectives(ValidationEnvironment validationEnvironment) {
139133

140134
List<GraphQLError> errors = new ArrayList<>();
141-
List<GraphQLDirective> directives = validationEnvironment.getDirectives();
142-
directives = Util.sort(directives, GraphQLDirective::getName);
135+
List<GraphQLAppliedDirective> directives = validationEnvironment.getDirectives();
136+
directives = Util.sort(directives, GraphQLAppliedDirective::getName);
143137

144-
for (GraphQLDirective directive : directives) {
138+
for (GraphQLAppliedDirective directive : directives) {
145139
// we get called for arguments and input field and field types which can have multiple directive constraints on them and hence no just for this one
146140
boolean isOurDirective = directive.getName().equals(this.getName());
147141
if (!isOurDirective) {
148142
continue;
149143
}
150144

151-
validationEnvironment = validationEnvironment.transform(b -> b.context(GraphQLDirective.class, directive));
145+
validationEnvironment = validationEnvironment.transform(b -> b.context(GraphQLAppliedDirective.class, directive));
152146
//
153147
// now run the directive rule with this directive instance
154148
List<GraphQLError> ruleErrors = this.runConstrainOnPossibleListElements(validationEnvironment);
@@ -201,18 +195,15 @@ protected boolean isOneOfTheseTypes(GraphQLInputType inputType, Collection<Graph
201195
* @param argName the argument name
202196
* @return a non null value
203197
*/
204-
protected int getIntArg(GraphQLDirective directive, String argName) {
205-
GraphQLArgument argument = directive.getArgument(argName);
198+
protected int getIntArg(GraphQLAppliedDirective directive, String argName) {
199+
GraphQLAppliedDirectiveArgument argument = directive.getArgument(argName);
206200
if (argument == null) {
207201
return assertExpectedArgType(argName, "Int");
208202
}
209203

210-
Number value = GraphQLArgument.getArgumentValue(argument);
204+
Number value = argument.getValue();
211205
if (value == null) {
212-
value = GraphQLArgument.getArgumentDefaultValue(argument);
213-
if (value == null) {
214-
return assertExpectedArgType(argName, "Int");
215-
}
206+
return assertExpectedArgType(argName, "Int");
216207
}
217208
return value.intValue();
218209
}
@@ -224,17 +215,14 @@ protected int getIntArg(GraphQLDirective directive, String argName) {
224215
* @param argName the argument name
225216
* @return a non null value
226217
*/
227-
protected String getStrArg(GraphQLDirective directive, String argName) {
228-
GraphQLArgument argument = directive.getArgument(argName);
218+
protected String getStrArg(GraphQLAppliedDirective directive, String argName) {
219+
GraphQLAppliedDirectiveArgument argument = directive.getArgument(argName);
229220
if (argument == null) {
230221
return assertExpectedArgType(argName, "String");
231222
}
232-
String value = GraphQLArgument.getArgumentValue(argument);
223+
String value = argument.getValue();
233224
if (value == null) {
234-
value = GraphQLArgument.getArgumentDefaultValue(argument);
235-
if (value == null) {
236-
return assertExpectedArgType(argName, "String");
237-
}
225+
return assertExpectedArgType(argName, "String");
238226
}
239227
return value;
240228
}
@@ -246,17 +234,14 @@ protected String getStrArg(GraphQLDirective directive, String argName) {
246234
* @param argName the argument name
247235
* @return a non null value
248236
*/
249-
protected boolean getBoolArg(GraphQLDirective directive, String argName) {
250-
GraphQLArgument argument = directive.getArgument(argName);
237+
protected boolean getBoolArg(GraphQLAppliedDirective directive, String argName) {
238+
GraphQLAppliedDirectiveArgument argument = directive.getArgument(argName);
251239
if (argument == null) {
252240
return assertExpectedArgType(argName, "Boolean");
253241
}
254-
Object value = GraphQLArgument.getArgumentValue(argument);
242+
Object value = argument.getValue();
255243
if (value == null) {
256-
value = GraphQLArgument.getArgumentDefaultValue(argument);
257-
if (value == null) {
258-
return assertExpectedArgType(argName, "Boolean");
259-
}
244+
return assertExpectedArgType(argName, "Boolean");
260245
}
261246
return Boolean.parseBoolean(String.valueOf(value));
262247
}
@@ -268,14 +253,11 @@ protected boolean getBoolArg(GraphQLDirective directive, String argName) {
268253
* @param directive the directive to check
269254
* @return a non null value
270255
*/
271-
protected String getMessageTemplate(GraphQLDirective directive) {
256+
protected String getMessageTemplate(GraphQLAppliedDirective directive) {
272257
String msg = null;
273-
GraphQLArgument arg = directive.getArgument("message");
258+
GraphQLAppliedDirectiveArgument arg = directive.getArgument("message");
274259
if (arg != null) {
275-
msg = GraphQLArgument.getArgumentValue(arg);
276-
if (msg == null) {
277-
msg = GraphQLArgument.getArgumentDefaultValue(arg);
278-
}
260+
msg = arg.getValue();
279261
}
280262
if (msg == null) {
281263
msg = "graphql.validation." + getName() + ".message";
@@ -310,14 +292,14 @@ protected Map<String, Object> mkMessageParams(Object validatedValue, ValidationE
310292
* @param msgParams the map of parameters
311293
* @return a list of a single error
312294
*/
313-
protected List<GraphQLError> mkError(ValidationEnvironment validationEnvironment, GraphQLDirective directive, Map<String, Object> msgParams) {
295+
protected List<GraphQLError> mkError(ValidationEnvironment validationEnvironment, GraphQLAppliedDirective directive, Map<String, Object> msgParams) {
314296
String messageTemplate = getMessageTemplate(directive);
315297
GraphQLError error = validationEnvironment.getInterpolator().interpolate(messageTemplate, msgParams, validationEnvironment);
316298
return singletonList(error);
317299
}
318300

319301
protected List<GraphQLError> mkError(ValidationEnvironment validationEnvironment, Object... messageParameters) {
320-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
302+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
321303
String messageTemplate = getMessageTemplate(directive);
322304
Object validatedValue = validationEnvironment.getValidatedValue();
323305
GraphQLError error = validationEnvironment.getInterpolator().interpolate(messageTemplate, mkMessageParams(validatedValue, validationEnvironment, messageParameters), validationEnvironment);

src/main/java/graphql/validation/constraints/standard/AbstractDecimalMinMaxConstraint.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
4+
import graphql.schema.GraphQLAppliedDirective;
55
import graphql.schema.GraphQLInputType;
66
import graphql.schema.GraphQLScalarType;
77
import graphql.validation.constraints.AbstractDirectiveConstraint;
88
import graphql.validation.rules.ValidationEnvironment;
9+
910
import java.math.BigDecimal;
1011
import java.util.Collections;
1112
import java.util.List;
13+
1214
import static graphql.validation.constraints.GraphQLScalars.GRAPHQL_NUMBER_AND_STRING_TYPES;
1315

1416
abstract class AbstractDecimalMinMaxConstraint extends AbstractDirectiveConstraint {
@@ -29,7 +31,7 @@ protected boolean appliesToType(GraphQLInputType inputType) {
2931
protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvironment) {
3032
Object validatedValue = validationEnvironment.getValidatedValue();
3133

32-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
34+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
3335
String value = getStrArg(directive, "value");
3436
boolean inclusive = getBoolArg(directive, "inclusive");
3537

src/main/java/graphql/validation/constraints/standard/AbstractMinMaxConstraint.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
4+
import graphql.schema.GraphQLAppliedDirective;
55
import graphql.schema.GraphQLInputType;
66
import graphql.schema.GraphQLScalarType;
77
import graphql.validation.constraints.AbstractDirectiveConstraint;
88
import graphql.validation.constraints.GraphQLScalars;
99
import graphql.validation.rules.ValidationEnvironment;
10+
1011
import java.math.BigDecimal;
1112
import java.util.Collections;
1213
import java.util.List;
@@ -29,7 +30,7 @@ protected boolean appliesToType(GraphQLInputType inputType) {
2930
@Override
3031
protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvironment) {
3132
Object validatedValue = validationEnvironment.getValidatedValue();
32-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
33+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
3334
int value = getIntArg(directive, "value");
3435

3536
boolean isOK;

src/main/java/graphql/validation/constraints/standard/AbstractSizeConstraint.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
4+
import graphql.schema.GraphQLAppliedDirective;
55
import graphql.schema.GraphQLInputType;
66
import graphql.validation.constraints.AbstractDirectiveConstraint;
77
import graphql.validation.rules.ValidationEnvironment;
8+
89
import java.util.Collections;
910
import java.util.List;
1011

@@ -18,7 +19,7 @@ final protected List<GraphQLError> runConstraint(ValidationEnvironment validatio
1819
Object validatedValue = validationEnvironment.getValidatedValue();
1920
GraphQLInputType argType = validationEnvironment.getValidatedType();
2021

21-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
22+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
2223
int min = getIntArg(directive, "min");
2324
int max = getIntArg(directive, "max");
2425

src/main/java/graphql/validation/constraints/standard/DigitsConstraint.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
4+
import graphql.schema.GraphQLAppliedDirective;
55
import graphql.schema.GraphQLInputType;
66
import graphql.validation.constraints.AbstractDirectiveConstraint;
77
import graphql.validation.constraints.Documentation;
88
import graphql.validation.rules.ValidationEnvironment;
9+
910
import java.math.BigDecimal;
1011
import java.util.Collections;
1112
import java.util.List;
13+
1214
import static graphql.validation.constraints.GraphQLScalars.GRAPHQL_NUMBER_AND_STRING_TYPES;
1315

1416
public class DigitsConstraint extends AbstractDirectiveConstraint {
@@ -39,7 +41,7 @@ public boolean appliesToType(GraphQLInputType inputType) {
3941
protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvironment) {
4042
Object validatedValue = validationEnvironment.getValidatedValue();
4143

42-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
44+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
4345
int maxIntegerLength = getIntArg(directive, "integer");
4446
int maxFractionLength = getIntArg(directive, "fraction");
4547

src/main/java/graphql/validation/constraints/standard/ExpressionConstraint.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
5-
import graphql.schema.GraphQLFieldDefinition;
6-
import graphql.schema.GraphQLFieldsContainer;
7-
import graphql.schema.GraphQLInputType;
4+
import graphql.schema.*;
85
import graphql.validation.constraints.AbstractDirectiveConstraint;
96
import graphql.validation.constraints.Documentation;
107
import graphql.validation.el.ELSupport;
@@ -50,7 +47,7 @@ public boolean appliesTo(GraphQLFieldDefinition fieldDefinition, GraphQLFieldsCo
5047

5148
@Override
5249
protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvironment) {
53-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
50+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
5451
String expression = helpWithCurlyBraces(getStrArg(directive, "value"));
5552

5653
Map<String, Object> variables = StandardELVariables.standardELVars(validationEnvironment);

src/main/java/graphql/validation/constraints/standard/PatternConstraint.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import graphql.GraphQLError;
44
import graphql.Scalars;
5+
import graphql.schema.GraphQLAppliedDirective;
56
import graphql.schema.GraphQLDirective;
67
import graphql.schema.GraphQLInputType;
78
import graphql.validation.constraints.AbstractDirectiveConstraint;
@@ -47,7 +48,7 @@ protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvir
4748

4849
String strValue = String.valueOf(validatedValue);
4950

50-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
51+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
5152

5253
String patternArg = getStrArg(directive, "regexp");
5354
Pattern pattern = cachedPattern(patternArg);

src/main/java/graphql/validation/constraints/standard/RangeConstraint.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package graphql.validation.constraints.standard;
22

33
import graphql.GraphQLError;
4-
import graphql.schema.GraphQLDirective;
4+
import graphql.schema.GraphQLAppliedDirective;
55
import graphql.schema.GraphQLInputType;
66
import graphql.validation.constraints.AbstractDirectiveConstraint;
77
import graphql.validation.constraints.Documentation;
88
import graphql.validation.rules.ValidationEnvironment;
9+
910
import java.math.BigDecimal;
1011
import java.util.Collections;
1112
import java.util.List;
13+
1214
import static graphql.validation.constraints.GraphQLScalars.GRAPHQL_NUMBER_AND_STRING_TYPES;
1315

1416
public class RangeConstraint extends AbstractDirectiveConstraint {
@@ -40,7 +42,7 @@ public boolean appliesToType(GraphQLInputType inputType) {
4042
protected List<GraphQLError> runConstraint(ValidationEnvironment validationEnvironment) {
4143
Object validatedValue = validationEnvironment.getValidatedValue();
4244

43-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
45+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
4446
BigDecimal min = asBigDecimal(getIntArg(directive, "min"));
4547
BigDecimal max = asBigDecimal(getIntArg(directive, "max"));
4648

src/main/java/graphql/validation/interpolation/ResourceBundleMessageInterpolator.java

+13-21
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,9 @@
44
import graphql.GraphQLError;
55
import graphql.GraphqlErrorBuilder;
66
import graphql.execution.ResultPath;
7-
import graphql.schema.GraphQLDirective;
7+
import graphql.schema.GraphQLAppliedDirective;
88
import graphql.validation.el.StandardELVariables;
99
import graphql.validation.rules.ValidationEnvironment;
10-
import java.lang.annotation.Retention;
11-
import java.lang.annotation.Target;
12-
import java.util.LinkedHashMap;
13-
import java.util.Locale;
14-
import java.util.Map;
15-
import java.util.MissingResourceException;
16-
import java.util.Optional;
17-
import java.util.ResourceBundle;
18-
import jakarta.validation.Constraint;
19-
import jakarta.validation.Path;
20-
import jakarta.validation.Payload;
2110
import org.hibernate.validator.internal.engine.MessageInterpolatorContext;
2211
import org.hibernate.validator.internal.metadata.core.ConstraintHelper;
2312
import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl;
@@ -27,12 +16,15 @@
2716
import org.hibernate.validator.messageinterpolation.ExpressionLanguageFeatureLevel;
2817
import org.hibernate.validator.resourceloading.PlatformResourceBundleLocator;
2918
import org.hibernate.validator.spi.resourceloading.ResourceBundleLocator;
30-
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
31-
import static java.lang.annotation.ElementType.CONSTRUCTOR;
32-
import static java.lang.annotation.ElementType.FIELD;
33-
import static java.lang.annotation.ElementType.METHOD;
34-
import static java.lang.annotation.ElementType.PARAMETER;
35-
import static java.lang.annotation.ElementType.TYPE_USE;
19+
20+
import jakarta.validation.Constraint;
21+
import jakarta.validation.Path;
22+
import jakarta.validation.Payload;
23+
import java.lang.annotation.Retention;
24+
import java.lang.annotation.Target;
25+
import java.util.*;
26+
27+
import static java.lang.annotation.ElementType.*;
3628
import static java.lang.annotation.RetentionPolicy.RUNTIME;
3729

3830
/**
@@ -70,7 +62,7 @@ public class ResourceBundleMessageInterpolator implements MessageInterpolator {
7062
@SuppressWarnings("unused")
7163
protected ErrorClassification buildErrorClassification(String messageTemplate, Map<String, Object> messageParams, ValidationEnvironment validationEnvironment) {
7264
ResultPath fieldOrArgumentPath = validationEnvironment.getValidatedPath();
73-
GraphQLDirective directive = validationEnvironment.getContextObject(GraphQLDirective.class);
65+
GraphQLAppliedDirective directive = validationEnvironment.getContextObject(GraphQLAppliedDirective.class);
7466
return new ValidationErrorType(fieldOrArgumentPath, directive);
7567
}
7668

@@ -183,9 +175,9 @@ private org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterp
183175

184176
private static class ValidationErrorType implements ErrorClassification {
185177
private final ResultPath fieldOrArgumentPath;
186-
private final GraphQLDirective directive;
178+
private final GraphQLAppliedDirective directive;
187179

188-
ValidationErrorType(ResultPath fieldOrArgumentPath, GraphQLDirective directive) {
180+
ValidationErrorType(ResultPath fieldOrArgumentPath, GraphQLAppliedDirective directive) {
189181
this.fieldOrArgumentPath = fieldOrArgumentPath;
190182
this.directive = directive;
191183
}

0 commit comments

Comments
 (0)