Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Using a reference in items of array results in error

Aberta
#464 3 comentários 0 reações 0 responsáveis Ver no GitHub

@joschi já está trabalhando nisso.

Desde 26/2/2023.

  • #470 de @joschi — aberto

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
20/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
java
Domínio
api

Direção de pesquisa

Comece com o example.zip anexado e reproduza o comando CLI; depois leia RefPointer.java, especialmente getRefName e resolveRef, junto com o caminho de chamadas de SchemaDiff e DeferredSchemaCache nomeado no trace. Está concluído quando o $ref para o arquivo irmão do item do array é resolvido sem a exceção Invalid ref e a comparação é concluída.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

duplicate

When a reference is used in items: of an array, e.g. :

type: object
description: Model for response from call to GET products requiring an array of products to be returned.
title: GetProductResponse
properties:
  Products:
    type: array
    items:
      $ref: Product.yaml

and error is thrown while resolving the references:

$ java -jar openapi-diff-cli-2.1.0-beta.4-all.jar --error --fail-on-incompatible source/specification/openapi.yaml destination/specification/openapi.yaml
Unexpected exception. Reason: Invalid ref: ./common/models/Product.yaml
java.lang.IllegalArgumentException: Invalid ref: ./common/models/Product.yaml
        at org.openapitools.openapidiff.core.utils.RefPointer.getRefName(RefPointer.java:60)
        at org.openapitools.openapidiff.core.utils.RefPointer.resolveRef(RefPointer.java:16)
        at org.openapitools.openapidiff.core.compare.SchemaDiff.computeDiffForReal(SchemaDiff.java:337)
        at org.openapitools.openapidiff.core.model.deferred.DeferredSchemaCache.processSchemaQueue(DeferredSchemaCache.java:86)
        at org.openapitools.openapidiff.core.model.deferred.DeferredSchemaCache.process(DeferredSchemaCache.java:64)
        at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:100)
        at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:64)
        at org.openapitools.openapidiff.core.OpenApiCompare.fromSpecifications(OpenApiCompare.java:102)
        at org.openapitools.openapidiff.core.OpenApiCompare.fromLocations(OpenApiCompare.java:91)
        at org.openapitools.openapidiff.cli.Main.main(Main.java:175)

Files GetProductResponse.yaml and Product.yaml both reside in the same directory.

Attachment contains the source and destination folders, which contain a copy of the same openapi spec.
example.zip

Linguagem predominante
Java
Estrelas
1.1k
Forks
190
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de OpenAPITools/openapi-diff

Todas as issues de OpenAPITools/openapi-diff

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.