in src/main/java/com/netflix/dgs/plugin/services/internal/GraphQLSchemaRegistry.java [48:73]
Optional<PsiElement> psiForSchemaType(@NotNull PsiElement psiElement, @Nullable String parentType, @Nullable String field) {
TypeDefinitionRegistry registry = getRegistry(psiElement);
List<ObjectTypeDefinition> objectTypes = getTypeDefinitions(registry, parentType);
if (!objectTypes.isEmpty()) {
Optional<FieldDefinition> schemaField = objectTypes.stream().map(ObjectTypeDefinition::getFieldDefinitions).flatMap(Collection::stream)
.filter(e -> e.getName().equals(field)).findAny();
if (schemaField.isPresent()) {
return Optional.ofNullable(GraphQLTypeDefinitionUtil.findElement(schemaField.get().getSourceLocation(), psiElement.getProject())).map(PsiElement::getParent);
}
} else if ("_entities".equals(parentType)) {
Optional<ObjectTypeDefinition> entitiesType = getTypeDefinition(registry, field);
if (entitiesType.isPresent()) {
return Optional.ofNullable(GraphQLTypeDefinitionUtil.findElement(entitiesType.get().getSourceLocation(), psiElement.getProject()));
}
} else {
Optional<InterfaceTypeDefinition> interfaceType = getInterfaceTypeDefinition(registry, parentType);
if (interfaceType.isPresent()) {
Optional<FieldDefinition> schemaField = interfaceType.get().getFieldDefinitions().stream().filter(f -> f.getName().equals(field)).findAny();
if (schemaField.isPresent()) {
return Optional.ofNullable(GraphQLTypeDefinitionUtil.findElement(schemaField.get().getSourceLocation(), psiElement.getProject()));
}
}
}
return Optional.empty();
}