8000 Merge branch 'master' into fix/flaky-dataloader-performance-test · graphql-java/graphql-java@7c8c436 · GitHub 8000
[go: up one dir, main page]

Skip to content

Commit 7c8c436

Browse files
authored
Merge branch 'master' into fix/flaky-dataloader-performance-test
2 parents 13de46b + f152d70 commit 7c8c436

16 files changed

+402
-93
lines changed
Lines changed: 12 additions & 10 deletions
2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
# https://docs.github.com/en/code-security/tutorials/secure-your-dependencies/automating-dependabot-with-github-actions#enable-auto-merge-on-a-pull-request
1+
# Auto-merge Dependabot PRs after CI passes.
+
# Triggers on push to dependabot/* branches so it does NOT appear as a PR check.
23
name: Dependabot auto-merge
3-
on: pull_request_target
4+
on:
5+
push:
6+
branches:
7+
- 'dependabot/**'
48

59
permissions:
610
contents: write
@@ -9,15 +13,13 @@ permissions:
913
jobs:
1014
dependabot:
1115
runs-on: ubuntu-latest
12-
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'graphql-java/graphql-java'
16+
if: github.actor == 'dependabot[bot]' && github.repository == 'graphql-java/graphql-java'
1317
steps:
14-
- name: Dependabot metadata
15-
id: metadata
16-
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
17-
with:
18-
github-token: "${{ secrets.GITHUB_TOKEN }}"
1918
- name: Enable auto-merge for Dependabot PRs
20-
run: gh pr merge --auto --squash "$PR_URL"
19+
run: |
20+
PR_URL=$(gh pr list --head "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" --json url --jq '.[0].url')
21+
if [ -n "$PR_URL" ]; then
22+
gh pr merge --auto --squash "$PR_URL"
23+
fi
2124
env:
22-
PR_URL: ${{ github.event.pull_request.html_url }}
2325
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ dependencies {
172172
// jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
173173

174174
errorprone 'com.uber.nullaway:nullaway:0.12.10'
175-
errorprone 'com.google.errorprone:error_prone_core:2.47.0'
175+
errorprone 'com.google.errorprone:error_prone_core:2.48.0'
176176

177177
// just tests - no Kotlin otherwise
178178
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'

src/main/java/graphql/execution/ResponseMapFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import graphql.ExperimentalApi;
44
import graphql.PublicSpi;
5+
import org.jspecify.annotations.NullMarked;
6+
import org.jspecify.annotations.Nullable;
57

68
import java.util.List;
79
import java.util.Map;
@@ -12,6 +14,7 @@
1214
*/
1315
@ExperimentalApi
1416
@PublicSpi
17+
@NullMarked
1518
public interface ResponseMapFactory {
1619

1720
/**
@@ -27,6 +30,6 @@ public interface ResponseMapFactory {
2730
* @param values the values like v1, v2, ..., vn
2831
* @return a new or reused map instance with (k1,v1), (k2, v2), ... (kn, vn)
2932
*/
30-
Map<String, Object> createInsertionOrdered(List<String> keys, List<Object> values);
33+
Map<String, @Nullable Object> createInsertionOrdered(List<String> keys, List<@Nullable Object> values);
3134

3235
}

src/main/java/graphql/execution/incremental/DeferredExecution.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import graphql.ExperimentalApi;
44
import graphql.normalized.incremental.NormalizedDeferredExecution;
5+
import org.jspecify.annotations.NullMarked;
56
import org.jspecify.annotations.Nullable;
67

78
/**
@@ -11,10 +12,11 @@
1112
* for the normalized representation of @defer.
1213
*/
1314
@ExperimentalApi
15+
@NullMarked
1416
public class DeferredExecution {
15-
private final String label;
17+
private final @Nullable String label;
1618

17-
public DeferredExecution(String label) {
19+
public DeferredExecution(@Nullable String label) {
1820
this.label = label;
1921
}
2022

src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java

Lines changed: 18 additions & 23 deletions
3255
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import graphql.schema.DataFetcher;
2323
import graphql.schema.GraphQLSchema;
2424
import graphql.validation.ValidationError;
25-
import org.jspecify.annotations.NonNull;
25+
import org.jspecify.annotations.NullMarked;
2626
import org.jspecify.annotations.Nullable;
2727

2828
import java.util.AbstractMap;
@@ -45,6 +45,7 @@
4545
* @see graphql.execution.instrumentation.Instrumentation
4646
*/
4747
@PublicApi
48+
@NullMarked
4849
public class ChainedInstrumentation implements Instrumentation {
4950

5051
// This class is inspired from https://github.com/leangen/graphql-spqr/blob/master/src/main/java/io/leangen/graphql/GraphQLRuntime.java#L80
@@ -66,7 +67,7 @@ public List<Instrumentation> getInstrumentations() {
6667
return instrumentations;
6768
}
6869

69-
private <T> InstrumentationContext<T> chainedCtx(InstrumentationState state, BiFunction<Instrumentation, InstrumentationState, InstrumentationContext<T>> mapper) {
70+
private <T> @Nullable InstrumentationContext<T> chainedCtx(InstrumentationState state, BiFunction<Instrumentation, InstrumentationState, InstrumentationContext<T>> mapper) {
7071
// if we have zero or 1 instrumentations (and 1 is the most common), then we can avoid an object allocation
7172
// of the ChainedInstrumentationContext since it won't be needed
7273
if (instrumentations.isEmpty()) {
@@ -113,29 +114,29 @@ protected void chainedConsume(InstrumentationState state, BiConsumer<Instrumenta
113114
}
114115

115116
@Override
116-
public @NonNull CompletableFuture<InstrumentationState> createStateAsync(InstrumentationCreateStateParameters parameters) {
117+
public CompletableFuture<InstrumentationState> createStateAsync(InstrumentationCreateStateParameters parameters) {
117118
return ChainedInstrumentationState.combineAll(instrumentations, parameters);
118119
}
119120

120121
@Override
121-
public InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) {
122+
public @Nullable InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) {
122123
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginExecution(parameters, specificState));
123124
}
124125

125126

126127
@Override
127-
public InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) {
128+
public @Nullable InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) {
128129
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginParse(parameters, specificState));
129130
}
130131

131132

132133
@Override
133-
public InstrumentationContext<List<ValidationError>> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) {
134+
public @Nullable InstrumentationContext<List<ValidationError>> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) {
134135
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginValidation(parameters, specificState));
135136
}
136137

137138
@Override
138-
public InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) {
139+
public @Nullable InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) {
139140
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginExecuteOperation(parameters, specificState));
140141
}
141142

@@ -145,7 +146,7 @@ public InstrumentationContext<ExecutionResult> beginExecuteOperation(Instrumenta
145146
}
146147

147148
@Override
148-
public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) {
149+
public @Nullable ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) {
149150
if (instrumentations.isEmpty()) {
150151
return ExecutionStrategyInstrumentationContext.NOOP;
151152
}
@@ -172,12 +173,12 @@ public ExecutionStrategyInstrumentationContext beginExecutionStrategy(Instrument
172173

173174
@ExperimentalApi
174175
@Override
175-
public InstrumentationContext<Object> beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) {
176+
public @Nullable InstrumentationContext<Object> beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) {
176177
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginDeferredField(parameters, specificState));
177178
}
178179

179180
@Override
180-
public InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) {
181+
public @Nullable InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) {
181182
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginSubscribedFieldEvent(parameters, specificState));
182183
}
183184

@@ -188,12 +189,12 @@ public InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(Instrum
188189

189190
@SuppressWarnings("deprecation")
190191
@Override
191-
public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
192+
public @Nullable InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
192193
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState));
193194
}
194195

195196
@Override
196-
public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
197+
public @Nullable FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
197198
if (instrumentations.isEmpty()) {
198199
return FieldFetchingInstrumentationContext.NOOP;
199200
}
@@ -217,41 +218,35 @@ public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFie
217218
return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldListCompletion(parameters, specificState));
218219
}
219220

220-
@NonNull
221221
@Override
222222
public ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) {
223223
return chainedInstrument(state, executionInput, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionInput(accumulator, parameters, specificState));
224224
}
225225

226-
@NonNull
227226
@Override
228227
public DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) {
229228
return chainedInstrument(state, documentAndVariables, (instrumentation, specificState, accumulator) ->
230229
instrumentation.instrumentDocumentAndVariables(accumulator, parameters, specificState));
231230
}
232231

233-
@NonNull
234232
@Override
235233
public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) {
236234
return chainedInstrument(state, schema, (instrumentation, specificState, accumulator) ->
237235
instrumentation.instrumentSchema(accumulator, parameters, specificState));
238236
}
239237

240-
@NonNull
241238
@Override
242239
public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) {
243240
return chainedInstrument(state, executionContext, (instrumentation, specificState, accumulator) ->
244241
instrumentation.instrumentExecutionContext(accumulator, parameters, specificState));
245242
}
246243

247-
@NonNull
248244
@Override
249245
public DataFetcher<?> instrumentDataFetcher(DataFetcher<?> dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
250246
return chainedInstrument(state, dataFetcher, (Instrumentation instrumentation, InstrumentationState specificState, DataFetcher<?> accumulator) ->
251247
instrumentation.instrumentDataFetcher(accumulator, parameters, specificState));
252248
}
253249

254-
@NonNull
255250
@Override
256251
public CompletableFuture<ExecutionResult> instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) {
257252
ImmutableList<Map.Entry<Instrumentation, InstrumentationState>> entries = chainedMapAndDropNulls(state, AbstractMap.SimpleEntry::new);
@@ -300,7 +295,7 @@ public void onDispatched() {
300295
}
301296

302297
@Override
303-
public void onCompleted(T result, Throwable t) {
298+
public void onCompleted(@Nullable T result, @Nullable Throwable t) {
304299
contexts.forEach(context -> context.onCompleted(result, t));
305300
}
306301
}
@@ -319,7 +314,7 @@ public void onDispatched() {
319314
}
320315

321316
@Override
322-
public void onCompleted(ExecutionResult result, Throwable t) {
317+
public void onCompleted(@Nullable ExecutionResult result, @Nullable Throwable t) {
323318
contexts.forEach(context -> context.onCompleted(result, t));
324319
}
325320

@@ -348,7 +343,7 @@ public void onDispatched() {
348343
}
349344

350345
@Override
351-
public void onCompleted(Map<String, Object> result, Throwable t) {
346+
public void onCompleted(@Nullable Map<String, Object> result, @Nullable Throwable t) {
352347
contexts.forEach(context -> context.onCompleted(result, t));
353348
}
354349

@@ -387,7 +382,7 @@ public void onExceptionHandled(DataFetcherResult<Object> dataFetcherResult) {
387382
}
388383

389384
@Override
390-
public void onCompleted(Object result, Throwable t) {
385+
public void onCompleted(@Nullable Object result, @Nullable Throwable t) {
391386
contexts.forEach(context -> context.onCompleted(result, t));
392387
}
393388
}
@@ -407,7 +402,7 @@ public void onDispatched() {
407402
}
408403

409404
@Override
410-
public void onCompleted(Object result, Throwable t) {
405+
public void onCompleted(@Nullable Object result, @Nullable Throwable t) {
411406
contexts.forEach(context -> context.onCompleted(result, t));
412407
}
413408
}

src/main/java/graphql/execution/instrumentation/DocumentAndVariables.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
import graphql.PublicApi;
44
import graphql.collect.ImmutableMapWithNullValues;
55
import graphql.language.Document;
6+
import org.jspecify.annotations.NullMarked;
7+
import org.jspecify.annotations.NullUnmarked;
68

79
import java.util.Map;
810
import java.util.function.Consumer;
911

1012
import static graphql.Assert.assertNotNull;
1113

1214
@PublicApi
15+
@NullMarked
1316
public class DocumentAndVariables {
1417
private final Document document;
1518
private final ImmutableMapWithNullValues<String, Object> variables;
@@ -37,6 +40,7 @@ public static Builder newDocumentAndVariables() {
3740
return new Builder();
3841
}
3942

43+
@NullUnmarked
4044
public static class Builder {
4145
private Document document;
4246
private Map<String, Object> variables;

src/main/java/graphql/execution/instrumentation/Instrumentation.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ default ExecuteObjectInstrumentationContext beginExecuteObject(InstrumentationEx
175175
* @return a nullable {@link InstrumentationContext} object that will be called back when the step ends (assuming it's not null)
176176
*/
177177
@ExperimentalApi
178+
@Nullable
178179
default InstrumentationContext<Object> beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) {
179180
return noOp();
180181
}

src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters;
1313
import graphql.language.Document;
1414
import graphql.validation.ValidationError;
15+
import org.jspecify.annotations.NullMarked;
1516
import org.jspecify.annotations.Nullable;
1617

1718
import java.util.List;
@@ -39,6 +40,7 @@
3940
* as itself.
4041
*/
4142
@PublicApi
43+
@NullMarked
4244
public class NoContextChainedInstrumentation extends ChainedInstrumentation {
4345

4446
public NoContextChainedInstrumentation(List<Instrumentation> instrumentations) {
@@ -49,28 +51,28 @@ public NoContextChainedInstrumentation(Instrumentation... instrumentations) {
4951
super(instrumentations);
5052
}
5153

52-
private <T> T runAll(InstrumentationState state, BiConsumer<Instrumentation, InstrumentationState> stateConsumer) {
54+
private <T> @Nullable T runAll(InstrumentationState state, BiConsumer<Instrumentation, InstrumentationState> stateConsumer) {
5355
chainedConsume(state, stateConsumer);
5456
return null;
5557
}
5658

5759
@Override
58-
public InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) {
60+
public @Nullable InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters, InstrumentationState state) {
5961
return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecution(parameters, specificState));
6062
}
6163

6264
@Override
63-
public InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) {
65+
public @Nullable InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters, InstrumentationState state) {
6466
return runAll(state, (instrumentation, specificState) -> instrumentation.beginParse(parameters, specificState));
6567
}
6668

6769
@Override
68-
public InstrumentationContext<List<ValidationError>> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) {
70+
public @Nullable InstrumentationContext<List<ValidationError>> beginValidation(InstrumentationValidationParameters parameters, InstrumentationState state) {
6971
return runAll(state, (instrumentation, specificState) -> instrumentation.beginValidation(parameters, specificState));
7072
}
7173

7274
@Override
73-
public InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) {
75+
public @Nullable InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) {
7476
return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecuteOperation(parameters, specificState));
7577
}
7678

@@ -80,7 +82,7 @@ public InstrumentationContext<ExecutionResult> beginExecuteOperation(Instrumenta
8082
}
8183

8284
@Override
83-
public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) {
85+
public @Nullable ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters, InstrumentationState state) {
8486
return runAll(state, (instrumentation, specificState) -> instrumentation.beginExecutionStrategy(parameters, specificState));
8587
}
8688

@@ -90,12 +92,12 @@ public ExecutionStrategyInstrumentationContext beginExecutionStrategy(Instrument
9092
}
9193

9294
@Override
93-
public InstrumentationContext<Object> beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) {
95+
public @Nullable InstrumentationContext<Object> beginDeferredField(InstrumentationFieldParameters parameters, InstrumentationState state) {
9496
return runAll(state, (instrumentation, specificState) -> instrumentation.beginDeferredField(parameters, specificState));
9597
}
9698

9799
@Override
98-
public InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) {
100+
public @Nullable InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(InstrumentationFieldParameters parameters, InstrumentationState state) {
99101
return runAll(state, (instrumentation, specificState) -> instrumentation.beginSubscribedFieldEvent(parameters, specificState));
100102
}
101103

@@ -105,12 +107,12 @@ public InstrumentationContext<ExecutionResult> beginSubscribedFieldEvent(Instrum
105107
}
106108

107109
@Override
108-
public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
110+
public @Nullable InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
109111
return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetch(parameters, specificState));
110112
}
111113

112114
@Override
113-
public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
115+
public @Nullable FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFieldFetchParameters parameters, InstrumentationState state) {
114116
return runAll(state, (instrumentation, specificState) -> instrumentation.beginFieldFetching(parameters, specificState));
115117
}
116118

0 commit comments

Comments
 (0)
0