OpenAPITools / OpenAPITools/openapi-diff
Using a reference in items of array results in error
- Lenguaje dominante
- Java
- Estrellas
- 1.1k
- Forks
- 190
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza con el example.zip adjunto y reproduce el comando CLI; después lee RefPointer.java, especialmente getRefName y resolveRef, junto con la ruta de llamadas de SchemaDiff y DeferredSchemaCache mencionada en el trace. Se considera terminado cuando el $ref al archivo hermano del elemento del array se resuelve sin la excepción Invalid ref y la comparación se completa.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 20/100