RawVariables and CoercedVariables are public API (#2868) · graphql-java/graphql-java@6090f3c · GitHub
Skip to content

Commit 6090f3c

Browse files
authored
RawVariables and CoercedVariables are public API (#2868)
1 parent bfcc5d9 commit 6090f3c

14 files changed

Lines changed: 52 additions & 44 deletions

src/main/java/graphql/ExecutionInput.java

Lines changed: 1 addition & 1 deletion

src/main/java/graphql/analysis/NodeVisitorWithTypeTracking.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ public TraversalControl visitField(Field field, TraverserContext<Node> context)
155155
boolean isTypeNameIntrospectionField = fieldDefinition == schema.getIntrospectionTypenameFieldDefinition();
156156
GraphQLFieldsContainer fieldsContainer = !isTypeNameIntrospectionField ? (GraphQLFieldsContainer) unwrapAll(parentEnv.getOutputType()) : null;
157157
GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry();
158-
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDefinition.getArguments(), field.getArguments(), new CoercedVariables(variables));
158+
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(codeRegistry, fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(variables));
159159
QueryVisitorFieldEnvironment environment = new QueryVisitorFieldEnvironmentImpl(isTypeNameIntrospectionField,
160160
field,
161161
fieldDefinition,

src/main/java/graphql/analysis/QueryTraverser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public Builder document(Document document) {
257257
*/
258258
public Builder variables(Map<String, Object> variables) {
259259
assertNotNull(variables, () -> "variables can't be null");
260-
this.rawVariables = new RawVariables(variables);
260+
this.rawVariables = RawVariables.of(variables);
261261
return this;
262262
}
263263

@@ -326,7 +326,7 @@ public QueryTraverser build() {
326326
// When traversing with an arbitrary root, there is no variable definition context available
327327
// Thus, the variables must have already been coerced
328328
// Retaining this builder for backwards compatibility
329-
return new QueryTraverser(schema, root, rootParentType, fragmentsByName, new CoercedVariables(rawVariables.toMap()));
329+
return new QueryTraverser(schema, root, rootParentType, fragmentsByName, CoercedVariables.of(rawVariables.toMap()));
330330
}
331331
return new QueryTraverser(schema, root, rootParentType, fragmentsByName, coercedVariables);
332332
}

src/main/java/graphql/execution/CoercedVariables.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package graphql.execution;
22

3-
import graphql.Internal;
3+
import graphql.PublicApi;
44
import graphql.collect.ImmutableKit;
55
import graphql.collect.ImmutableMapWithNullValues;
66

77
import java.util.Map;
88

99
/**
10-
* Holds coerced variables
10+
* Holds coerced variables, that is their values are now in a canonical form.
1111
*/
12-
@Internal
12+
@PublicApi
1313
public class CoercedVariables {
1414
private final ImmutableMapWithNullValues<String, Object> coercedVariables;
1515

@@ -32,4 +32,8 @@ public Object get(String key) {
3232
public static CoercedVariables emptyVariables() {
3333
return new CoercedVariables(ImmutableKit.emptyMap());
3434
}
35+
36+
public static CoercedVariables of(Map<String, Object> coercedVariables) {
37+
return new CoercedVariables(coercedVariables);
38+
}
3539
}

src/main/java/graphql/execution/ConditionalNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public boolean shouldInclude(Map<String, Object> variables, List<Directive> dire
3434
private boolean getDirectiveResult(Map<String, Object> variables, List<Directive> directives, String directiveName, boolean defaultValue) {
3535
Directive foundDirective = NodeUtil.findNodeByName(directives, directiveName);
3636
if (foundDirective != null) {
37-
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(SkipDirective.getArguments(), foundDirective.getArguments(), new CoercedVariables(variables));
37+
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(SkipDirective.getArguments(), foundDirective.getArguments(), CoercedVariables.of(variables));
3838
Object flag = argumentValues.get("if");
3939
Assert.assertTrue(flag instanceof Boolean, () -> String.format("The '%s' directive MUST have a value for the 'if' argument", directiveName));
4040
return (Boolean) flag;

src/main/java/graphql/execution/ExecutionContextBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public ExecutionContextBuilder root(Object root) {
158158
*/
159159
@Deprecated
160160
public ExecutionContextBuilder variables(Map<String, Object> variables) {
161-
this.coercedVariables = new CoercedVariables(variables);
161+
this.coercedVariables = CoercedVariables.of(variables);
162162
return this;
163163
}
164164

src/main/java/graphql/execution/RawVariables.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package graphql.execution;
22

3-
import graphql.Internal;
3+
import graphql.PublicApi;
44
import graphql.collect.ImmutableKit;
55
import graphql.collect.ImmutableMapWithNullValues;
66

77
import java.util.Map;
88

99
/**
10-
* Holds raw variables, which not have been coerced yet
10+
* Holds raw variables, which have not been coerced yet into {@link CoercedVariables}
1111
*/
12-
@Internal
12+
@PublicApi
1313
public class RawVariables {
1414
private final ImmutableMapWithNullValues<String, Object> rawVariables;
1515

@@ -30,6 +30,10 @@ public Object get(String key) {
3030
}
3131

3232
public static RawVariables emptyVariables() {
33-
return new RawVariables(ImmutableKit.emptyMap());
33+
return RawVariables.of(ImmutableKit.emptyMap());
34+
}
35+
36+
public static RawVariables of(Map<String, Object> rawVariables) {
37+
return new RawVariables(rawVariables);
3438
}
3539
}

src/main/java/graphql/execution/ValuesResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ public static Object valueToInternalValue(InputValueWithState inputValueWithStat
249249
return inputValueWithState.getValue();
250250
}
251251
if (inputValueWithState.isLiteral()) {
252-
return new ValuesResolver().literalToInternalValue(fieldVisibility, type, (Value<?>) inputValueWithState.getValue(), new CoercedVariables(emptyMap()));
252+
return new ValuesResolver().literalToInternalValue(fieldVisibility, type, (Value<?>) inputValueWithState.getValue(), CoercedVariables.emptyVariables());
253253
}
254254
if (inputValueWithState.isExternal()) {
255255
return new ValuesResolver().externalValueToInternalValue(fieldVisibility, type, inputValueWithState.getValue());
@@ -422,7 +422,7 @@ private CoercedVariables externalValueToInternalValueForVariables(GraphQLSchema
422422
}
423423
}
424424

425-
return new CoercedVariables(coercedValues);
425+
return CoercedVariables.of(coercedValues);
426426
}
427427

428428

src/main/java/graphql/execution/directives/DirectivesResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public Map<String, GraphQLDirective> resolveDirectives(List<Directive> directive
3939
}
4040

4141
private void buildArguments(GraphQLDirective.Builder directiveBuilder, GraphQLCodeRegistry codeRegistry, GraphQLDirective protoType, Directive fieldDirective, Map<String, Object> variables) {
42-
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), new CoercedVariables(variables));
42+
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), CoercedVariables.of(variables));
4343
directiveBuilder.clearArguments();
4444
protoType.getArguments().forEach(protoArg -> {
4545
if (argumentValues.containsKey(protoArg.getName())) {

src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java

Lines changed: 1 addition & 1 deletion

0 commit comments

Comments
 (0)