Skip to content

Commit 28e1e7a

Browse files
committed
Fix getDataLoader type bounds for nullable values
The @NullMarked annotation on DataFetchingEnvironment makes type parameters implicitly non-null, but java-dataloader's DataLoader declares V extends @nullable Object to allow nullable values. This mismatch prevents Kotlin consumers from expressing nullable value types without unsafe casts when returning CompletableFuture from data fetchers. Add explicit V extends @nullable Object bound to match DataLoader's type signature, enabling proper nullability propagation to Kotlin.
1 parent ed0791c commit 28e1e7a

3 files changed

Lines changed: 4 additions & 4 deletions

File tree

‎src/main/java/graphql/schema/DataFetchingEnvironment.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,14 +231,14 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro
231231
*
232232
* @param dataLoaderName the name of the data loader to fetch
233233
* @param <K> the key type
234-
* @param <V> the value type
234+
* @param <V> the value type (may be nullable to match {@link DataLoader}'s type parameter)
235235
*
236236
* @return the named data loader or null
237237
*
238238
* @see org.dataloader.DataLoaderRegistry#getDataLoader(String)
239239
*/
240240
@Nullable
241-
<K, V> DataLoader<K, V> getDataLoader(String dataLoaderName);
241+
<K, V extends @Nullable Object> DataLoader<K, V> getDataLoader(String dataLoaderName);
242242

243243

244244
/**

‎src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ public ExecutionStepInfo getExecutionStepInfo() {
230230

231231

232232
@Override
233-
public <K, V> @Nullable DataLoader<K, V> getDataLoader(String dataLoaderName) {
233+
public <K, V extends @Nullable Object> @Nullable DataLoader<K, V> getDataLoader(String dataLoaderName) {
234234
DataLoader<K, V> dataLoader = dataLoaderRegistry.getDataLoader(dataLoaderName);
235235
if (dataLoader == null) {
236236
return null;

‎src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public QueryDirectives getQueryDirectives() {
148148
}
149149

150150
@Override
151-
public <K, V> @Nullable DataLoader<K, V> getDataLoader(String dataLoaderName) {
151+
public <K, V extends @Nullable Object> @Nullable DataLoader<K, V> getDataLoader(String dataLoaderName) {
152152
return delegateEnvironment.getDataLoader(dataLoaderName);
153153
}
154154

0 commit comments

Comments
 (0)