Skip to content

Commit e8ebbf6

Browse files
dondonzclaude
andcommitted
Fix NullAway errors in OperationValidator after OperationDefinition nullability changes
Handle nullable returns from OperationDefinition.getName() and getSelectionSet() in OperationValidator to fix NullAway compilation errors introduced by the merge with master's validation-refactor. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent cc89a44 commit e8ebbf6

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/main/java/graphql/validation/OperationValidator.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,11 @@ private void collectUsedFragmentsInDefinition(Set<String> result, String fragmen
10111011

10121012
// --- OverlappingFieldsCanBeMerged ---
10131013
private void validateOverlappingFieldsCanBeMerged(OperationDefinition operationDefinition) {
1014-
overlappingFieldsImpl(operationDefinition.getSelectionSet(), validationContext.getOutputType());
1014+
SelectionSet selectionSet = operationDefinition.getSelectionSet();
1015+
if (selectionSet == null) {
1016+
return;
1017+
}
1018+
overlappingFieldsImpl(selectionSet, validationContext.getOutputType());
10151019
}
10161020

10171021
private void overlappingFieldsImpl(SelectionSet selectionSet, @Nullable GraphQLOutputType graphQLOutputType) {
@@ -1557,7 +1561,7 @@ private void validateUniqueOperationNames(OperationDefinition operationDefinitio
15571561
return;
15581562
}
15591563
if (operationNames.contains(name)) {
1560-
String message = i18n(DuplicateOperationName, "UniqueOperationNames.oneOperation", operationDefinition.getName());
1564+
String message = i18n(DuplicateOperationName, "UniqueOperationNames.oneOperation", name);
15611565
addError(DuplicateOperationName, operationDefinition.getSourceLocation(), message);
15621566
} else {
15631567
operationNames.add(name);
@@ -1646,14 +1650,19 @@ private void validateSubscriptionUniqueRootField(OperationDefinition operationDe
16461650
.objectType(subscriptionType)
16471651
.graphQLContext(validationContext.getGraphQLContext())
16481652
.build();
1649-
MergedSelectionSet fields = fieldCollector.collectFields(collectorParameters, operationDef.getSelectionSet());
1653+
SelectionSet selectionSet = operationDef.getSelectionSet();
1654+
if (selectionSet == null) {
1655+
return;
1656+
}
1657+
String opName = operationDef.getName() != null ? operationDef.getName() : "";
1658+
MergedSelectionSet fields = fieldCollector.collectFields(collectorParameters, selectionSet);
16501659
if (fields.size() > 1) {
1651-
String message = i18n(SubscriptionMultipleRootFields, "SubscriptionUniqueRootField.multipleRootFields", operationDef.getName());
1660+
String message = i18n(SubscriptionMultipleRootFields, "SubscriptionUniqueRootField.multipleRootFields", opName);
16521661
addError(SubscriptionMultipleRootFields, operationDef.getSourceLocation(), message);
16531662
} else {
16541663
MergedField mergedField = fields.getSubFieldsList().get(0);
16551664
if (isIntrospectionField(mergedField)) {
1656-
String message = i18n(SubscriptionIntrospectionRootField, "SubscriptionIntrospectionRootField.introspectionRootField", operationDef.getName(), mergedField.getName());
1665+
String message = i18n(SubscriptionIntrospectionRootField, "SubscriptionIntrospectionRootField.introspectionRootField", opName, mergedField.getName());
16571666
addError(SubscriptionIntrospectionRootField, mergedField.getSingleField().getSourceLocation(), message);
16581667
}
16591668
}

0 commit comments

Comments
 (0)