Skip to content

Commit d0cbc63

Browse files
committed
deprecated the Optional<T> getType methods and replaced all their usages
1 parent 21ac5c9 commit d0cbc63

12 files changed

+113
-100
lines changed

src/main/java/graphql/schema/idl/ArgValueOfAllowedTypeChecker.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,10 @@ private void checkArgValueMatchesAllowedTypeName(List<GraphQLError> errors, Valu
122122
}
123123

124124
String allowedTypeName = ((TypeName) allowedArgType).getName();
125-
TypeDefinition<?> allowedTypeDefinition = typeRegistry.getType(allowedTypeName)
126-
.orElseThrow(() -> new AssertException(format("Directive unknown argument type '%s'. This should have been validated before.", allowedTypeName)));
125+
TypeDefinition<?> allowedTypeDefinition = typeRegistry.getTypeOrNull(allowedTypeName);
126+
if (allowedTypeDefinition == null) {
127+
throw new AssertException(format("Directive unknown argument type '%s'. This should have been validated before.", allowedTypeName));
128+
}
127129

128130
if (allowedTypeDefinition instanceof ScalarTypeDefinition) {
129131
checkArgValueMatchesAllowedScalar(errors, instanceValue, (ScalarTypeDefinition) allowedTypeDefinition);

src/main/java/graphql/schema/idl/ImplementingTypesChecker.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import java.util.HashMap;
3030
import java.util.List;
3131
import java.util.Map;
32-
import java.util.Optional;
32+
import java.util.Objects;
3333
import java.util.Set;
3434
import java.util.function.BinaryOperator;
3535
import java.util.function.Function;
@@ -73,7 +73,7 @@ void checkImplementingTypes(List<GraphQLError> errors, TypeDefinitionRegistry ty
7373
private void checkImplementingType(
7474
List<GraphQLError> errors,
7575
TypeDefinitionRegistry typeRegistry,
76-
ImplementingTypeDefinition type) {
76+
ImplementingTypeDefinition<?> type) {
7777

7878
Map<InterfaceTypeDefinition, ImplementingTypeDefinition> implementedInterfaces =
7979
checkInterfacesNotImplementedMoreThanOnce(errors, type, typeRegistry);
@@ -172,7 +172,7 @@ private void checkInterfaceIsImplemented(
172172

173173
private void checkArgumentConsistency(
174174
String typeOfType,
175-
ImplementingTypeDefinition objectTypeDef,
175+
ImplementingTypeDefinition<?> objectTypeDef,
176176
InterfaceTypeDefinition interfaceTypeDef,
177177
FieldDefinition objectFieldDef,
178178
FieldDefinition interfaceFieldDef,
@@ -211,7 +211,7 @@ private void checkArgumentConsistency(
211211
}
212212

213213
private Map<InterfaceTypeDefinition, List<ImplementingTypeDefinition>> getLogicallyImplementedInterfaces(
214-
ImplementingTypeDefinition type,
214+
ImplementingTypeDefinition<?> type,
215215
TypeDefinitionRegistry typeRegistry
216216
) {
217217

@@ -255,18 +255,17 @@ private <T> BinaryOperator<T> mergeFirstValue() {
255255
return (v1, v2) -> v1;
256256
}
257257

258-
private Optional<InterfaceTypeDefinition> toInterfaceTypeDefinition(Type type, TypeDefinitionRegistry typeRegistry) {
258+
private InterfaceTypeDefinition toInterfaceTypeDefinition(Type<?> type, TypeDefinitionRegistry typeRegistry) {
259259
TypeInfo typeInfo = TypeInfo.typeInfo(type);
260260
TypeName unwrapped = typeInfo.getTypeName();
261261

262-
return typeRegistry.getType(unwrapped, InterfaceTypeDefinition.class);
262+
return typeRegistry.getTypeOrNull(unwrapped, InterfaceTypeDefinition.class);
263263
}
264264

265265
private Set<InterfaceTypeDefinition> toInterfaceTypeDefinitions(TypeDefinitionRegistry typeRegistry, Collection<Type> implementsTypes) {
266266
return implementsTypes.stream()
267267
.map(t -> toInterfaceTypeDefinition(t, typeRegistry))
268-
.filter(Optional::isPresent)
269-
.map(Optional::get)
268+
.filter(Objects::nonNull)
270269
.collect(toSet());
271270
}
272271
}

src/main/java/graphql/schema/idl/SchemaExtensionsChecker.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,10 @@ static List<OperationTypeDefinition> checkSchemaInvariants(List<GraphQLError> er
7676

7777
// ensure we have a "query" one
7878
Optional<OperationTypeDefinition> query = operationTypeDefinitions.stream().filter(op -> "query".equals(op.getName())).findFirst();
79-
if (!query.isPresent()) {
79+
if (query.isEmpty()) {
8080
// its ok if they have a type named Query
81-
Optional<TypeDefinition> queryType = typeRegistry.getType("Query");
82-
if (!queryType.isPresent()) {
81+
TypeDefinition<?> queryType = typeRegistry.getTypeOrNull("Query");
82+
if (queryType == null) {
8383
errors.add(new QueryOperationMissingError());
8484
}
8585
}
@@ -117,13 +117,13 @@ private static Consumer<OperationTypeDefinition> checkOperationTypesExist(TypeDe
117117
private static Consumer<OperationTypeDefinition> checkOperationTypesAreObjects(TypeDefinitionRegistry typeRegistry, List<GraphQLError> errors) {
118118
return op -> {
119119
// make sure it is defined as a ObjectTypeDef
120-
Type queryType = op.getTypeName();
121-
Optional<TypeDefinition> type = typeRegistry.getType(queryType);
122-
type.ifPresent(typeDef -> {
123-
if (!(typeDef instanceof ObjectTypeDefinition)) {
120+
Type<?> queryType = op.getTypeName();
121+
TypeDefinition<?> type = typeRegistry.getTypeOrNull(queryType);
122+
if (type != null) {
123+
if (!(type instanceof ObjectTypeDefinition)) {
124124
errors.add(new OperationTypesMustBeObjects(op));
125125
}
126-
});
126+
}
127127
};
128128
}
129129

src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,12 @@ public TypeDefinitionRegistry getTypeRegistry() {
141141
}
142142

143143
TypeDefinition<?> getTypeDefinition(Type<?> type) {
144-
Optional<TypeDefinition> optionalTypeDefinition = typeRegistry.getType(type);
145-
146-
return optionalTypeDefinition.orElseThrow(
147-
() -> new AssertException(format(" type definition for type '%s' not found", type))
148-
);
144+
TypeDefinition<?> typeDefinition = typeRegistry.getTypeOrNull(type);
145+
if (typeDefinition != null) {
146+
return typeDefinition;
147+
} else {
148+
throw new AssertException(format(" type definition for type '%s' not found", type));
149+
}
149150
}
150151

151152
boolean stackContains(TypeInfo typeInfo) {
@@ -905,22 +906,21 @@ void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder)
905906
GraphQLObjectType subscription;
906907

907908
Optional<OperationTypeDefinition> queryOperation = getOperationNamed("query", operationTypeDefs);
908-
if (!queryOperation.isPresent()) {
909-
@SuppressWarnings({"OptionalGetWithoutIsPresent"})
910-
TypeDefinition<?> queryTypeDef = typeRegistry.getType("Query").get();
909+
if (queryOperation.isEmpty()) {
910+
TypeDefinition<?> queryTypeDef = Objects.requireNonNull(typeRegistry.getTypeOrNull("Query"));
911911
query = buildOutputType(buildCtx, TypeName.newTypeName().name(queryTypeDef.getName()).build());
912912
} else {
913913
query = buildOperation(buildCtx, queryOperation.get());
914914
}
915915
schemaBuilder.query(query);
916916

917917
Optional<OperationTypeDefinition> mutationOperation = getOperationNamed("mutation", operationTypeDefs);
918-
if (!mutationOperation.isPresent()) {
919-
if (!typeRegistry.schemaDefinition().isPresent()) {
918+
if (mutationOperation.isEmpty()) {
919+
if (typeRegistry.schemaDefinition().isEmpty()) {
920920
// If no schema definition, then there is no schema keyword. Default to using type called Mutation
921-
Optional<TypeDefinition> mutationTypeDef = typeRegistry.getType("Mutation");
922-
if (mutationTypeDef.isPresent()) {
923-
mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.get().getName()).build());
921+
TypeDefinition<?> mutationTypeDef = typeRegistry.getTypeOrNull("Mutation");
922+
if (mutationTypeDef != null) {
923+
mutation = buildOutputType(buildCtx, TypeName.newTypeName().name(mutationTypeDef.getName()).build());
924924
schemaBuilder.mutation(mutation);
925925
}
926926
}
@@ -930,12 +930,12 @@ void buildOperations(BuildContext buildCtx, GraphQLSchema.Builder schemaBuilder)
930930
}
931931

932932
Optional<OperationTypeDefinition> subscriptionOperation = getOperationNamed("subscription", operationTypeDefs);
933-
if (!subscriptionOperation.isPresent()) {
934-
if (!typeRegistry.schemaDefinition().isPresent()) {
933+
if (subscriptionOperation.isEmpty()) {
934+
if (typeRegistry.schemaDefinition().isEmpty()) {
935935
// If no schema definition, then there is no schema keyword. Default to using type called Subscription
936-
Optional<TypeDefinition> subscriptionTypeDef = typeRegistry.getType("Subscription");
937-
if (subscriptionTypeDef.isPresent()) {
938-
subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.get().getName()).build());
936+
TypeDefinition<?> subscriptionTypeDef = typeRegistry.getTypeOrNull("Subscription");
937+
if (subscriptionTypeDef != null) {
938+
subscription = buildOutputType(buildCtx, TypeName.newTypeName().name(subscriptionTypeDef.getName()).build());
939939
schemaBuilder.subscription(subscription);
940940
}
941941
}

src/main/java/graphql/schema/idl/SchemaTypeChecker.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import java.util.LinkedHashSet;
3535
import java.util.List;
3636
import java.util.Map;
37-
import java.util.Optional;
3837
import java.util.Set;
3938
import java.util.function.BiFunction;
4039
import java.util.function.Consumer;
@@ -355,10 +354,10 @@ private Consumer<? super Type> checkInterfaceTypeExists(TypeDefinitionRegistry t
355354
return t -> {
356355
TypeInfo typeInfo = TypeInfo.typeInfo(t);
357356
TypeName unwrapped = typeInfo.getTypeName();
358-
Optional<TypeDefinition> type = typeRegistry.getType(unwrapped);
359-
if (!type.isPresent()) {
357+
TypeDefinition<?> type = typeRegistry.getTypeOrNull(unwrapped);
358+
if (type == null) {
360359
errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped));
361-
} else if (!(type.get() instanceof InterfaceTypeDefinition)) {
360+
} else if (!(type instanceof InterfaceTypeDefinition)) {
362361
errors.add(new MissingInterfaceTypeError("interface", typeDefinition, unwrapped));
363362
}
364363
};

src/main/java/graphql/schema/idl/SchemaTypeDirectivesChecker.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ private void checkFieldsDirectives(List<GraphQLError> errors, TypeDefinitionRegi
137137
private void checkDirectives(DirectiveLocation expectedLocation, List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, Node<?> element, String elementName, List<Directive> directives) {
138138
directives.forEach(directive -> {
139139
Optional<DirectiveDefinition> directiveDefinition = typeRegistry.getDirectiveDefinition(directive.getName());
140-
if (!directiveDefinition.isPresent()) {
140+
if (directiveDefinition.isEmpty()) {
141141
errors.add(new DirectiveUndeclaredError(element, elementName, directive.getName()));
142142
} else {
143143
if (!inRightLocation(expectedLocation, directiveDefinition.get())) {
@@ -157,7 +157,7 @@ private boolean inRightLocation(DirectiveLocation expectedLocation, DirectiveDef
157157
return names.contains(expectedLocation.name().toUpperCase());
158158
}
159159

160-
private void checkDirectiveArguments(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, Node element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) {
160+
private void checkDirectiveArguments(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, Node<?> element, String elementName, Directive directive, DirectiveDefinition directiveDefinition) {
161161
Map<String, InputValueDefinition> allowedArgs = getByName(directiveDefinition.getInputValueDefinitions(), (InputValueDefinition::getName), mergeFirst());
162162
Map<String, Argument> providedArgs = getByName(directive.getArguments(), (Argument::getName), mergeFirst());
163163
directive.getArguments().forEach(argument -> {
@@ -195,7 +195,7 @@ private void commonCheck(Collection<DirectiveDefinition> directiveDefinitions, L
195195
});
196196
}
197197

198-
private void assertTypeName(NamedNode node, List<GraphQLError> errors) {
198+
private void assertTypeName(NamedNode<?> node, List<GraphQLError> errors) {
199199
if (node.getName().length() >= 2 && node.getName().startsWith("__")) {
200200
errors.add((new IllegalNameError(node)));
201201
}
@@ -204,7 +204,7 @@ private void assertTypeName(NamedNode node, List<GraphQLError> errors) {
204204
public void assertExistAndIsInputType(InputValueDefinition definition, List<GraphQLError> errors) {
205205
TypeName namedType = TypeUtil.unwrapAll(definition.getType());
206206

207-
TypeDefinition unwrappedType = findTypeDefFromRegistry(namedType.getName(), typeRegistry);
207+
TypeDefinition<?> unwrappedType = findTypeDefFromRegistry(namedType.getName(), typeRegistry);
208208

209209
if (unwrappedType == null) {
210210
errors.add(new MissingTypeError(namedType.getName(), definition, definition.getName()));
@@ -218,7 +218,11 @@ public void assertExistAndIsInputType(InputValueDefinition definition, List<Grap
218218
}
219219
}
220220

221-
private TypeDefinition findTypeDefFromRegistry(String typeName, TypeDefinitionRegistry typeRegistry) {
222-
return typeRegistry.getType(typeName).orElseGet(() -> typeRegistry.scalars().get(typeName));
221+
private TypeDefinition<?> findTypeDefFromRegistry(String typeName, TypeDefinitionRegistry typeRegistry) {
222+
TypeDefinition<?> typeDefinition = typeRegistry.getTypeOrNull(typeName);
223+
if (typeDefinition != null) {
224+
return typeDefinition;
225+
}
226+
return typeRegistry.scalars().get(typeName);
223227
}
224228
}

src/main/java/graphql/schema/idl/SchemaTypeExtensionsChecker.java

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,10 @@ private void checkObjectTypeExtensions(List<GraphQLError> errors, TypeDefinition
8888

8989
//
9090
// then check for field re-defs from the base type
91-
Optional<ObjectTypeDefinition> baseTypeOpt = typeRegistry.getType(extension.getName(), ObjectTypeDefinition.class);
92-
baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()));
93-
91+
ObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), ObjectTypeDefinition.class);
92+
if (baseTypeDef != null) {
93+
checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions());
94+
}
9495
});
9596
}
9697
);
@@ -132,8 +133,10 @@ private void checkInterfaceTypeExtensions(List<GraphQLError> errors, TypeDefinit
132133

133134
//
134135
// then check for field re-defs from the base type
135-
Optional<InterfaceTypeDefinition> baseTypeOpt = typeRegistry.getType(extension.getName(), InterfaceTypeDefinition.class);
136-
baseTypeOpt.ifPresent(baseTypeDef -> checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions()));
136+
InterfaceTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InterfaceTypeDefinition.class);
137+
if (baseTypeDef != null) {
138+
checkForFieldRedefinition(errors, extension, fieldDefinitions, baseTypeDef.getFieldDefinitions());
139+
}
137140
});
138141
});
139142
}
@@ -161,8 +164,8 @@ private void checkUnionTypeExtensions(List<GraphQLError> errors, TypeDefinitionR
161164

162165
memberTypes.forEach(
163166
memberType -> {
164-
Optional<ObjectTypeDefinition> unionTypeDefinition = typeRegistry.getType(memberType, ObjectTypeDefinition.class);
165-
if (!unionTypeDefinition.isPresent()) {
167+
ObjectTypeDefinition unionTypeDefinition = typeRegistry.getTypeOrNull(memberType, ObjectTypeDefinition.class);
168+
if (unionTypeDefinition == null) {
166169
errors.add(new MissingTypeError("union member", extension, memberType));
167170
}
168171
}
@@ -197,8 +200,10 @@ private void checkEnumTypeExtensions(List<GraphQLError> errors, TypeDefinitionRe
197200

198201
//
199202
// then check for field re-defs from the base type
200-
Optional<EnumTypeDefinition> baseTypeOpt = typeRegistry.getType(extension.getName(), EnumTypeDefinition.class);
201-
baseTypeOpt.ifPresent(baseTypeDef -> checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions()));
203+
EnumTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), EnumTypeDefinition.class);
204+
if (baseTypeDef != null) {
205+
checkForEnumValueRedefinition(errors, extension, enumValueDefinitions, baseTypeDef.getEnumValueDefinitions());
206+
}
202207

203208
});
204209

@@ -251,25 +256,27 @@ private void checkInputObjectTypeExtensions(List<GraphQLError> errors, TypeDefin
251256

252257
//
253258
// then check for field re-defs from the base type
254-
Optional<InputObjectTypeDefinition> baseTypeOpt = typeRegistry.getType(extension.getName(), InputObjectTypeDefinition.class);
255-
baseTypeOpt.ifPresent(baseTypeDef -> checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions()));
259+
InputObjectTypeDefinition baseTypeDef = typeRegistry.getTypeOrNull(extension.getName(), InputObjectTypeDefinition.class);
260+
if (baseTypeDef != null) {
261+
checkForInputValueRedefinition(errors, extension, inputValueDefinitions, baseTypeDef.getInputValueDefinitions());
262+
}
256263
});
257264

258265
});
259266
}
260267

261268

262269
private void checkTypeExtensionHasCorrespondingType(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, String name, List<? extends TypeDefinition> extTypeList, Class<? extends TypeDefinition> targetClass) {
263-
TypeDefinition extensionDefinition = extTypeList.get(0);
264-
Optional<? extends TypeDefinition> typeDefinition = typeRegistry.getType(TypeName.newTypeName().name(name).build(), targetClass);
265-
if (!typeDefinition.isPresent()) {
270+
TypeDefinition<?> extensionDefinition = extTypeList.get(0);
271+
TypeDefinition<?> typeDefinition = typeRegistry.getTypeOrNull(TypeName.newTypeName().name(name).build(), targetClass);
272+
if (typeDefinition == null) {
266273
errors.add(new TypeExtensionMissingBaseTypeError(extensionDefinition));
267274
}
268275
}
269276

270277
@SuppressWarnings("unchecked")
271278

272-
private void checkForFieldRedefinition(List<GraphQLError> errors, TypeDefinition typeDefinition, List<FieldDefinition> fieldDefinitions, List<FieldDefinition> referenceFieldDefinitions) {
279+
private void checkForFieldRedefinition(List<GraphQLError> errors, TypeDefinition<?> typeDefinition, List<FieldDefinition> fieldDefinitions, List<FieldDefinition> referenceFieldDefinitions) {
273280

274281
Map<String, FieldDefinition> referenceMap = FpKit.getByName(referenceFieldDefinitions, FieldDefinition::getName, mergeFirst());
275282

@@ -290,7 +297,7 @@ private void checkForInputValueRedefinition(List<GraphQLError> errors, InputObje
290297
});
291298
}
292299

293-
private void checkForEnumValueRedefinition(List<GraphQLError> errors, TypeDefinition typeDefinition, List<EnumValueDefinition> enumValueDefinitions, List<EnumValueDefinition> referenceEnumValueDefinitions) {
300+
private void checkForEnumValueRedefinition(List<GraphQLError> errors, TypeDefinition<?> typeDefinition, List<EnumValueDefinition> enumValueDefinitions, List<EnumValueDefinition> referenceEnumValueDefinitions) {
294301

295302
Map<String, EnumValueDefinition> referenceMap = FpKit.getByName(referenceEnumValueDefinitions, EnumValueDefinition::getName, mergeFirst());
296303

0 commit comments

Comments
 (0)