cannot deserialize from Object value (Grallvm native executable)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Reproduce the native executable parsing books.yaml, then trace the failure from OpenAPIParser.readLocation through SwaggerConverter.convert to ArraySchema deserialization. Compare the native result with the regular Java parser and determine what is needed for the native parser to return populated OpenAPI objects without the reported exception.
Written by the indexing model from the issue text.
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"
- Dominant language
- Java
- Stars
- 868
- Forks
- 560
- Avg merge
- 7m
- Merged PRs (30d)
- 2
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from swagger-api/swagger-parser
-
InlineModelResolver.uniqueName throws StringIndexOutOfBoundsException for titles starting with a separator (camelCaseFlattenNaming)Possibly taken @arimu1 claimed this 37 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
swagger-api/swagger-parser#2386 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
swagger-api/swagger-parser#2168 ·
-
ResolveFully fails on internal references when the initial spec is read from a file URLPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
swagger-api/swagger-parser#1922 · 2 comments · 1 reaction ·
-
[Bug]: `ResolverFully` does not process OAS 3.1 combinators and skips nested OAS 3.1 schema-valued keywordsPossibly taken A pull request linked to this issue is open or already merged. OpenBug
Difficulty 4/5 3-5 days Newbie friendliness 25/100
swagger-api/swagger-parser#2403 ·
-
[Bug]: Regression: resolveFully fails when components key does not match external file basenamePossibly taken @goutamadwant claimed this 31 days ago. OpenBug
Difficulty 4/5 3-5 days Newbie friendliness 58/100
swagger-api/swagger-parser#2399 · 3 comments ·
All issues in swagger-api/swagger-parser
Similar issues
-
new feature
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/rocketmq-dashboard#5594 ·
Maintainers usually reply within 3 days
-
bug pkg:sdk
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
aws/aws-durable-execution-sdk-java#773 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
PCL-Community/PCL-CE#3652 ·
Maintainers usually reply within 1 day
-
TaskSecret.vue: replace explicit `any` with real typesPossibly taken @prayas-bit claimed this today. Openarea/frontend good first issue kind/cooldown
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
kestra-io/kestra#20352 · 1 comment ·
Maintainers usually reply within 1 day