[Bug]: String and Boolean and Int properties are being turned into Objects in OpenAPI 3.1.0
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia dalla configurazione del plugin Maven, dal JSON di input OpenAPI 3.1 e dal Doctor.java generato dopo aver eseguito mvn clean generate-sources. Segui l’avviso "String to be sanitized is null. Default to Object" e confronta i tipi delle proprietà generate con lo schema; il lavoro è completato quando le proprietà di tipo string, boolean e integer vengono generate con tipi Java corrispondenti invece di Object.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This is an issue specifically with OpenAPI Version 3.1.0. I am not having this issue with OpenAPI Version 3.0.X. My current workaround is to use OpenAPI 3.0.1.
I am using the Swagger Codegen Maven Plugin V3, version 3.0.71. I am using Java 21, Spring Boot 3.5.8. In my pom file I have the following configuration:
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.71</version>
<executions>
<execution>
<id>my-project</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.baseUri}/src/main/resources/myproject.json</inputSpec>
<language>java</language>
<library>resttemplate</library>
<generateApis>false</generateApis>
<modelPackage>com.my.project.model</modelPackage>
<generateApiTests>false</generateApiTests>
<generateApiDocumentation>false</generateApiDocumentation>
<generateModelTests>false</generateModelTests>
<generateModelDocumentation>false</generateModelDocumentation>
<generateSupportingFiles>false</generateSupportingFiles>
<configOptions>
<interfaceOnly>true</interfaceOnly>
<dateLibrary>legacy</dateLibrary>
<hideGenerationTimestamp>true</hideGenerationTimestamp>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
I am expecting the input JSON file to generate Java files that will match the json. However, upon running mvn clean generate-sources, I keep seeing the following warning: "[WARNING] String to be sanitized is null. Default to Object"
Here is an example of one of the objects in the JSON schema:
"Doctor": {
"type": "object",
"properties": {
"code": {
"type": "string",
"format": "uuid"
},
"practiceName": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"address3": {
"type": "string"
},
"postalCode": {
"type": "string"
},
"townCity": {
"type": "string"
},
"regionCounty": {
"type": "string"
},
"country": {
"type": "string"
},
"email": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"approved": {
"type": "boolean"
},
"externalId": {
"type": "integer",
"format": "int32"
},
"languageTag": {
"type": "string"
}
}
}
Okay, so you'd think that would product a Java object with properties matching the types described (strings, booleans). Instead, in the resulting Java object, every single property is just an Object.
public class Doctor {
@JsonProperty("code")
private Object code = null;
@JsonProperty("practiceName")
private Object practiceName = null;
@JsonProperty("address1")
private Object address1 = null;
@JsonProperty("address2")
private Object address2 = null;
@JsonProperty("address3")
private Object address3 = null;
@JsonProperty("postalCode")
private Object postalCode = null;
@JsonProperty("townCity")
private Object townCity = null;
@JsonProperty("regionCounty")
private Object regionCounty = null;
@JsonProperty("country")
private Object country = null;
@JsonProperty("email")
private Object email = null;
@JsonProperty("phoneNumber")
private Object phoneNumber = null;
@JsonProperty("approved")
private Object approved = null;
@JsonProperty("externalId")
private Object externalVetId = null;
@JsonProperty("languageTag")
private Object languageTag = null;
public Doctor code(Object code) {
this.code = code;
return this;
}
I want the properties (i.e. practiceName, country, etc.) to actually match what the schema has (i.e. both practiceName and country should be Strings).
- Lingua principale
- Mustache
- Stelle
- 17.8k
- Fork
- 6k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di swagger-api/swagger-codegen
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
swagger-api/swagger-codegen#12755 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
swagger-api/swagger-codegen#12445 ·
-
security vulnerability
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
swagger-api/swagger-codegen#11942 ·
-
[JAVA] Non compilable enums generated with property errorOnUnknownEnum=trueForse già presa @HiagoW l’ha presa 1454 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
swagger-api/swagger-codegen#11812 · 1 reazione ·
-
security vulnerability
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
swagger-api/swagger-codegen#11594 ·
Tutte le issue di swagger-api/swagger-codegen
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
supadata-ai/mcp#27 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
objectionary/sodg.rs#300 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
topoteretes/cognee#5647 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
components-web-app/api-components-bundle#403 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
mollie/PrestaShop#1566 ·
I maintainer di solito rispondono entro 1 giorno