-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
ExecutionStrategyParameters.java
196 lines (163 loc) · 6.45 KB
/
ExecutionStrategyParameters.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
package graphql.execution;
import graphql.PublicApi;
import graphql.execution.incremental.DeferredCallContext;
import java.util.function.Consumer;
import static graphql.Assert.assertNotNull;
/**
* The parameters that are passed to execution strategies
*/
@PublicApi
public class ExecutionStrategyParameters {
private final ExecutionStepInfo executionStepInfo;
private final Object source;
private final Object localContext;
private final MergedSelectionSet fields;
private final NonNullableFieldValidator nonNullableFieldValidator;
private final ResultPath path;
private final MergedField currentField;
private final ExecutionStrategyParameters parent;
private final DeferredCallContext deferredCallContext;
private ExecutionStrategyParameters(ExecutionStepInfo executionStepInfo,
Object source,
Object localContext,
MergedSelectionSet fields,
NonNullableFieldValidator nonNullableFieldValidator,
ResultPath path,
MergedField currentField,
ExecutionStrategyParameters parent,
DeferredCallContext deferredCallContext) {
this.executionStepInfo = assertNotNull(executionStepInfo, () -> "executionStepInfo is null");
this.localContext = localContext;
this.fields = assertNotNull(fields, () -> "fields is null");
this.source = source;
this.nonNullableFieldValidator = nonNullableFieldValidator;
this.path = path;
this.currentField = currentField;
this.parent = parent;
this.deferredCallContext = deferredCallContext;
}
public ExecutionStepInfo getExecutionStepInfo() {
return executionStepInfo;
}
public Object getSource() {
return source;
}
public MergedSelectionSet getFields() {
return fields;
}
public NonNullableFieldValidator getNonNullFieldValidator() {
return nonNullableFieldValidator;
}
public ResultPath getPath() {
return path;
}
public Object getLocalContext() {
return localContext;
}
public ExecutionStrategyParameters getParent() {
return parent;
}
public DeferredCallContext getDeferredCallContext() {
return deferredCallContext;
}
/**
* This returns the current field in its query representations.
*
* @return the current merged fields
*/
public MergedField getField() {
return currentField;
}
public ExecutionStrategyParameters transform(Consumer<Builder> builderConsumer) {
Builder builder = newParameters(this);
builderConsumer.accept(builder);
return builder.build();
}
@Override
public String toString() {
return String.format("ExecutionStrategyParameters { path=%s, executionStepInfo=%s, source=%s, fields=%s }",
path, executionStepInfo, source, fields);
}
public static Builder newParameters() {
return new Builder();
}
public static Builder newParameters(ExecutionStrategyParameters oldParameters) {
return new Builder(oldParameters);
}
public static class Builder {
ExecutionStepInfo executionStepInfo;
Object source;
Object localContext;
MergedSelectionSet fields;
NonNullableFieldValidator nonNullableFieldValidator;
ResultPath path = ResultPath.rootPath();
MergedField currentField;
ExecutionStrategyParameters parent;
DeferredCallContext deferredCallContext;
/**
* @see ExecutionStrategyParameters#newParameters()
*/
private Builder() {
}
/**
* @see ExecutionStrategyParameters#newParameters(ExecutionStrategyParameters)
*/
private Builder(ExecutionStrategyParameters oldParameters) {
this.executionStepInfo = oldParameters.executionStepInfo;
this.source = oldParameters.source;
this.localContext = oldParameters.localContext;
this.fields = oldParameters.fields;
this.nonNullableFieldValidator = oldParameters.nonNullableFieldValidator;
this.currentField = oldParameters.currentField;
this.deferredCallContext = oldParameters.deferredCallContext;
this.path = oldParameters.path;
this.parent = oldParameters.parent;
}
public Builder executionStepInfo(ExecutionStepInfo executionStepInfo) {
this.executionStepInfo = executionStepInfo;
return this;
}
public Builder executionStepInfo(ExecutionStepInfo.Builder executionStepInfoBuilder) {
this.executionStepInfo = executionStepInfoBuilder.build();
return this;
}
public Builder fields(MergedSelectionSet fields) {
this.fields = fields;
return this;
}
public Builder field(MergedField currentField) {
this.currentField = currentField;
return this;
}
public Builder source(Object source) {
this.source = source;
return this;
}
public Builder localContext(Object localContext) {
this.localContext = localContext;
return this;
}
public Builder nonNullFieldValidator(NonNullableFieldValidator nonNullableFieldValidator) {
this.nonNullableFieldValidator = assertNotNull(nonNullableFieldValidator, () -> "requires a NonNullValidator");
return this;
}
public Builder path(ResultPath path) {
this.path = path;
return this;
}
public Builder parent(ExecutionStrategyParameters parent) {
this.parent = parent;
return this;
}
public Builder deferredCallContext(DeferredCallContext deferredCallContext) {
this.deferredCallContext = deferredCallContext;
return this;
}
public ExecutionStrategyParameters build() {
if (deferredCallContext == null) {
deferredCallContext = new DeferredCallContext();
}
return new ExecutionStrategyParameters(executionStepInfo, source, localContext, fields, nonNullableFieldValidator, path, currentField, parent, deferredCallContext);
}
}
}