From 38dfab10cea9f55673a1b12d97ed4aa9601d3f97 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Fri, 22 Jun 2018 17:12:27 +1000 Subject: [PATCH 1/3] Added @Override as part of errorprone code health check --- src/main/java/graphql/ExceptionWhileDataFetching.java | 1 + src/main/java/graphql/SerializationError.java | 1 + src/main/java/graphql/TypeMismatchError.java | 1 + src/main/java/graphql/UnresolvedTypeError.java | 1 + .../InstrumentationDeferredFieldParameters.java | 1 + .../parameters/InstrumentationFieldFetchParameters.java | 1 + .../parameters/InstrumentationValidationParameters.java | 1 + src/main/java/graphql/language/AbstractNode.java | 1 + src/main/java/graphql/language/Argument.java | 1 + src/main/java/graphql/language/Definition.java | 1 + src/main/java/graphql/language/Directive.java | 1 + src/main/java/graphql/language/DirectiveDefinition.java | 1 + src/main/java/graphql/language/DirectiveLocation.java | 1 + src/main/java/graphql/language/EnumTypeDefinition.java | 1 + .../graphql/language/EnumTypeExtensionDefinition.java | 1 + src/main/java/graphql/language/EnumValue.java | 1 + src/main/java/graphql/language/EnumValueDefinition.java | 2 ++ src/main/java/graphql/language/Field.java | 3 +++ src/main/java/graphql/language/FieldDefinition.java | 2 ++ src/main/java/graphql/language/FragmentDefinition.java | 3 +++ src/main/java/graphql/language/FragmentSpread.java | 2 ++ src/main/java/graphql/language/InlineFragment.java | 1 + .../java/graphql/language/InputObjectTypeDefinition.java | 1 + src/main/java/graphql/language/InputValueDefinition.java | 2 ++ .../java/graphql/language/InterfaceTypeDefinition.java | 1 + .../language/InterfaceTypeExtensionDefinition.java | 1 + src/main/java/graphql/language/NodeTraverser.java | 2 ++ src/main/java/graphql/language/ObjectField.java | 1 + src/main/java/graphql/language/ObjectTypeDefinition.java | 1 + .../graphql/language/ObjectTypeExtensionDefinition.java | 1 + src/main/java/graphql/language/OperationDefinition.java | 1 + .../java/graphql/language/OperationTypeDefinition.java | 1 + src/main/java/graphql/language/ScalarTypeDefinition.java | 1 + .../graphql/language/ScalarTypeExtensionDefinition.java | 1 + src/main/java/graphql/language/Type.java | 1 + src/main/java/graphql/language/TypeDefinition.java | 1 + src/main/java/graphql/language/UnionTypeDefinition.java | 1 + .../graphql/language/UnionTypeExtensionDefinition.java | 1 + src/main/java/graphql/language/Value.java | 1 + src/main/java/graphql/language/VariableDefinition.java | 1 + src/main/java/graphql/language/VariableReference.java | 1 + .../graphql/schema/DataFetchingFieldSelectionSet.java | 1 + .../graphql/schema/DataFetchingFieldSelectionSetImpl.java | 2 ++ src/main/java/graphql/schema/GraphQLArgument.java | 1 + src/main/java/graphql/schema/GraphQLEnumType.java | 1 + .../java/graphql/schema/GraphQLEnumValueDefinition.java | 4 ++++ src/main/java/graphql/schema/GraphQLFieldDefinition.java | 1 + src/main/java/graphql/schema/GraphQLInputObjectField.java | 1 + src/main/java/graphql/schema/GraphQLInputObjectType.java | 1 + src/main/java/graphql/schema/GraphQLInterfaceType.java | 3 +++ src/main/java/graphql/schema/GraphQLList.java | 1 + src/main/java/graphql/schema/GraphQLNonNull.java | 1 + src/main/java/graphql/schema/GraphQLObjectType.java | 3 +++ src/main/java/graphql/schema/GraphQLScalarType.java | 1 + src/main/java/graphql/schema/GraphQLTypeReference.java | 1 + src/main/java/graphql/util/TraverserState.java | 2 ++ .../java/graphql/validation/ArgumentValidationUtil.java | 8 ++++++++ 57 files changed, 82 insertions(+) diff --git a/src/main/java/graphql/ExceptionWhileDataFetching.java b/src/main/java/graphql/ExceptionWhileDataFetching.java index faa77c97a1..c9a3d09500 100644 --- a/src/main/java/graphql/ExceptionWhileDataFetching.java +++ b/src/main/java/graphql/ExceptionWhileDataFetching.java @@ -68,6 +68,7 @@ public List getLocations() { return locations; } + @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/SerializationError.java b/src/main/java/graphql/SerializationError.java index 70e0147b19..511e7760ca 100644 --- a/src/main/java/graphql/SerializationError.java +++ b/src/main/java/graphql/SerializationError.java @@ -47,6 +47,7 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } + @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/TypeMismatchError.java b/src/main/java/graphql/TypeMismatchError.java index 0d3cb0d587..3f27e84acf 100644 --- a/src/main/java/graphql/TypeMismatchError.java +++ b/src/main/java/graphql/TypeMismatchError.java @@ -74,6 +74,7 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } + @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/UnresolvedTypeError.java b/src/main/java/graphql/UnresolvedTypeError.java index 10bf89882e..a7a0789def 100644 --- a/src/main/java/graphql/UnresolvedTypeError.java +++ b/src/main/java/graphql/UnresolvedTypeError.java @@ -53,6 +53,7 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } + @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java index f50d64d607..84afeea425 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java @@ -29,6 +29,7 @@ public InstrumentationDeferredFieldParameters(ExecutionContext executionContext, * * @return a new parameters object with the new state */ + @Override public InstrumentationDeferredFieldParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationDeferredFieldParameters( this.getExecutionContext(), this.executionStrategyParameters, this.getField(), this.getTypeInfo(), instrumentationState); diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java index e9de8a796a..28e50a00ca 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java @@ -33,6 +33,7 @@ private InstrumentationFieldFetchParameters(ExecutionContext getExecutionContext * * @return a new parameters object with the new state */ + @Override public InstrumentationFieldFetchParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationFieldFetchParameters( this.getExecutionContext(), this.getField(), this.getEnvironment(), diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java index 293316f899..f35c7616c8 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java @@ -24,6 +24,7 @@ public InstrumentationValidationParameters(ExecutionInput executionInput, Docume * * @return a new parameters object with the new state */ + @Override public InstrumentationValidationParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationValidationParameters( this.getExecutionInput(), document, getSchema(), instrumentationState); diff --git a/src/main/java/graphql/language/AbstractNode.java b/src/main/java/graphql/language/AbstractNode.java index 6a54fe45e8..7aec725a69 100644 --- a/src/main/java/graphql/language/AbstractNode.java +++ b/src/main/java/graphql/language/AbstractNode.java @@ -22,6 +22,7 @@ public SourceLocation getSourceLocation() { return sourceLocation; } + @Override public List getComments() { return comments; } diff --git a/src/main/java/graphql/language/Argument.java b/src/main/java/graphql/language/Argument.java index ea0c42d352..f6d1159f51 100644 --- a/src/main/java/graphql/language/Argument.java +++ b/src/main/java/graphql/language/Argument.java @@ -17,6 +17,7 @@ public Argument(String name, Value value) { this.value = value; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/Definition.java b/src/main/java/graphql/language/Definition.java index 01ba8c0ea6..8985d473e4 100644 --- a/src/main/java/graphql/language/Definition.java +++ b/src/main/java/graphql/language/Definition.java @@ -6,5 +6,6 @@ public interface Definition extends Node { /** * @return a deep copy of this definition */ + @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/Directive.java b/src/main/java/graphql/language/Directive.java index 6b4dfaa037..d4a1fd7a03 100644 --- a/src/main/java/graphql/language/Directive.java +++ b/src/main/java/graphql/language/Directive.java @@ -37,6 +37,7 @@ public Argument getArgument(String argumentName) { return getArgumentsByName().get(argumentName); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/DirectiveDefinition.java b/src/main/java/graphql/language/DirectiveDefinition.java index f320986cd9..60f2a5d33b 100644 --- a/src/main/java/graphql/language/DirectiveDefinition.java +++ b/src/main/java/graphql/language/DirectiveDefinition.java @@ -23,6 +23,7 @@ public DirectiveDefinition(String name, List inputValueDef this.directiveLocations = directiveLocations; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/DirectiveLocation.java b/src/main/java/graphql/language/DirectiveLocation.java index 4d176d7cdf..59438e34f1 100644 --- a/src/main/java/graphql/language/DirectiveLocation.java +++ b/src/main/java/graphql/language/DirectiveLocation.java @@ -22,6 +22,7 @@ public DirectiveLocation(String name) { this.name = name; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/EnumTypeDefinition.java b/src/main/java/graphql/language/EnumTypeDefinition.java index 9182dd528a..b66abfdf39 100644 --- a/src/main/java/graphql/language/EnumTypeDefinition.java +++ b/src/main/java/graphql/language/EnumTypeDefinition.java @@ -30,6 +30,7 @@ public List getEnumValueDefinitions() { return enumValueDefinitions; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java index ad5f3c0f28..dda428648e 100644 --- a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java @@ -15,6 +15,7 @@ public EnumTypeExtensionDefinition(String name, List enumVa super(name, enumValueDefinitions, directives); } + @Override public EnumTypeExtensionDefinition deepCopy() { return new EnumTypeExtensionDefinition(getName(), deepCopy(getEnumValueDefinitions()), diff --git a/src/main/java/graphql/language/EnumValue.java b/src/main/java/graphql/language/EnumValue.java index ff1ef5593b..8316bd2708 100644 --- a/src/main/java/graphql/language/EnumValue.java +++ b/src/main/java/graphql/language/EnumValue.java @@ -15,6 +15,7 @@ public EnumValue(String name) { this.name = name; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/EnumValueDefinition.java b/src/main/java/graphql/language/EnumValueDefinition.java index e3d263210f..4ed5ca70d3 100644 --- a/src/main/java/graphql/language/EnumValueDefinition.java +++ b/src/main/java/graphql/language/EnumValueDefinition.java @@ -21,6 +21,7 @@ public EnumValueDefinition(String name, List directives) { this.directives = (null == directives) ? new ArrayList<>() : directives; } + @Override public String getName() { return name; } @@ -33,6 +34,7 @@ public void setDescription(Description description) { this.description = description; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/Field.java b/src/main/java/graphql/language/Field.java index 580e0f626e..ebd5f4c926 100644 --- a/src/main/java/graphql/language/Field.java +++ b/src/main/java/graphql/language/Field.java @@ -64,6 +64,7 @@ public List getChildren() { } + @Override public String getName() { return name; } @@ -88,6 +89,7 @@ public void setArguments(List arguments) { this.arguments = arguments; } + @Override public List getDirectives() { return directives; } @@ -96,6 +98,7 @@ public void setDirectives(List directives) { this.directives = directives; } + @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/FieldDefinition.java b/src/main/java/graphql/language/FieldDefinition.java index ed5a64134b..badd303e00 100644 --- a/src/main/java/graphql/language/FieldDefinition.java +++ b/src/main/java/graphql/language/FieldDefinition.java @@ -37,6 +37,7 @@ public void setType(Type type) { this.type = type; } + @Override public String getName() { return name; } @@ -53,6 +54,7 @@ public List getInputValueDefinitions() { return inputValueDefinitions; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/FragmentDefinition.java b/src/main/java/graphql/language/FragmentDefinition.java index 341db6c447..a9a176d0b1 100644 --- a/src/main/java/graphql/language/FragmentDefinition.java +++ b/src/main/java/graphql/language/FragmentDefinition.java @@ -38,6 +38,7 @@ public FragmentDefinition(String name, TypeName typeCondition, List d this.selectionSet = selectionSet; } + @Override public String getName() { return name; } @@ -54,6 +55,7 @@ public void setTypeCondition(TypeName typeCondition) { this.typeCondition = typeCondition; } + @Override public List getDirectives() { return directives; } @@ -62,6 +64,7 @@ public void setDirectives(List directives) { this.directives = directives; } + @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/FragmentSpread.java b/src/main/java/graphql/language/FragmentSpread.java index 02eb786507..4419a0329c 100644 --- a/src/main/java/graphql/language/FragmentSpread.java +++ b/src/main/java/graphql/language/FragmentSpread.java @@ -24,6 +24,7 @@ public FragmentSpread(String name, List directives) { this.directives = directives; } + @Override public String getName() { return name; } @@ -32,6 +33,7 @@ public void setName(String name) { this.name = name; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InlineFragment.java b/src/main/java/graphql/language/InlineFragment.java index 5ff90323f2..f29ad99312 100644 --- a/src/main/java/graphql/language/InlineFragment.java +++ b/src/main/java/graphql/language/InlineFragment.java @@ -59,6 +59,7 @@ public void setDirectives(List directives) { this.directives = directives; } + @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/InputObjectTypeDefinition.java b/src/main/java/graphql/language/InputObjectTypeDefinition.java index dabd1dad38..ed328e28af 100644 --- a/src/main/java/graphql/language/InputObjectTypeDefinition.java +++ b/src/main/java/graphql/language/InputObjectTypeDefinition.java @@ -23,6 +23,7 @@ public InputObjectTypeDefinition(String name, List directives, List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InputValueDefinition.java b/src/main/java/graphql/language/InputValueDefinition.java index 26d402a27e..91905cca29 100644 --- a/src/main/java/graphql/language/InputValueDefinition.java +++ b/src/main/java/graphql/language/InputValueDefinition.java @@ -41,6 +41,7 @@ public void setType(Type type) { this.type = type; } + @Override public String getName() { return name; } @@ -61,6 +62,7 @@ public void setDefaultValue(Value defaultValue) { this.defaultValue = defaultValue; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InterfaceTypeDefinition.java b/src/main/java/graphql/language/InterfaceTypeDefinition.java index 9a50e184c8..866b4abe26 100644 --- a/src/main/java/graphql/language/InterfaceTypeDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeDefinition.java @@ -27,6 +27,7 @@ public List getFieldDefinitions() { return definitions; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java index 4b3569f01b..3bf963d339 100644 --- a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java @@ -12,6 +12,7 @@ public InterfaceTypeExtensionDefinition(String name, List defin super(name, definitions, directives); } + @Override public InterfaceTypeExtensionDefinition deepCopy() { return new InterfaceTypeExtensionDefinition(getName(), deepCopy(getFieldDefinitions()), diff --git a/src/main/java/graphql/language/NodeTraverser.java b/src/main/java/graphql/language/NodeTraverser.java index 4598200eaa..2398717ac0 100644 --- a/src/main/java/graphql/language/NodeTraverser.java +++ b/src/main/java/graphql/language/NodeTraverser.java @@ -45,11 +45,13 @@ private void doTraverse(NodeVisitor nodeVisitor, Collection root nodeTraverser.rootVars(rootVars); TraverserVisitor traverserVisitor = new TraverserVisitor() { + @Override public TraversalControl enter(TraverserContext context) { context.setVar(LeaveOrEnter.class, LeaveOrEnter.ENTER); return context.thisNode().accept(context, nodeVisitor); } + @Override public TraversalControl leave(TraverserContext context) { context.setVar(LeaveOrEnter.class, LeaveOrEnter.LEAVE); return context.thisNode().accept(context, nodeVisitor); diff --git a/src/main/java/graphql/language/ObjectField.java b/src/main/java/graphql/language/ObjectField.java index c571e84cc2..f155b79083 100644 --- a/src/main/java/graphql/language/ObjectField.java +++ b/src/main/java/graphql/language/ObjectField.java @@ -17,6 +17,7 @@ public ObjectField(String name, Value value) { this.value = value; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/ObjectTypeDefinition.java b/src/main/java/graphql/language/ObjectTypeDefinition.java index 8aeb837c96..0a775f5b9b 100644 --- a/src/main/java/graphql/language/ObjectTypeDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeDefinition.java @@ -29,6 +29,7 @@ public List getImplements() { return implementz; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java index 32e35e3b6f..ff4a09dcbd 100644 --- a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java @@ -16,6 +16,7 @@ public ObjectTypeExtensionDefinition(String name, List implementz, List directives) { this.directives = directives; } + @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/OperationTypeDefinition.java b/src/main/java/graphql/language/OperationTypeDefinition.java index f65e52b2d7..916e249108 100644 --- a/src/main/java/graphql/language/OperationTypeDefinition.java +++ b/src/main/java/graphql/language/OperationTypeDefinition.java @@ -34,6 +34,7 @@ public void setType(Type type) { this.type = type; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/ScalarTypeDefinition.java b/src/main/java/graphql/language/ScalarTypeDefinition.java index 086af311b0..ac39d77405 100644 --- a/src/main/java/graphql/language/ScalarTypeDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeDefinition.java @@ -21,6 +21,7 @@ public ScalarTypeDefinition(String name, List directives) { this.directives = directives; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java index e8b8e21caf..aa11bed95c 100644 --- a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java @@ -12,6 +12,7 @@ public ScalarTypeExtensionDefinition(String name, List directives) { super(name, directives); } + @Override public ScalarTypeExtensionDefinition deepCopy() { return new ScalarTypeExtensionDefinition(getName(), deepCopy(getDirectives())); } diff --git a/src/main/java/graphql/language/Type.java b/src/main/java/graphql/language/Type.java index 2e6012fe77..259e8a5114 100644 --- a/src/main/java/graphql/language/Type.java +++ b/src/main/java/graphql/language/Type.java @@ -6,5 +6,6 @@ public interface Type extends Node { /** * @return a deep copy of this type */ + @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/TypeDefinition.java b/src/main/java/graphql/language/TypeDefinition.java index 2317af21c5..239554b4b4 100644 --- a/src/main/java/graphql/language/TypeDefinition.java +++ b/src/main/java/graphql/language/TypeDefinition.java @@ -17,5 +17,6 @@ public interface TypeDefinition extends Definition{ /** * @return a deep copy of this type definition */ + @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/UnionTypeDefinition.java b/src/main/java/graphql/language/UnionTypeDefinition.java index e9f6aba1e5..25a20cd88b 100644 --- a/src/main/java/graphql/language/UnionTypeDefinition.java +++ b/src/main/java/graphql/language/UnionTypeDefinition.java @@ -23,6 +23,7 @@ public UnionTypeDefinition(String name, List directives, List m this.memberTypes = memberTypes; } + @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java index 8e44894fe7..0b41a0658a 100644 --- a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java @@ -11,6 +11,7 @@ public UnionTypeExtensionDefinition(String name, List directives, Lis super(name, directives, memberTypes); } + @Override public UnionTypeExtensionDefinition deepCopy() { return new UnionTypeExtensionDefinition(getName(), deepCopy(getDirectives()), diff --git a/src/main/java/graphql/language/Value.java b/src/main/java/graphql/language/Value.java index 7ba40bb396..8e9768350f 100644 --- a/src/main/java/graphql/language/Value.java +++ b/src/main/java/graphql/language/Value.java @@ -6,5 +6,6 @@ public interface Value extends Node { /** * @return a deep copy of this value */ + @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/VariableDefinition.java b/src/main/java/graphql/language/VariableDefinition.java index 48cf8bc7d1..220183d497 100644 --- a/src/main/java/graphql/language/VariableDefinition.java +++ b/src/main/java/graphql/language/VariableDefinition.java @@ -35,6 +35,7 @@ public void setDefaultValue(Value defaultValue) { this.defaultValue = defaultValue; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/VariableReference.java b/src/main/java/graphql/language/VariableReference.java index eca689c55a..54cf4fe227 100644 --- a/src/main/java/graphql/language/VariableReference.java +++ b/src/main/java/graphql/language/VariableReference.java @@ -15,6 +15,7 @@ public VariableReference(String name) { this.name = name; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java index 93a0eefe29..3b30ae0f47 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java @@ -39,6 +39,7 @@ public interface DataFetchingFieldSelectionSet extends Supplier> get(); /** diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index 12e55ddb22..d352ad90ed 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -88,11 +88,13 @@ public Map> get() { return selectionSetFields; } + @Override public Map> getArguments() { computeValuesLazily(); return selectionSetFieldArgs; } + @Override public Map getDefinitions() { computeValuesLazily(); return selectionSetFieldDefinitions; diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 1fd1824a08..95495fb8d7 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -75,6 +75,7 @@ void replaceTypeReferences(Map typeMap) { type = (GraphQLInputType) new SchemaUtil().resolveTypeReference(type, typeMap); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index f3c3860a5d..8277740fef 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -139,6 +139,7 @@ private Object getNameByValue(Object value) { throw new CoercingSerializeException("Invalid input for Enum '" + name + "'. Unknown value '" + value + "'"); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java index d0933d7e1b..322d3af809 100644 --- a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java +++ b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java @@ -55,6 +55,7 @@ public GraphQLEnumValueDefinition(String name, String description, Object value, this.directives = directives; } + @Override public String getName() { return name; } @@ -75,14 +76,17 @@ public String getDeprecationReason() { return deprecationReason; } + @Override public List getDirectives() { return new ArrayList<>(directives); } + @Override public Map getDirectivesByName() { return DirectivesUtil.directivesByName(directives); } + @Override public GraphQLDirective getDirective(String directiveName) { return getDirectivesByName().get(directiveName); } diff --git a/src/main/java/graphql/schema/GraphQLFieldDefinition.java b/src/main/java/graphql/schema/GraphQLFieldDefinition.java index fa64239de6..d01eafca67 100644 --- a/src/main/java/graphql/schema/GraphQLFieldDefinition.java +++ b/src/main/java/graphql/schema/GraphQLFieldDefinition.java @@ -69,6 +69,7 @@ void replaceTypeReferences(Map typeMap) { this.type = (GraphQLOutputType) new SchemaUtil().resolveTypeReference(this.type, typeMap); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index ac4c2bc4cd..a25c7b1de8 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -63,6 +63,7 @@ void replaceTypeReferences(Map typeMap) { type = (GraphQLInputType) new SchemaUtil().resolveTypeReference(type, typeMap); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index 844cc93220..e5abbaf340 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -60,6 +60,7 @@ private void buildMap(List fields) { } } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInterfaceType.java b/src/main/java/graphql/schema/GraphQLInterfaceType.java index 394e2013b0..b800ce15d2 100644 --- a/src/main/java/graphql/schema/GraphQLInterfaceType.java +++ b/src/main/java/graphql/schema/GraphQLInterfaceType.java @@ -68,15 +68,18 @@ private void buildDefinitionMap(List fieldDefinitions) { } } + @Override public GraphQLFieldDefinition getFieldDefinition(String name) { return fieldDefinitionsByName.get(name); } + @Override public List getFieldDefinitions() { return new ArrayList<>(fieldDefinitionsByName.values()); } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLList.java b/src/main/java/graphql/schema/GraphQLList.java index c38d85bde8..12dd5de2cc 100644 --- a/src/main/java/graphql/schema/GraphQLList.java +++ b/src/main/java/graphql/schema/GraphQLList.java @@ -36,6 +36,7 @@ public GraphQLList(GraphQLType wrappedType) { } + @Override public GraphQLType getWrappedType() { return wrappedType; } diff --git a/src/main/java/graphql/schema/GraphQLNonNull.java b/src/main/java/graphql/schema/GraphQLNonNull.java index 9b80fa28c6..f10f8f52f7 100644 --- a/src/main/java/graphql/schema/GraphQLNonNull.java +++ b/src/main/java/graphql/schema/GraphQLNonNull.java @@ -35,6 +35,7 @@ public GraphQLNonNull(GraphQLType wrappedType) { this.wrappedType = wrappedType; } + @Override public GraphQLType getWrappedType() { return wrappedType; } diff --git a/src/main/java/graphql/schema/GraphQLObjectType.java b/src/main/java/graphql/schema/GraphQLObjectType.java index fcd7c30a66..62f9ff9453 100644 --- a/src/main/java/graphql/schema/GraphQLObjectType.java +++ b/src/main/java/graphql/schema/GraphQLObjectType.java @@ -80,10 +80,12 @@ public List getDirectives() { return new ArrayList<>(directives); } + @Override public GraphQLFieldDefinition getFieldDefinition(String name) { return fieldDefinitionsByName.get(name); } + @Override public List getFieldDefinitions() { return new ArrayList<>(fieldDefinitionsByName.values()); } @@ -103,6 +105,7 @@ public String getDescription() { } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLScalarType.java b/src/main/java/graphql/schema/GraphQLScalarType.java index b504917cf8..ee1a160806 100644 --- a/src/main/java/graphql/schema/GraphQLScalarType.java +++ b/src/main/java/graphql/schema/GraphQLScalarType.java @@ -58,6 +58,7 @@ public GraphQLScalarType(String name, String description, Coercing coercing, Lis this.directives = directives; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLTypeReference.java b/src/main/java/graphql/schema/GraphQLTypeReference.java index 01208a747c..e255f8786e 100644 --- a/src/main/java/graphql/schema/GraphQLTypeReference.java +++ b/src/main/java/graphql/schema/GraphQLTypeReference.java @@ -29,6 +29,7 @@ public GraphQLTypeReference(String name) { this.name = name; } + @Override public String getName() { return name; } diff --git a/src/main/java/graphql/util/TraverserState.java b/src/main/java/graphql/util/TraverserState.java index 90487691de..ac59a20240 100644 --- a/src/main/java/graphql/util/TraverserState.java +++ b/src/main/java/graphql/util/TraverserState.java @@ -32,6 +32,7 @@ private StackTraverserState(Object initialData) { super(initialData); } + @Override public void pushAll(TraverserContext o, Function> getChildren) { super.state.push(o); super.state.push(Marker.END_LIST); @@ -45,6 +46,7 @@ private QueueTraverserState(Object initialData) { super(initialData); } + @Override public void pushAll(TraverserContext o, Function> getChildren) { getChildren.apply(o.thisNode()).iterator().forEachRemaining((e) -> super.state.add(newContext(e, o))); super.state.add(Marker.END_LIST); diff --git a/src/main/java/graphql/validation/ArgumentValidationUtil.java b/src/main/java/graphql/validation/ArgumentValidationUtil.java index b9a7cc5ed3..13232d6932 100644 --- a/src/main/java/graphql/validation/ArgumentValidationUtil.java +++ b/src/main/java/graphql/validation/ArgumentValidationUtil.java @@ -26,42 +26,50 @@ public ArgumentValidationUtil(Argument argument) { argumentValue = argument.getValue(); } + @Override protected void handleNullError(Value value, GraphQLType type) { errorMessage = "must not be null"; argumentValue = value; } + @Override protected void handleScalarError(Value value, GraphQLScalarType type) { errorMessage = "is not a valid '%s'"; arguments.add(type.getName()); argumentValue = value; } + @Override protected void handleEnumError(Value value, GraphQLEnumType type) { errorMessage = "is not a valid '%s'"; arguments.add(type.getName()); argumentValue = value; } + @Override protected void handleNotObjectError(Value value, GraphQLInputObjectType type) { errorMessage = "must be an object type"; } + @Override protected void handleMissingFieldsError(Value value, GraphQLInputObjectType type, Set missingFields) { errorMessage = "is missing required fields '%s'"; arguments.add(missingFields); } + @Override protected void handleExtraFieldError(Value value, GraphQLInputObjectType type, ObjectField objectField) { errorMessage = "contains a field not in '%s': '%s'"; arguments.add(type.getName()); arguments.add(objectField.getName()); } + @Override protected void handleFieldNotValidError(ObjectField objectField, GraphQLInputObjectType type) { argumentNames.add(0, objectField.getName()); } + @Override protected void handleFieldNotValidError(Value value, GraphQLType type, int index) { argumentNames.add(0, String.format("[%s]", index)); } From a90a88552751b9619343c8cb6ca8e34230278c10 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Fri, 22 Jun 2018 17:13:20 +1000 Subject: [PATCH 2/3] Revert "Added @Override as part of errorprone code health check" This reverts commit 38dfab1 --- src/main/java/graphql/ExceptionWhileDataFetching.java | 1 - src/main/java/graphql/SerializationError.java | 1 - src/main/java/graphql/TypeMismatchError.java | 1 - src/main/java/graphql/UnresolvedTypeError.java | 1 - .../InstrumentationDeferredFieldParameters.java | 1 - .../parameters/InstrumentationFieldFetchParameters.java | 1 - .../parameters/InstrumentationValidationParameters.java | 1 - src/main/java/graphql/language/AbstractNode.java | 1 - src/main/java/graphql/language/Argument.java | 1 - src/main/java/graphql/language/Definition.java | 1 - src/main/java/graphql/language/Directive.java | 1 - src/main/java/graphql/language/DirectiveDefinition.java | 1 - src/main/java/graphql/language/DirectiveLocation.java | 1 - src/main/java/graphql/language/EnumTypeDefinition.java | 1 - .../graphql/language/EnumTypeExtensionDefinition.java | 1 - src/main/java/graphql/language/EnumValue.java | 1 - src/main/java/graphql/language/EnumValueDefinition.java | 2 -- src/main/java/graphql/language/Field.java | 3 --- src/main/java/graphql/language/FieldDefinition.java | 2 -- src/main/java/graphql/language/FragmentDefinition.java | 3 --- src/main/java/graphql/language/FragmentSpread.java | 2 -- src/main/java/graphql/language/InlineFragment.java | 1 - .../java/graphql/language/InputObjectTypeDefinition.java | 1 - src/main/java/graphql/language/InputValueDefinition.java | 2 -- .../java/graphql/language/InterfaceTypeDefinition.java | 1 - .../language/InterfaceTypeExtensionDefinition.java | 1 - src/main/java/graphql/language/NodeTraverser.java | 2 -- src/main/java/graphql/language/ObjectField.java | 1 - src/main/java/graphql/language/ObjectTypeDefinition.java | 1 - .../graphql/language/ObjectTypeExtensionDefinition.java | 1 - src/main/java/graphql/language/OperationDefinition.java | 1 - .../java/graphql/language/OperationTypeDefinition.java | 1 - src/main/java/graphql/language/ScalarTypeDefinition.java | 1 - .../graphql/language/ScalarTypeExtensionDefinition.java | 1 - src/main/java/graphql/language/Type.java | 1 - src/main/java/graphql/language/TypeDefinition.java | 1 - src/main/java/graphql/language/UnionTypeDefinition.java | 1 - .../graphql/language/UnionTypeExtensionDefinition.java | 1 - src/main/java/graphql/language/Value.java | 1 - src/main/java/graphql/language/VariableDefinition.java | 1 - src/main/java/graphql/language/VariableReference.java | 1 - .../graphql/schema/DataFetchingFieldSelectionSet.java | 1 - .../graphql/schema/DataFetchingFieldSelectionSetImpl.java | 2 -- src/main/java/graphql/schema/GraphQLArgument.java | 1 - src/main/java/graphql/schema/GraphQLEnumType.java | 1 - .../java/graphql/schema/GraphQLEnumValueDefinition.java | 4 ---- src/main/java/graphql/schema/GraphQLFieldDefinition.java | 1 - src/main/java/graphql/schema/GraphQLInputObjectField.java | 1 - src/main/java/graphql/schema/GraphQLInputObjectType.java | 1 - src/main/java/graphql/schema/GraphQLInterfaceType.java | 3 --- src/main/java/graphql/schema/GraphQLList.java | 1 - src/main/java/graphql/schema/GraphQLNonNull.java | 1 - src/main/java/graphql/schema/GraphQLObjectType.java | 3 --- src/main/java/graphql/schema/GraphQLScalarType.java | 1 - src/main/java/graphql/schema/GraphQLTypeReference.java | 1 - src/main/java/graphql/util/TraverserState.java | 2 -- .../java/graphql/validation/ArgumentValidationUtil.java | 8 -------- 57 files changed, 82 deletions(-) diff --git a/src/main/java/graphql/ExceptionWhileDataFetching.java b/src/main/java/graphql/ExceptionWhileDataFetching.java index c9a3d09500..faa77c97a1 100644 --- a/src/main/java/graphql/ExceptionWhileDataFetching.java +++ b/src/main/java/graphql/ExceptionWhileDataFetching.java @@ -68,7 +68,6 @@ public List getLocations() { return locations; } - @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/SerializationError.java b/src/main/java/graphql/SerializationError.java index 511e7760ca..70e0147b19 100644 --- a/src/main/java/graphql/SerializationError.java +++ b/src/main/java/graphql/SerializationError.java @@ -47,7 +47,6 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } - @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/TypeMismatchError.java b/src/main/java/graphql/TypeMismatchError.java index 3f27e84acf..0d3cb0d587 100644 --- a/src/main/java/graphql/TypeMismatchError.java +++ b/src/main/java/graphql/TypeMismatchError.java @@ -74,7 +74,6 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } - @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/UnresolvedTypeError.java b/src/main/java/graphql/UnresolvedTypeError.java index a7a0789def..10bf89882e 100644 --- a/src/main/java/graphql/UnresolvedTypeError.java +++ b/src/main/java/graphql/UnresolvedTypeError.java @@ -53,7 +53,6 @@ public ErrorType getErrorType() { return ErrorType.DataFetchingException; } - @Override public List getPath() { return path; } diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java index 84afeea425..f50d64d607 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationDeferredFieldParameters.java @@ -29,7 +29,6 @@ public InstrumentationDeferredFieldParameters(ExecutionContext executionContext, * * @return a new parameters object with the new state */ - @Override public InstrumentationDeferredFieldParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationDeferredFieldParameters( this.getExecutionContext(), this.executionStrategyParameters, this.getField(), this.getTypeInfo(), instrumentationState); diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java index 28e50a00ca..e9de8a796a 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationFieldFetchParameters.java @@ -33,7 +33,6 @@ private InstrumentationFieldFetchParameters(ExecutionContext getExecutionContext * * @return a new parameters object with the new state */ - @Override public InstrumentationFieldFetchParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationFieldFetchParameters( this.getExecutionContext(), this.getField(), this.getEnvironment(), diff --git a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java index f35c7616c8..293316f899 100644 --- a/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java +++ b/src/main/java/graphql/execution/instrumentation/parameters/InstrumentationValidationParameters.java @@ -24,7 +24,6 @@ public InstrumentationValidationParameters(ExecutionInput executionInput, Docume * * @return a new parameters object with the new state */ - @Override public InstrumentationValidationParameters withNewState(InstrumentationState instrumentationState) { return new InstrumentationValidationParameters( this.getExecutionInput(), document, getSchema(), instrumentationState); diff --git a/src/main/java/graphql/language/AbstractNode.java b/src/main/java/graphql/language/AbstractNode.java index 7aec725a69..6a54fe45e8 100644 --- a/src/main/java/graphql/language/AbstractNode.java +++ b/src/main/java/graphql/language/AbstractNode.java @@ -22,7 +22,6 @@ public SourceLocation getSourceLocation() { return sourceLocation; } - @Override public List getComments() { return comments; } diff --git a/src/main/java/graphql/language/Argument.java b/src/main/java/graphql/language/Argument.java index f6d1159f51..ea0c42d352 100644 --- a/src/main/java/graphql/language/Argument.java +++ b/src/main/java/graphql/language/Argument.java @@ -17,7 +17,6 @@ public Argument(String name, Value value) { this.value = value; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/Definition.java b/src/main/java/graphql/language/Definition.java index 8985d473e4..01ba8c0ea6 100644 --- a/src/main/java/graphql/language/Definition.java +++ b/src/main/java/graphql/language/Definition.java @@ -6,6 +6,5 @@ public interface Definition extends Node { /** * @return a deep copy of this definition */ - @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/Directive.java b/src/main/java/graphql/language/Directive.java index d4a1fd7a03..6b4dfaa037 100644 --- a/src/main/java/graphql/language/Directive.java +++ b/src/main/java/graphql/language/Directive.java @@ -37,7 +37,6 @@ public Argument getArgument(String argumentName) { return getArgumentsByName().get(argumentName); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/DirectiveDefinition.java b/src/main/java/graphql/language/DirectiveDefinition.java index 60f2a5d33b..f320986cd9 100644 --- a/src/main/java/graphql/language/DirectiveDefinition.java +++ b/src/main/java/graphql/language/DirectiveDefinition.java @@ -23,7 +23,6 @@ public DirectiveDefinition(String name, List inputValueDef this.directiveLocations = directiveLocations; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/DirectiveLocation.java b/src/main/java/graphql/language/DirectiveLocation.java index 59438e34f1..4d176d7cdf 100644 --- a/src/main/java/graphql/language/DirectiveLocation.java +++ b/src/main/java/graphql/language/DirectiveLocation.java @@ -22,7 +22,6 @@ public DirectiveLocation(String name) { this.name = name; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/EnumTypeDefinition.java b/src/main/java/graphql/language/EnumTypeDefinition.java index b66abfdf39..9182dd528a 100644 --- a/src/main/java/graphql/language/EnumTypeDefinition.java +++ b/src/main/java/graphql/language/EnumTypeDefinition.java @@ -30,7 +30,6 @@ public List getEnumValueDefinitions() { return enumValueDefinitions; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java index dda428648e..ad5f3c0f28 100644 --- a/src/main/java/graphql/language/EnumTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/EnumTypeExtensionDefinition.java @@ -15,7 +15,6 @@ public EnumTypeExtensionDefinition(String name, List enumVa super(name, enumValueDefinitions, directives); } - @Override public EnumTypeExtensionDefinition deepCopy() { return new EnumTypeExtensionDefinition(getName(), deepCopy(getEnumValueDefinitions()), diff --git a/src/main/java/graphql/language/EnumValue.java b/src/main/java/graphql/language/EnumValue.java index 8316bd2708..ff1ef5593b 100644 --- a/src/main/java/graphql/language/EnumValue.java +++ b/src/main/java/graphql/language/EnumValue.java @@ -15,7 +15,6 @@ public EnumValue(String name) { this.name = name; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/EnumValueDefinition.java b/src/main/java/graphql/language/EnumValueDefinition.java index 4ed5ca70d3..e3d263210f 100644 --- a/src/main/java/graphql/language/EnumValueDefinition.java +++ b/src/main/java/graphql/language/EnumValueDefinition.java @@ -21,7 +21,6 @@ public EnumValueDefinition(String name, List directives) { this.directives = (null == directives) ? new ArrayList<>() : directives; } - @Override public String getName() { return name; } @@ -34,7 +33,6 @@ public void setDescription(Description description) { this.description = description; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/Field.java b/src/main/java/graphql/language/Field.java index ebd5f4c926..580e0f626e 100644 --- a/src/main/java/graphql/language/Field.java +++ b/src/main/java/graphql/language/Field.java @@ -64,7 +64,6 @@ public List getChildren() { } - @Override public String getName() { return name; } @@ -89,7 +88,6 @@ public void setArguments(List arguments) { this.arguments = arguments; } - @Override public List getDirectives() { return directives; } @@ -98,7 +96,6 @@ public void setDirectives(List directives) { this.directives = directives; } - @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/FieldDefinition.java b/src/main/java/graphql/language/FieldDefinition.java index badd303e00..ed5a64134b 100644 --- a/src/main/java/graphql/language/FieldDefinition.java +++ b/src/main/java/graphql/language/FieldDefinition.java @@ -37,7 +37,6 @@ public void setType(Type type) { this.type = type; } - @Override public String getName() { return name; } @@ -54,7 +53,6 @@ public List getInputValueDefinitions() { return inputValueDefinitions; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/FragmentDefinition.java b/src/main/java/graphql/language/FragmentDefinition.java index a9a176d0b1..341db6c447 100644 --- a/src/main/java/graphql/language/FragmentDefinition.java +++ b/src/main/java/graphql/language/FragmentDefinition.java @@ -38,7 +38,6 @@ public FragmentDefinition(String name, TypeName typeCondition, List d this.selectionSet = selectionSet; } - @Override public String getName() { return name; } @@ -55,7 +54,6 @@ public void setTypeCondition(TypeName typeCondition) { this.typeCondition = typeCondition; } - @Override public List getDirectives() { return directives; } @@ -64,7 +62,6 @@ public void setDirectives(List directives) { this.directives = directives; } - @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/FragmentSpread.java b/src/main/java/graphql/language/FragmentSpread.java index 4419a0329c..02eb786507 100644 --- a/src/main/java/graphql/language/FragmentSpread.java +++ b/src/main/java/graphql/language/FragmentSpread.java @@ -24,7 +24,6 @@ public FragmentSpread(String name, List directives) { this.directives = directives; } - @Override public String getName() { return name; } @@ -33,7 +32,6 @@ public void setName(String name) { this.name = name; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InlineFragment.java b/src/main/java/graphql/language/InlineFragment.java index f29ad99312..5ff90323f2 100644 --- a/src/main/java/graphql/language/InlineFragment.java +++ b/src/main/java/graphql/language/InlineFragment.java @@ -59,7 +59,6 @@ public void setDirectives(List directives) { this.directives = directives; } - @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/InputObjectTypeDefinition.java b/src/main/java/graphql/language/InputObjectTypeDefinition.java index ed328e28af..dabd1dad38 100644 --- a/src/main/java/graphql/language/InputObjectTypeDefinition.java +++ b/src/main/java/graphql/language/InputObjectTypeDefinition.java @@ -23,7 +23,6 @@ public InputObjectTypeDefinition(String name, List directives, List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InputValueDefinition.java b/src/main/java/graphql/language/InputValueDefinition.java index 91905cca29..26d402a27e 100644 --- a/src/main/java/graphql/language/InputValueDefinition.java +++ b/src/main/java/graphql/language/InputValueDefinition.java @@ -41,7 +41,6 @@ public void setType(Type type) { this.type = type; } - @Override public String getName() { return name; } @@ -62,7 +61,6 @@ public void setDefaultValue(Value defaultValue) { this.defaultValue = defaultValue; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InterfaceTypeDefinition.java b/src/main/java/graphql/language/InterfaceTypeDefinition.java index 866b4abe26..9a50e184c8 100644 --- a/src/main/java/graphql/language/InterfaceTypeDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeDefinition.java @@ -27,7 +27,6 @@ public List getFieldDefinitions() { return definitions; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java index 3bf963d339..4b3569f01b 100644 --- a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java @@ -12,7 +12,6 @@ public InterfaceTypeExtensionDefinition(String name, List defin super(name, definitions, directives); } - @Override public InterfaceTypeExtensionDefinition deepCopy() { return new InterfaceTypeExtensionDefinition(getName(), deepCopy(getFieldDefinitions()), diff --git a/src/main/java/graphql/language/NodeTraverser.java b/src/main/java/graphql/language/NodeTraverser.java index 2398717ac0..4598200eaa 100644 --- a/src/main/java/graphql/language/NodeTraverser.java +++ b/src/main/java/graphql/language/NodeTraverser.java @@ -45,13 +45,11 @@ private void doTraverse(NodeVisitor nodeVisitor, Collection root nodeTraverser.rootVars(rootVars); TraverserVisitor traverserVisitor = new TraverserVisitor() { - @Override public TraversalControl enter(TraverserContext context) { context.setVar(LeaveOrEnter.class, LeaveOrEnter.ENTER); return context.thisNode().accept(context, nodeVisitor); } - @Override public TraversalControl leave(TraverserContext context) { context.setVar(LeaveOrEnter.class, LeaveOrEnter.LEAVE); return context.thisNode().accept(context, nodeVisitor); diff --git a/src/main/java/graphql/language/ObjectField.java b/src/main/java/graphql/language/ObjectField.java index f155b79083..c571e84cc2 100644 --- a/src/main/java/graphql/language/ObjectField.java +++ b/src/main/java/graphql/language/ObjectField.java @@ -17,7 +17,6 @@ public ObjectField(String name, Value value) { this.value = value; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/ObjectTypeDefinition.java b/src/main/java/graphql/language/ObjectTypeDefinition.java index 0a775f5b9b..8aeb837c96 100644 --- a/src/main/java/graphql/language/ObjectTypeDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeDefinition.java @@ -29,7 +29,6 @@ public List getImplements() { return implementz; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java index ff4a09dcbd..32e35e3b6f 100644 --- a/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ObjectTypeExtensionDefinition.java @@ -16,7 +16,6 @@ public ObjectTypeExtensionDefinition(String name, List implementz, List directives) { this.directives = directives; } - @Override public SelectionSet getSelectionSet() { return selectionSet; } diff --git a/src/main/java/graphql/language/OperationTypeDefinition.java b/src/main/java/graphql/language/OperationTypeDefinition.java index 916e249108..f65e52b2d7 100644 --- a/src/main/java/graphql/language/OperationTypeDefinition.java +++ b/src/main/java/graphql/language/OperationTypeDefinition.java @@ -34,7 +34,6 @@ public void setType(Type type) { this.type = type; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/ScalarTypeDefinition.java b/src/main/java/graphql/language/ScalarTypeDefinition.java index ac39d77405..086af311b0 100644 --- a/src/main/java/graphql/language/ScalarTypeDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeDefinition.java @@ -21,7 +21,6 @@ public ScalarTypeDefinition(String name, List directives) { this.directives = directives; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java index aa11bed95c..e8b8e21caf 100644 --- a/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/ScalarTypeExtensionDefinition.java @@ -12,7 +12,6 @@ public ScalarTypeExtensionDefinition(String name, List directives) { super(name, directives); } - @Override public ScalarTypeExtensionDefinition deepCopy() { return new ScalarTypeExtensionDefinition(getName(), deepCopy(getDirectives())); } diff --git a/src/main/java/graphql/language/Type.java b/src/main/java/graphql/language/Type.java index 259e8a5114..2e6012fe77 100644 --- a/src/main/java/graphql/language/Type.java +++ b/src/main/java/graphql/language/Type.java @@ -6,6 +6,5 @@ public interface Type extends Node { /** * @return a deep copy of this type */ - @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/TypeDefinition.java b/src/main/java/graphql/language/TypeDefinition.java index 239554b4b4..2317af21c5 100644 --- a/src/main/java/graphql/language/TypeDefinition.java +++ b/src/main/java/graphql/language/TypeDefinition.java @@ -17,6 +17,5 @@ public interface TypeDefinition extends Definition{ /** * @return a deep copy of this type definition */ - @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/UnionTypeDefinition.java b/src/main/java/graphql/language/UnionTypeDefinition.java index 25a20cd88b..e9f6aba1e5 100644 --- a/src/main/java/graphql/language/UnionTypeDefinition.java +++ b/src/main/java/graphql/language/UnionTypeDefinition.java @@ -23,7 +23,6 @@ public UnionTypeDefinition(String name, List directives, List m this.memberTypes = memberTypes; } - @Override public List getDirectives() { return directives; } diff --git a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java index 0b41a0658a..8e44894fe7 100644 --- a/src/main/java/graphql/language/UnionTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/UnionTypeExtensionDefinition.java @@ -11,7 +11,6 @@ public UnionTypeExtensionDefinition(String name, List directives, Lis super(name, directives, memberTypes); } - @Override public UnionTypeExtensionDefinition deepCopy() { return new UnionTypeExtensionDefinition(getName(), deepCopy(getDirectives()), diff --git a/src/main/java/graphql/language/Value.java b/src/main/java/graphql/language/Value.java index 8e9768350f..7ba40bb396 100644 --- a/src/main/java/graphql/language/Value.java +++ b/src/main/java/graphql/language/Value.java @@ -6,6 +6,5 @@ public interface Value extends Node { /** * @return a deep copy of this value */ - @Override T deepCopy(); } diff --git a/src/main/java/graphql/language/VariableDefinition.java b/src/main/java/graphql/language/VariableDefinition.java index 220183d497..48cf8bc7d1 100644 --- a/src/main/java/graphql/language/VariableDefinition.java +++ b/src/main/java/graphql/language/VariableDefinition.java @@ -35,7 +35,6 @@ public void setDefaultValue(Value defaultValue) { this.defaultValue = defaultValue; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/language/VariableReference.java b/src/main/java/graphql/language/VariableReference.java index 54cf4fe227..eca689c55a 100644 --- a/src/main/java/graphql/language/VariableReference.java +++ b/src/main/java/graphql/language/VariableReference.java @@ -15,7 +15,6 @@ public VariableReference(String name) { this.name = name; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java index 3b30ae0f47..93a0eefe29 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSet.java @@ -39,7 +39,6 @@ public interface DataFetchingFieldSelectionSet extends Supplier> get(); /** diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index d352ad90ed..12e55ddb22 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -88,13 +88,11 @@ public Map> get() { return selectionSetFields; } - @Override public Map> getArguments() { computeValuesLazily(); return selectionSetFieldArgs; } - @Override public Map getDefinitions() { computeValuesLazily(); return selectionSetFieldDefinitions; diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 95495fb8d7..1fd1824a08 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -75,7 +75,6 @@ void replaceTypeReferences(Map typeMap) { type = (GraphQLInputType) new SchemaUtil().resolveTypeReference(type, typeMap); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index 8277740fef..f3c3860a5d 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -139,7 +139,6 @@ private Object getNameByValue(Object value) { throw new CoercingSerializeException("Invalid input for Enum '" + name + "'. Unknown value '" + value + "'"); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java index 322d3af809..d0933d7e1b 100644 --- a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java +++ b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java @@ -55,7 +55,6 @@ public GraphQLEnumValueDefinition(String name, String description, Object value, this.directives = directives; } - @Override public String getName() { return name; } @@ -76,17 +75,14 @@ public String getDeprecationReason() { return deprecationReason; } - @Override public List getDirectives() { return new ArrayList<>(directives); } - @Override public Map getDirectivesByName() { return DirectivesUtil.directivesByName(directives); } - @Override public GraphQLDirective getDirective(String directiveName) { return getDirectivesByName().get(directiveName); } diff --git a/src/main/java/graphql/schema/GraphQLFieldDefinition.java b/src/main/java/graphql/schema/GraphQLFieldDefinition.java index d01eafca67..fa64239de6 100644 --- a/src/main/java/graphql/schema/GraphQLFieldDefinition.java +++ b/src/main/java/graphql/schema/GraphQLFieldDefinition.java @@ -69,7 +69,6 @@ void replaceTypeReferences(Map typeMap) { this.type = (GraphQLOutputType) new SchemaUtil().resolveTypeReference(this.type, typeMap); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index a25c7b1de8..ac4c2bc4cd 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -63,7 +63,6 @@ void replaceTypeReferences(Map typeMap) { type = (GraphQLInputType) new SchemaUtil().resolveTypeReference(type, typeMap); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index e5abbaf340..844cc93220 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -60,7 +60,6 @@ private void buildMap(List fields) { } } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLInterfaceType.java b/src/main/java/graphql/schema/GraphQLInterfaceType.java index b800ce15d2..394e2013b0 100644 --- a/src/main/java/graphql/schema/GraphQLInterfaceType.java +++ b/src/main/java/graphql/schema/GraphQLInterfaceType.java @@ -68,18 +68,15 @@ private void buildDefinitionMap(List fieldDefinitions) { } } - @Override public GraphQLFieldDefinition getFieldDefinition(String name) { return fieldDefinitionsByName.get(name); } - @Override public List getFieldDefinitions() { return new ArrayList<>(fieldDefinitionsByName.values()); } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLList.java b/src/main/java/graphql/schema/GraphQLList.java index 12dd5de2cc..c38d85bde8 100644 --- a/src/main/java/graphql/schema/GraphQLList.java +++ b/src/main/java/graphql/schema/GraphQLList.java @@ -36,7 +36,6 @@ public GraphQLList(GraphQLType wrappedType) { } - @Override public GraphQLType getWrappedType() { return wrappedType; } diff --git a/src/main/java/graphql/schema/GraphQLNonNull.java b/src/main/java/graphql/schema/GraphQLNonNull.java index f10f8f52f7..9b80fa28c6 100644 --- a/src/main/java/graphql/schema/GraphQLNonNull.java +++ b/src/main/java/graphql/schema/GraphQLNonNull.java @@ -35,7 +35,6 @@ public GraphQLNonNull(GraphQLType wrappedType) { this.wrappedType = wrappedType; } - @Override public GraphQLType getWrappedType() { return wrappedType; } diff --git a/src/main/java/graphql/schema/GraphQLObjectType.java b/src/main/java/graphql/schema/GraphQLObjectType.java index 62f9ff9453..fcd7c30a66 100644 --- a/src/main/java/graphql/schema/GraphQLObjectType.java +++ b/src/main/java/graphql/schema/GraphQLObjectType.java @@ -80,12 +80,10 @@ public List getDirectives() { return new ArrayList<>(directives); } - @Override public GraphQLFieldDefinition getFieldDefinition(String name) { return fieldDefinitionsByName.get(name); } - @Override public List getFieldDefinitions() { return new ArrayList<>(fieldDefinitionsByName.values()); } @@ -105,7 +103,6 @@ public String getDescription() { } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLScalarType.java b/src/main/java/graphql/schema/GraphQLScalarType.java index ee1a160806..b504917cf8 100644 --- a/src/main/java/graphql/schema/GraphQLScalarType.java +++ b/src/main/java/graphql/schema/GraphQLScalarType.java @@ -58,7 +58,6 @@ public GraphQLScalarType(String name, String description, Coercing coercing, Lis this.directives = directives; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/schema/GraphQLTypeReference.java b/src/main/java/graphql/schema/GraphQLTypeReference.java index e255f8786e..01208a747c 100644 --- a/src/main/java/graphql/schema/GraphQLTypeReference.java +++ b/src/main/java/graphql/schema/GraphQLTypeReference.java @@ -29,7 +29,6 @@ public GraphQLTypeReference(String name) { this.name = name; } - @Override public String getName() { return name; } diff --git a/src/main/java/graphql/util/TraverserState.java b/src/main/java/graphql/util/TraverserState.java index ac59a20240..90487691de 100644 --- a/src/main/java/graphql/util/TraverserState.java +++ b/src/main/java/graphql/util/TraverserState.java @@ -32,7 +32,6 @@ private StackTraverserState(Object initialData) { super(initialData); } - @Override public void pushAll(TraverserContext o, Function> getChildren) { super.state.push(o); super.state.push(Marker.END_LIST); @@ -46,7 +45,6 @@ private QueueTraverserState(Object initialData) { super(initialData); } - @Override public void pushAll(TraverserContext o, Function> getChildren) { getChildren.apply(o.thisNode()).iterator().forEachRemaining((e) -> super.state.add(newContext(e, o))); super.state.add(Marker.END_LIST); diff --git a/src/main/java/graphql/validation/ArgumentValidationUtil.java b/src/main/java/graphql/validation/ArgumentValidationUtil.java index 13232d6932..b9a7cc5ed3 100644 --- a/src/main/java/graphql/validation/ArgumentValidationUtil.java +++ b/src/main/java/graphql/validation/ArgumentValidationUtil.java @@ -26,50 +26,42 @@ public ArgumentValidationUtil(Argument argument) { argumentValue = argument.getValue(); } - @Override protected void handleNullError(Value value, GraphQLType type) { errorMessage = "must not be null"; argumentValue = value; } - @Override protected void handleScalarError(Value value, GraphQLScalarType type) { errorMessage = "is not a valid '%s'"; arguments.add(type.getName()); argumentValue = value; } - @Override protected void handleEnumError(Value value, GraphQLEnumType type) { errorMessage = "is not a valid '%s'"; arguments.add(type.getName()); argumentValue = value; } - @Override protected void handleNotObjectError(Value value, GraphQLInputObjectType type) { errorMessage = "must be an object type"; } - @Override protected void handleMissingFieldsError(Value value, GraphQLInputObjectType type, Set missingFields) { errorMessage = "is missing required fields '%s'"; arguments.add(missingFields); } - @Override protected void handleExtraFieldError(Value value, GraphQLInputObjectType type, ObjectField objectField) { errorMessage = "contains a field not in '%s': '%s'"; arguments.add(type.getName()); arguments.add(objectField.getName()); } - @Override protected void handleFieldNotValidError(ObjectField objectField, GraphQLInputObjectType type) { argumentNames.add(0, objectField.getName()); } - @Override protected void handleFieldNotValidError(Value value, GraphQLType type, int index) { argumentNames.add(0, String.format("[%s]", index)); } From af17fdbf381b7a9de775f9e84ca1bb235b6240f7 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Sun, 12 Aug 2018 05:58:46 +0800 Subject: [PATCH 3/3] Added the ability for Scalars to get the variables map, just like in graphql-js --- .../graphql/execution/ValuesResolver.java | 8 +- src/main/java/graphql/schema/Coercing.java | 29 ++++- .../groovy/graphql/schema/CoercingTest.groovy | 118 ++++++++++++++++++ 3 files changed, 150 insertions(+), 5 deletions(-) create mode 100644 src/test/groovy/graphql/schema/CoercingTest.groovy diff --git a/src/main/java/graphql/execution/ValuesResolver.java b/src/main/java/graphql/execution/ValuesResolver.java index 379616b093..5b0817c2f1 100644 --- a/src/main/java/graphql/execution/ValuesResolver.java +++ b/src/main/java/graphql/execution/ValuesResolver.java @@ -246,7 +246,7 @@ private Object coerceValueAst(GraphqlFieldVisibility fieldVisibility, GraphQLTyp return null; } if (type instanceof GraphQLScalarType) { - return parseLiteral(inputValue, ((GraphQLScalarType) type).getCoercing()); + return parseLiteral(inputValue, ((GraphQLScalarType) type).getCoercing(), variables); } if (isNonNull(type)) { return coerceValueAst(fieldVisibility, unwrapOne(type), inputValue, variables); @@ -255,7 +255,7 @@ private Object coerceValueAst(GraphqlFieldVisibility fieldVisibility, GraphQLTyp return coerceValueAstForInputObject(fieldVisibility, (GraphQLInputObjectType) type, (ObjectValue) inputValue, variables); } if (type instanceof GraphQLEnumType) { - return parseLiteral(inputValue, ((GraphQLEnumType) type).getCoercing()); + return parseLiteral(inputValue, ((GraphQLEnumType) type).getCoercing(), variables); } if (isList(type)) { return coerceValueAstForList(fieldVisibility, (GraphQLList) type, inputValue, variables); @@ -263,9 +263,9 @@ private Object coerceValueAst(GraphqlFieldVisibility fieldVisibility, GraphQLTyp return null; } - private Object parseLiteral(Value inputValue, Coercing coercing) { + private Object parseLiteral(Value inputValue, Coercing coercing, Map variables) { // the CoercingParseLiteralException exception that could happen here has been validated earlier via ValidationUtil - return coercing.parseLiteral(inputValue); + return coercing.parseLiteral(inputValue,variables); } private Object coerceValueAstForList(GraphqlFieldVisibility fieldVisibility, GraphQLList graphQLList, Value value, Map variables) { diff --git a/src/main/java/graphql/schema/Coercing.java b/src/main/java/graphql/schema/Coercing.java index f03e5f972a..59a17813ab 100644 --- a/src/main/java/graphql/schema/Coercing.java +++ b/src/main/java/graphql/schema/Coercing.java @@ -3,6 +3,8 @@ import graphql.PublicSpi; +import java.util.Map; + /** * The Coercing interface is used by {@link graphql.schema.GraphQLScalarType}s to parse and serialise object values. *

@@ -50,7 +52,7 @@ public interface Coercing { I parseValue(Object input) throws CoercingParseValueException; /** - * Called to convert an query input AST node into a Java object acceptable for the scalar type. The input + * Called during query validation to convert an query input AST node into a Java object acceptable for the scalar type. The input * object will be an instance of {@link graphql.language.Value}. * * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseLiteral method, but rather @@ -63,4 +65,29 @@ public interface Coercing { * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ I parseLiteral(Object input) throws CoercingParseLiteralException; + + /** + * Called during query execution to convert an query input AST node into a Java object acceptable for the scalar type. The input + * object will be an instance of {@link graphql.language.Value}. + * + * Note : You should not allow {@link java.lang.RuntimeException}s to come out of your parseLiteral method, but rather + * catch them and fire them as {@link graphql.schema.CoercingParseLiteralException} instead as per the method contract. + * + * Many scalar types don't need to implement this method because they do'nt take AST {@link graphql.language.VariableReference} + * objects and convert them into actual values. But for those scalar types that want to do this, then this + * method should be implemented. + * + * @param input is never null + * @param variables the resolved variables passed to the query + * + * @return a parsed value which is never null + * + * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed + */ + @SuppressWarnings("unused") + default I parseLiteral(Object input, Map variables) throws CoercingParseLiteralException { + return parseLiteral(input); + } + + ; } diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy new file mode 100644 index 0000000000..2d1d1daea4 --- /dev/null +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -0,0 +1,118 @@ +package graphql.schema + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.ArrayValue +import graphql.language.BooleanValue +import graphql.language.FloatValue +import graphql.language.IntValue +import graphql.language.NullValue +import graphql.language.ObjectValue +import graphql.language.StringValue +import graphql.language.VariableReference +import graphql.schema.idl.RuntimeWiring +import graphql.schema.idl.TypeRuntimeWiring +import spock.lang.Specification + +class CoercingTest extends Specification { + + GraphQLScalarType mapLikeScalar = new GraphQLScalarType("MapLike", "MapLike", new Coercing() { + @Override + Object serialize(Object dataFetcherResult) throws CoercingSerializeException { + return dataFetcherResult + } + + @Override + Object parseValue(Object input) throws CoercingParseValueException { + return input + } + + @Override + Object parseLiteral(Object input) throws CoercingParseLiteralException { + return parseLiteral(input, [:]) + } + + @Override + Object parseLiteral(Object input, Map variables) throws CoercingParseLiteralException { + if (input instanceof StringValue) { + return ((StringValue) input).getValue() + } + if (input instanceof IntValue) { + return ((IntValue) input).getValue() + } + if (input instanceof FloatValue) { + return ((FloatValue) input).getValue() + } + if (input instanceof BooleanValue) { + return ((BooleanValue) input).isValue() + } + if (input instanceof ObjectValue) { + Map obj = new LinkedHashMap<>() + ((ObjectValue) input).getObjectFields().forEach({ + fld -> + def value = parseLiteral(fld.getValue(), variables) + obj.put(fld.getName(), value) + }) + return obj + } + if (input instanceof VariableReference) { + def name = ((VariableReference) input).getName() + return variables.get(name) + } + if (input instanceof ArrayValue) { + return ((ArrayValue) input).getValues().collect({ v -> parseLiteral(v, variables) }) + } + if (input instanceof NullValue) { + return null + } + throw new CoercingParseLiteralException() + } + }) + + + def "end to end test of coercing with variables references"() { + def spec = ''' + + scalar MapLike + + type Query { + field(argument : MapLike) : MapLike + } + ''' + DataFetcher df = new DataFetcher() { + @Override + Object get(DataFetchingEnvironment environment) { + def argument = environment.getArgument("argument") + return argument + } + } + + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Query") + .dataFetcher("field", df)) + .scalar(mapLikeScalar) + .build() + + + def schema = TestUtil.schema(spec, runtimeWiring) + def graphQL = GraphQL.newGraphQL(schema).build() + def executionInput = ExecutionInput.newExecutionInput() + .variables([ + strVar: "strVar", + intVar: 999 + ]) + .query(''' + query Q($strVar : String) { + field(argument : { s : $strVar, i : 666 }) + } + ''') + .build() + + when: + def er = graphQL.execute(executionInput) + then: + er.errors.isEmpty() + er.data == [field: [s: "strVar", i: 666]] + } +}