diff --git a/README.md b/README.md
index 31cc9f7c..aac8d3ef 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ If you would like to use a tool that creates a graphql spring boot server using
```groovy
dependencies {
- compile "io.github.graphql-java:graphql-java-annotations:21.5"
+ compile "io.github.graphql-java:graphql-java-annotations:24.3"
}
```
@@ -47,7 +47,7 @@ dependencies {
io.github.graphql-java
graphql-java-annotations
- 21.5
+ 24.3
```
diff --git a/build.gradle b/build.gradle
index cc8d0e72..62210f2b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -59,8 +59,8 @@ gradle.projectsEvaluated {
dependencies {
implementation 'javax.validation:validation-api:1.1.0.Final'
- implementation 'com.graphql-java:graphql-java:21.5'
- implementation 'com.graphql-java:graphql-java-extended-scalars:21.0'
+ implementation 'com.graphql-java:graphql-java:24.3'
+ implementation 'com.graphql-java:graphql-java-extended-scalars:24.0'
implementation 'javax.xml.bind:jaxb-api:2.3.1'
// OSGi
diff --git a/gradle.properties b/gradle.properties
index 1648a9b2..f4698408 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,4 +5,4 @@ org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Dfile.encoding=UTF-8
-version = 21.5
\ No newline at end of file
+version = 24.3
diff --git a/src/main/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilder.java b/src/main/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilder.java
index f17810af..1e7c5e99 100644
--- a/src/main/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilder.java
+++ b/src/main/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilder.java
@@ -26,6 +26,8 @@
import graphql.annotations.processor.ProcessingElementsContainer;
import graphql.annotations.processor.exceptions.GraphQLAnnotationsException;
import graphql.annotations.processor.util.DirectiveJavaAnnotationUtil;
+import graphql.schema.GraphQLAppliedDirective;
+import graphql.schema.GraphQLAppliedDirectiveArgument;
import graphql.schema.GraphQLArgument;
import graphql.schema.GraphQLDirective;
import graphql.schema.GraphQLScalarType;
@@ -135,7 +137,7 @@ private void transformArgument(Annotation annotation, GraphQLDirective.Builder d
Object value;
if ( graphQLArgument.getType() instanceof GraphQLScalarType )
{
- value = ((GraphQLScalarType) graphQLArgument.getType()).getCoercing().parseValue(argumentValue);
+ value = ((GraphQLScalarType) graphQLArgument.getType()).getCoercing().serialize(argumentValue);
}
else
{
@@ -161,8 +163,8 @@ private void transformArgument(String[] argumentValues, GraphQLDirective.Builder
if (graphQLArgument.getType() instanceof GraphQLScalarType) {
try {
- Object value = ((GraphQLScalarType) graphQLArgument.getType()).getCoercing().parseValue(argumentValue);
- builder.value( value );
+ Object value = ((GraphQLScalarType) graphQLArgument.getType()).getCoercing().serialize(argumentValue);
+ builder.value(value);
} catch (Exception e) {
throw new GraphQLAnnotationsException(COULD_NOT_PARSE_ARGUMENT_VALUE_TO_ARGUMENT_TYPE, e);
}
diff --git a/src/main/java/graphql/annotations/processor/util/CodeRegistryUtil.java b/src/main/java/graphql/annotations/processor/util/CodeRegistryUtil.java
index 77d9c29b..ee675fa9 100644
--- a/src/main/java/graphql/annotations/processor/util/CodeRegistryUtil.java
+++ b/src/main/java/graphql/annotations/processor/util/CodeRegistryUtil.java
@@ -43,6 +43,6 @@ public static void wrapDataFetcher(GraphQLFieldDefinition fieldDefinition, Annot
* @return the data fetcher
*/
public static DataFetcher getDataFetcher(GraphQLCodeRegistry.Builder codeRegistryBuilder, GraphQLSchemaElement parentElement, GraphQLFieldDefinition fieldDefinition) {
- return codeRegistryBuilder.getDataFetcher((GraphQLFieldsContainer) parentElement, fieldDefinition);
+ return codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates((GraphQLFieldsContainer) parentElement, fieldDefinition), fieldDefinition);
}
}
diff --git a/src/main/java/graphql/annotations/strategies/EnhancedExecutionStrategy.java b/src/main/java/graphql/annotations/strategies/EnhancedExecutionStrategy.java
index 465ff79d..7b16d3ad 100644
--- a/src/main/java/graphql/annotations/strategies/EnhancedExecutionStrategy.java
+++ b/src/main/java/graphql/annotations/strategies/EnhancedExecutionStrategy.java
@@ -23,53 +23,34 @@
import java.util.HashMap;
import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
public class EnhancedExecutionStrategy extends AsyncSerialExecutionStrategy {
private static final String CLIENT_MUTATION_ID = "clientMutationId";
@Override
- protected CompletableFuture resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) {
- GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType();
- GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, parameters.getField().getSingleField());
- if (fieldDef == null) return null;
+ protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException {
+ graphql.schema.GraphQLType fieldType = parameters.getExecutionStepInfo().getType();
- if (fieldDef.getName().contentEquals(CLIENT_MUTATION_ID)) {
+ if (parameters.getExecutionStepInfo().getFieldDefinition().getName().contentEquals(CLIENT_MUTATION_ID)) {
Field field = (Field) executionContext.getOperationDefinition().getSelectionSet().getSelections().get(0);
Argument argument = field.getArguments().get(0);
Object clientMutationId;
if (argument.getValue() instanceof VariableReference) {
VariableReference ref = (VariableReference) argument.getValue();
- HashMap mutationInputVariables = (HashMap) executionContext.getVariables().get(ref.getName());
+ HashMap mutationInputVariables = (HashMap) executionContext.getCoercedVariables().get(ref.getName());
clientMutationId = mutationInputVariables.get(CLIENT_MUTATION_ID);
} else {
ObjectValue value = (ObjectValue) field.getArguments().get(0).getValue();
StringValue clientMutationIdVal = (StringValue) value.getObjectFields().stream()
- .filter(f -> f.getName().contentEquals(CLIENT_MUTATION_ID))
- .findFirst().get().getValue();
+ .filter(f -> f.getName().contentEquals(CLIENT_MUTATION_ID))
+ .findFirst().get().getValue();
clientMutationId = clientMutationIdVal.getValue();
}
-
- ExecutionStepInfo fieldTypeInfo = ExecutionStepInfo.newExecutionStepInfo().type(fieldDef.getType()).parentInfo(parameters.getExecutionStepInfo()).build();
- ExecutionStrategyParameters newParameters = ExecutionStrategyParameters.newParameters()
- .fields(parameters.getFields())
- .nonNullFieldValidator(parameters.getNonNullFieldValidator())
- .executionStepInfo(fieldTypeInfo)
- .source(clientMutationId)
- .build();
-
-
- return completeValue(executionContext, newParameters).getFieldValue();
- } else {
- return super.resolveField(executionContext, parameters);
+ return super.completeValue(executionContext, withSource(parameters, clientMutationId));
}
- }
- @Override
- protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException {
- graphql.schema.GraphQLType fieldType = parameters.getExecutionStepInfo().getType();
Object result = parameters.getSource();
if (result instanceof Enum && fieldType instanceof GraphQLEnumType) {
Object value = ((GraphQLEnumType) fieldType).parseValue(((Enum) result).name());
diff --git a/src/test/java/graphql/annotations/GraphQLIterableAndArrayTest.java b/src/test/java/graphql/annotations/GraphQLIterableAndArrayTest.java
index 6cb8bb04..9f65ad75 100644
--- a/src/test/java/graphql/annotations/GraphQLIterableAndArrayTest.java
+++ b/src/test/java/graphql/annotations/GraphQLIterableAndArrayTest.java
@@ -138,10 +138,10 @@ public void queryWithArrayWithinAnArray() {
}
private Object getQueryResultAtIndex(ExecutionResult result, String queryName, int index) {
- return ((ArrayList) (((LinkedHashMap) result.getData()).get(queryName))).get(index);
+ return ((List) (((LinkedHashMap) result.getData()).get(queryName))).get(index);
}
private Object getQueryResultAtCell(ExecutionResult result, String queryName, int rowIndex, int columnIndex) {
- return (((ArrayList) (getQueryResultAtIndex(result, queryName, rowIndex))).get(columnIndex));
+ return (((List) (getQueryResultAtIndex(result, queryName, rowIndex))).get(columnIndex));
}
}
diff --git a/src/test/java/graphql/annotations/directives/DirectiveWiringMapRetrieverTest.java b/src/test/java/graphql/annotations/directives/DirectiveWiringMapRetrieverTest.java
index bc89d1fa..d521baae 100644
--- a/src/test/java/graphql/annotations/directives/DirectiveWiringMapRetrieverTest.java
+++ b/src/test/java/graphql/annotations/directives/DirectiveWiringMapRetrieverTest.java
@@ -19,6 +19,7 @@
import graphql.annotations.processor.DirectiveAndWiring;
import graphql.annotations.processor.ProcessingElementsContainer;
import graphql.annotations.processor.exceptions.GraphQLAnnotationsException;
+import graphql.introspection.Introspection;
import graphql.schema.GraphQLDirective;
import org.testng.annotations.Test;
@@ -67,8 +68,8 @@ public void getDirectiveWiringMap_noDirectivesInRegistry_throwAGraphQLAnnotation
public void getDirectiveWiringMap_wiringClassIsPrivate_throwAGraphQLAnnotationsException() throws Exception {
// Arrange
DirectiveWiringMapRetriever directiveWiringMapRetriever = new DirectiveWiringMapRetriever();
- GraphQLDirective upperCase = newDirective().name("upperCase").build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase").validLocation(Introspection.DirectiveLocation.FIELD).build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase").validLocation(Introspection.DirectiveLocation.FIELD).build();
ProcessingElementsContainer container = new ProcessingElementsContainer();
container.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, ThirdWiringClass.class));
container.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, SecondWiringClass.class));
@@ -87,8 +88,8 @@ public void getDirectiveWiringMap_wiringClassIsPrivate_throwAGraphQLAnnotationsE
public void getDirectiveWiringMap_directivesAreInRegistry_returnCorrectMap() throws Exception {
// Arrange
DirectiveWiringMapRetriever directiveWiringMapRetriever = new DirectiveWiringMapRetriever();
- GraphQLDirective upperCase = newDirective().name("upperCase").build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase").validLocation(Introspection.DirectiveLocation.FIELD).build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase").validLocation(Introspection.DirectiveLocation.FIELD).build();
ProcessingElementsContainer container = new ProcessingElementsContainer();
container.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
container.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, SecondWiringClass.class));
diff --git a/src/test/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilderTest.java b/src/test/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilderTest.java
index fc170f48..2e27b01d 100644
--- a/src/test/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilderTest.java
+++ b/src/test/java/graphql/annotations/processor/retrievers/fieldBuilders/DirectivesBuilderTest.java
@@ -95,9 +95,16 @@ public void testDecoratedField_noDirectiveInRegistry_throwAGraphQLAnnotationsExc
public void testDecoratedField_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString).defaultValue("DefaultString")).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
- GraphQLDirective annotationDirective = newDirective().name("anno").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("myArg").type(GraphQLString).defaultValueProgrammatic("DefaultString"))
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
+ GraphQLDirective annotationDirective = newDirective().name("anno")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -126,8 +133,13 @@ public void testDecoratedField_directivesAreInRegistry_directivesAreBuilt() thro
public void testDecoratedFieldWithArguments_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString)).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("myArg").type(GraphQLString))
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -150,8 +162,12 @@ public void testDecoratedFieldWithArguments_directivesAreInRegistry_directivesAr
public void testDecoratedFieldWithArguments_argumentsValuesLongerThanArgumentsNumber_throwAGraphQLAnnotationsException() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -171,7 +187,10 @@ public void testDecoratedFieldWithArguments_directiveArgumentIsNotAScalarType_th
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
GraphQLInputObjectType inputField = GraphQLInputObjectType.newInputObject().name("inputField").build();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("arg").type(inputField)).build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("arg").type(inputField))
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
DirectivesBuilder directivesBuilder = new DirectivesBuilder(this.getClass().getField("decoratedFieldWithArguments"), processingElementsContainer);
@@ -189,7 +208,10 @@ public void testDecoratedFieldWithArguments_directiveArgumentIsNotAScalarType_th
public void testDecoratedFieldWithArguments_argumentValueIsNotTheSameTypeAsArgument_throwAGraphQLAnnotationsException() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("arg").type(GraphQLInt)).build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("arg").type(GraphQLInt))
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
DirectivesBuilder directivesBuilder = new DirectivesBuilder(this.getClass().getField("decoratedFieldWithArguments"), processingElementsContainer);
@@ -207,9 +229,14 @@ public void testDecoratedFieldWithArguments_argumentValueIsNotTheSameTypeAsArgum
public void testDecoratedFieldWithArguments_moreArgumentsThanArgumentsValues_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("arg").type(GraphQLString))
- .argument(builder -> builder.name("arg2").type(GraphQLInt).defaultValue("5")).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("arg").type(GraphQLString))
+ .argument(builder -> builder.name("arg2").type(GraphQLInt).defaultValueProgrammatic("5"))
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase")
+ .validLocation(Introspection.DirectiveLocation.FIELD)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -242,9 +269,16 @@ public void testDecoratedArgument_noDirectiveInRegistry_throwAGraphQLAnnotations
public void testDecoratedArgument_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString).defaultValue("DefaultString")).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
- GraphQLDirective anno = newDirective().name("anno").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("myArg").type(GraphQLString).defaultValueProgrammatic("DefaultString"))
+ .validLocation(Introspection.DirectiveLocation.ARGUMENT_DEFINITION)
+ .build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase")
+ .validLocation(Introspection.DirectiveLocation.ARGUMENT_DEFINITION)
+ .build();
+ GraphQLDirective anno = newDirective().name("anno")
+ .validLocation(Introspection.DirectiveLocation.ARGUMENT_DEFINITION)
+ .build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -271,8 +305,11 @@ public void testDecoratedArgument_directivesAreInRegistry_directivesAreBuilt() t
public void testDecoratedParameterWithArguments_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString)).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase")
+ .argument(builder -> builder.name("myArg").type(GraphQLString))
+ .validLocation(Introspection.DirectiveLocation.ARGUMENT_DEFINITION).build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase").validLocation(
+ Introspection.DirectiveLocation.ARGUMENT_DEFINITION).build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -304,9 +341,11 @@ public void testDecoratedClass_noDirectiveInRegistry_throwAGraphQLAnnotationsExc
public void testDecoratedClass_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString).defaultValue("DefaultString")).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
- GraphQLDirective anno = newDirective().name("anno").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg")
+ .type(GraphQLString).defaultValueProgrammatic("DefaultString"))
+ .validLocation(Introspection.DirectiveLocation.OBJECT).build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase").validLocation(Introspection.DirectiveLocation.OBJECT).build();
+ GraphQLDirective anno = newDirective().name("anno").validLocation(Introspection.DirectiveLocation.FIELD).build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));
@@ -337,8 +376,10 @@ public void testDecoratedClass_directivesAreInRegistry_directivesAreBuilt() thro
public void testDecoratedClassWithArguments_directivesAreInRegistry_directivesAreBuilt() throws Exception {
// Arrange
ProcessingElementsContainer processingElementsContainer = new ProcessingElementsContainer();
- GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString)).build();
- GraphQLDirective lowerCase = newDirective().name("lowerCase").build();
+ GraphQLDirective upperCase = newDirective().name("upperCase").argument(builder -> builder.name("myArg").type(GraphQLString)).validLocation(
+ Introspection.DirectiveLocation.OBJECT).build();
+ GraphQLDirective lowerCase = newDirective().name("lowerCase").validLocation(
+ Introspection.DirectiveLocation.OBJECT).build();
processingElementsContainer.getDirectiveRegistry().put("upperCase", new DirectiveAndWiring(upperCase, WiringClass.class));
processingElementsContainer.getDirectiveRegistry().put("lowerCase", new DirectiveAndWiring(lowerCase, WiringClass.class));