admin管理员组文章数量:1356329
I am trying to generate java code from the following openapi example spec
openapi: "3.0.3"
info:
title: Demo API
version: "1.0"
servers:
- url: http://localhost:8080/api
description: Local development server
tags:
- name: Common
description: Operations related to common functionalities. Define multiple tags to generate multiple Api classes.
- name: Other
description: To test generation of separate APIs
paths:
/UM/{id}:
get:
tags:
- Common
description: Retrieve UM by ID
operationId: GetUM
parameters:
- in: path
name: id
schema:
type: string
required: true
responses:
"200":
description: UM
content:
application/json:
schema: { }
"404":
description: UM not found
content:
text/plain:
schema:
type: string
/UM:
post:
tags:
- Common
description: Create new UM
operationId: CreateUM
requestBody:
required: true
content:
application/json:
schema: { }
responses:
201:
description: ID of the newly created UM
content:
text/plain:
schema:
type: string
/palettes/{id}:
get:
tags:
- Common
operationId: getPalette # necessary to generate proper method name
description: Retrieve a palette by its id
parameters:
- in: path
name: id
schema:
type: integer
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Palette"
examples:
Default:
value:
id: 1
firstName: John
lastName: Doe
role: user
"404":
description: Palette not found
content:
text/plain:
schema:
type: string
/palettes:
get:
tags:
- Common
operationId: listPalettes
description: Returns the list of palettes
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Palette"
put:
tags:
- Common
operationId: createPalette # necessary to generate proper method name
description: Creates a new palette
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/NewPalette"
responses:
"201":
description: Created
content:
text/plain:
schema:
type: integer
"400":
description: Validation errors
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
/orders:
put:
tags:
- Common
operationId: sendOrder
description: Sends a dummy order
responses:
"200":
description: OK
content:
text/plain:
schema:
type: string
/otherresources:
get:
tags:
- Other
operationId: getOther # necessary to generate proper method name
description: Example operation
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Palette"
components:
schemas:
ObjectType:
type: string
enum: [ ENGINE, SEAT ]
Palette:
type: object
x-tags:
- Common
properties:
id:
type: integer
description: The user ID
firstName:
type: string
description: The user's first name
lastName:
type: string
description: The palette's last name
minLength: 1
maxLength: 20
role:
$ref: "#/components/schemas/ObjectType"
NewPalette:
type: object
properties:
firstName:
type: string
description: The user's first name
lastName:
type: string
description: The user's last name
minLength: 1
maxLength: 20
role:
$ref: "#/components/schemas/ObjectType"
ValidationErrorField:
properties:
field:
type: string
message:
type: string
constraint:
type: string
value:
type: string
example:
- field: name
message: size must be between 1 and 20
constraint: Size
value: This is way toooooooo long a name!
ValidationError:
properties:
status:
type: string
message:
type: string
errors:
type: array
$ref: "#/components/schemas/ValidationErrorField"
example:
- status: Bad Request
message: Validation failed
errors:
- field: lastName
message: size must be between 1 and 20
constraint: Size
value: This is wayyyyyy toooo loooooong
securitySchemes:
oidc:
type: oauth2
flows:
authorizationCode:
authorizationUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/auth
tokenUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/token
refreshUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/token
scopes:
openid: OpenID Connect authentication
security:
- oidc: [ ]
I am building this with the following gradle task:
openApiGenerate {
generatorName = 'jaxrs-spec'
inputSpec = file(openapiSourcefile).absolutePath
outputDir = file(openapiGeneratedSources).absolutePath
apiPackage = "${apiPackageName}.controller"
modelPackage = "${apiPackageName}.model"
generateAliasAsModel = true
verbose = true
globalProperties = [
'apis' : project.ext.apisToGenerate,
'models': 'true'
]
configOptions = [
interfaceOnly : 'true',
singleContentTypes : 'true',
useSingleRequestMethod : 'true',
useSwaggerAnnotations : 'false',
useTags : 'true',
dateLibrary : 'java8',
library : 'quarkus',
useMicroProfileOpenAPIAnnotations : 'true',
additionalModelTypeAnnotations : '@jakarta.validation.constraints.NotNull',
useBeanValidation : 'true',
useJakartaEe : 'true',
disallowAdditionalPropertiesIfNotPresent: 'false',
generateModelTests : 'false',
generateModelDocumentation : 'false',
generateApiTests : 'false',
generateApiDocumentation : 'false',
generateBuilders : 'true',
modelPropertyNaming : 'original',
returnResponse : 'true',
]
}
And the project.ext.apisToGenerate property is set to 'Common'. The problem I have is that models are not generated. They are only when I remove the selection of apis to generate. But I need to generate only the apis for specific tags.
Any help is appreciated.
Do I need to explicitly list the models I need to generate in the ‘models’ property?
I am trying to generate java code from the following openapi example spec
openapi: "3.0.3"
info:
title: Demo API
version: "1.0"
servers:
- url: http://localhost:8080/api
description: Local development server
tags:
- name: Common
description: Operations related to common functionalities. Define multiple tags to generate multiple Api classes.
- name: Other
description: To test generation of separate APIs
paths:
/UM/{id}:
get:
tags:
- Common
description: Retrieve UM by ID
operationId: GetUM
parameters:
- in: path
name: id
schema:
type: string
required: true
responses:
"200":
description: UM
content:
application/json:
schema: { }
"404":
description: UM not found
content:
text/plain:
schema:
type: string
/UM:
post:
tags:
- Common
description: Create new UM
operationId: CreateUM
requestBody:
required: true
content:
application/json:
schema: { }
responses:
201:
description: ID of the newly created UM
content:
text/plain:
schema:
type: string
/palettes/{id}:
get:
tags:
- Common
operationId: getPalette # necessary to generate proper method name
description: Retrieve a palette by its id
parameters:
- in: path
name: id
schema:
type: integer
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Palette"
examples:
Default:
value:
id: 1
firstName: John
lastName: Doe
role: user
"404":
description: Palette not found
content:
text/plain:
schema:
type: string
/palettes:
get:
tags:
- Common
operationId: listPalettes
description: Returns the list of palettes
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Palette"
put:
tags:
- Common
operationId: createPalette # necessary to generate proper method name
description: Creates a new palette
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/NewPalette"
responses:
"201":
description: Created
content:
text/plain:
schema:
type: integer
"400":
description: Validation errors
content:
application/json:
schema:
$ref: "#/components/schemas/ValidationError"
/orders:
put:
tags:
- Common
operationId: sendOrder
description: Sends a dummy order
responses:
"200":
description: OK
content:
text/plain:
schema:
type: string
/otherresources:
get:
tags:
- Other
operationId: getOther # necessary to generate proper method name
description: Example operation
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Palette"
components:
schemas:
ObjectType:
type: string
enum: [ ENGINE, SEAT ]
Palette:
type: object
x-tags:
- Common
properties:
id:
type: integer
description: The user ID
firstName:
type: string
description: The user's first name
lastName:
type: string
description: The palette's last name
minLength: 1
maxLength: 20
role:
$ref: "#/components/schemas/ObjectType"
NewPalette:
type: object
properties:
firstName:
type: string
description: The user's first name
lastName:
type: string
description: The user's last name
minLength: 1
maxLength: 20
role:
$ref: "#/components/schemas/ObjectType"
ValidationErrorField:
properties:
field:
type: string
message:
type: string
constraint:
type: string
value:
type: string
example:
- field: name
message: size must be between 1 and 20
constraint: Size
value: This is way toooooooo long a name!
ValidationError:
properties:
status:
type: string
message:
type: string
errors:
type: array
$ref: "#/components/schemas/ValidationErrorField"
example:
- status: Bad Request
message: Validation failed
errors:
- field: lastName
message: size must be between 1 and 20
constraint: Size
value: This is wayyyyyy toooo loooooong
securitySchemes:
oidc:
type: oauth2
flows:
authorizationCode:
authorizationUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/auth
tokenUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/token
refreshUrl: http://localhost:8180/realms/quarkus/protocol/openid-connect/token
scopes:
openid: OpenID Connect authentication
security:
- oidc: [ ]
I am building this with the following gradle task:
openApiGenerate {
generatorName = 'jaxrs-spec'
inputSpec = file(openapiSourcefile).absolutePath
outputDir = file(openapiGeneratedSources).absolutePath
apiPackage = "${apiPackageName}.controller"
modelPackage = "${apiPackageName}.model"
generateAliasAsModel = true
verbose = true
globalProperties = [
'apis' : project.ext.apisToGenerate,
'models': 'true'
]
configOptions = [
interfaceOnly : 'true',
singleContentTypes : 'true',
useSingleRequestMethod : 'true',
useSwaggerAnnotations : 'false',
useTags : 'true',
dateLibrary : 'java8',
library : 'quarkus',
useMicroProfileOpenAPIAnnotations : 'true',
additionalModelTypeAnnotations : '@jakarta.validation.constraints.NotNull',
useBeanValidation : 'true',
useJakartaEe : 'true',
disallowAdditionalPropertiesIfNotPresent: 'false',
generateModelTests : 'false',
generateModelDocumentation : 'false',
generateApiTests : 'false',
generateApiDocumentation : 'false',
generateBuilders : 'true',
modelPropertyNaming : 'original',
returnResponse : 'true',
]
}
And the project.ext.apisToGenerate property is set to 'Common'. The problem I have is that models are not generated. They are only when I remove the selection of apis to generate. But I need to generate only the apis for specific tags.
Any help is appreciated.
Do I need to explicitly list the models I need to generate in the ‘models’ property?
Share Improve this question edited Mar 28 at 17:25 Franck Dervaux asked Mar 28 at 16:58 Franck DervauxFranck Dervaux 1233 silver badges13 bronze badges1 Answer
Reset to default 0I found the answer in the gradle plugin documentation:
When enabling generation of only specific parts you either have to provide CSV list of what you particularly are generating or provide an empty string ""
to generate everything. If you provide "true"
it will be treated as a specific name of model or api you want to generate.
本文标签:
版权声明:本文标题:openapi generator - Models are not generated when specific apis are selected through the gradle plugin - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744023727a2577673.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论