Optional psiForSchemaType()

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();
    }