diff --git a/build.gradle b/build.gradle index 2700576..506bf90 100644 --- a/build.gradle +++ b/build.gradle @@ -39,7 +39,7 @@ repositories { dependencies { - compile "com.graphql-java:graphql-java:13.0" + compile "com.graphql-java:graphql-java:14.0" compile 'org.slf4j:slf4j-api:1.7.25' compile "javax.validation:validation-api:2.0.1.Final" compile "org.hibernate.validator:hibernate-validator:6.0.17.Final" diff --git a/src/main/java/graphql/validation/constraints/AbstractDirectiveConstraint.java b/src/main/java/graphql/validation/constraints/AbstractDirectiveConstraint.java index ebc13e0..3d3dd08 100644 --- a/src/main/java/graphql/validation/constraints/AbstractDirectiveConstraint.java +++ b/src/main/java/graphql/validation/constraints/AbstractDirectiveConstraint.java @@ -10,6 +10,7 @@ import graphql.schema.GraphQLFieldsContainer; import graphql.schema.GraphQLInputObjectType; import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLNamedInputType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLTypeUtil; import graphql.validation.rules.ValidationEnvironment; @@ -162,7 +163,7 @@ private List runConstraintOnDirectives(ValidationEnvironment valid * @return true ifits oneof them */ protected boolean isOneOfTheseTypes(GraphQLInputType inputType, GraphQLScalarType... scalarTypes) { - GraphQLInputType unwrappedType = Util.unwrapNonNull(inputType); + GraphQLNamedInputType unwrappedType = Util.unwrapNonNullNamedType(inputType); for (GraphQLScalarType scalarType : scalarTypes) { if (unwrappedType.getName().equals(scalarType.getName())) { return true; diff --git a/src/main/java/graphql/validation/util/Util.java b/src/main/java/graphql/validation/util/Util.java index 31373fa..801e265 100644 --- a/src/main/java/graphql/validation/util/Util.java +++ b/src/main/java/graphql/validation/util/Util.java @@ -6,6 +6,7 @@ import graphql.execution.DataFetcherResult; import graphql.execution.ExecutionPath; import graphql.schema.GraphQLInputType; +import graphql.schema.GraphQLNamedInputType; import graphql.schema.GraphQLType; import graphql.schema.GraphQLTypeUtil; @@ -40,6 +41,16 @@ public static GraphQLInputType unwrapOneAndAllNonNull(GraphQLInputType inputType } } + public static GraphQLNamedInputType unwrapNonNullNamedType(GraphQLInputType inputType) { + GraphQLType type = GraphQLTypeUtil.unwrapNonNull(inputType); + if (type instanceof GraphQLNamedInputType) { + return (GraphQLNamedInputType) type; + } else { + String argType = GraphQLTypeUtil.simplePrint(inputType); + return Assert.assertShouldNeverHappen("You have a wrapped type that is in fact not a input type : %s", argType); + } + } + public static GraphQLInputType unwrapNonNull(GraphQLInputType inputType) { GraphQLType type = GraphQLTypeUtil.unwrapNonNull(inputType); if (type instanceof GraphQLInputType) {