Open
Description
Using plain java graalvm native executables cause multiple issues. The parser mostly returns empty OpenAPI objects without any error. Only on one file I can receive an error. I tried to initialise swagger models at run time, but this did not help --initialize-at-run-time=io.swagger.v3.oas.models
It would be really cool to know how to use the swagger parser on plain native java.
[ERROR] Failed to parse OpenAPI file [books.yaml]: Cannot construct instance of `io.swagger.v3.oas.models.media.ArraySchema`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized
at [Source: UNKNOWN; byte offset: #UNKNOWN]
java.lang.IllegalArgumentException: Cannot construct instance of `io.swagger.v3.oas.models.media.ArraySchema`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized
at [Source: UNKNOWN; byte offset: #UNKNOWN]
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4618)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4549)
at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:1188)
at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:865)
at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:635)
at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:531)
at io.swagger.v3.parser.converter.SwaggerConverter.convert(SwaggerConverter.java:250)
at io.swagger.v3.parser.converter.SwaggerConverter.readResult(SwaggerConverter.java:104)
at io.swagger.v3.parser.converter.SwaggerConverter.readLocation(SwaggerConverter.java:85)
at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)
at java.base@22/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
at java.base@22/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194)
at java.base@22/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194)
at java.base@22/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194)
at java.base@22/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194)
at java.base@22/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212)
at java.base@22/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base@22/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
at java.base@22/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
at java.base@22/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
at java.base@22/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base@22/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base@22/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base@22/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611)
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.swagger.v3.oas.models.media.ArraySchema`: cannot deserialize from Object value (no delegate- or property-based Creator): this appears to be a native image, in which case you may need to configure reflection for the class that is to be deserialized
at [Source: UNKNOWN; byte offset: #UNKNOWN]
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1887)
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:414)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1370)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1505)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:348)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4613)
swagger: "2.0"
info:
version: "1.0.0"
title: "Books API"
description: "API to manage books, authors, and their relationships."
termsOfService: "https://api.books.example.com/terms"
contact:
name: "API Support"
url: "https://api.books.example.com/support"
email: "[email protected]"
license:
name: "MIT"
url: "https://opensource.org/licenses/MIT"
host: "api.books.example.com"
basePath: "/v1"
schemes:
- https
tags:
- name: "Books"
description: "Operations related to books"
- name: "Authors"
description: "Operations related to authors"
- name: "Management"
description: "Administrative operations"
paths:
/books:
get:
tags:
- "Books"
summary: "Retrieve all books"
description: "Returns a list of all books available in the system."
responses:
200:
description: "A list of books"
schema:
type: "array"
items:
$ref: "#/definitions/Book"
post:
tags:
- "Books"
summary: "Add a new book"
description: "Adds a new book to the library."
parameters:
- in: "body"
name: "body"
required: true
schema:
$ref: "#/definitions/Book"
responses:
201:
description: "Book created successfully"
/books/{id}:
get:
tags:
- "Books"
summary: "Retrieve a specific book"
description: "Fetch details of a book by its unique ID."
parameters:
- name: "id"
in: "path"
required: true
type: "string"
responses:
200:
description: "Book details retrieved"
schema:
$ref: "#/definitions/Book"
404:
description: "Book not found"
put:
tags:
- "Books"
summary: "Update a book"
description: "Updates information for a specific book."
parameters:
- name: "id"
in: "path"
required: true
type: "string"
- in: "body"
name: "body"
required: true
schema:
$ref: "#/definitions/Book"
responses:
200:
description: "Book updated successfully"
delete:
tags:
- "Books"
summary: "Delete a book"
description: "Deletes a specific book by its ID."
parameters:
- name: "id"
in: "path"
required: true
type: "string"
responses:
204:
description: "Book deleted successfully"
/authors:
get:
tags:
- "Authors"
summary: "Retrieve all authors"
description: "Fetch a list of all authors."
responses:
200:
description: "A list of authors"
schema:
type: "array"
items:
$ref: "#/definitions/Author"
post:
tags:
- "Authors"
summary: "Add a new author"
description: "Adds a new author to the system."
parameters:
- in: "body"
name: "body"
required: true
schema:
$ref: "#/definitions/Author"
responses:
201:
description: "Author added successfully"
definitions:
Book:
type: "object"
required:
- id
- title
properties:
id:
type: "string"
title:
type: "string"
author:
type: "string"
publishedDate:
type: "string"
format: "date"
genre:
type: "string"
description: "Genre of the book"
Author:
type: "object"
required:
- id
- name
properties:
id:
type: "string"
name:
type: "string"
biography:
type: "string"
description: "A brief biography of the author"
birthDate:
type: "string"
format: "date"
description: "Author's date of birth"
securityDefinitions:
api_key:
type: "apiKey"
name: "X-API-KEY"
in: "header"
externalDocs:
description: "Find more info here"
url: "https://api.books.example.com/docs"
Metadata
Assignees
Labels
No labels