Тем не менее, проверка не обнаруживает никаких проблем, сваггерный кодоген продолжает сбой на NPE.Это происходит как в v2.3.1, так и в 3.0.1 (https://github.com/swagger-api/swagger-codegen).. Не имеет значения, генерирую ли я Java, Spring или php - все та же ошибка.
Неудачная часть определения APIследующее (когда я связываю API только с работающими фрагментами кода):
openapi: 3.0.2
paths:
/Service/listProducts:
get:
parameters:
- in: header
name: engineName
schema:
$ref: '#/components/schemas/EngineNameEnum'
required: true
responses:
'200':
description: 'Listing OK'
components:
schemas:
EngineNameEnum:
type: string
enum:
- A
- B
- C
- D
- E
Я запускаю:
java -jar modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i openapi.yaml -l spring -o tmp-spring\
Компоненты генерируются, но по первому определению операции пути я получаю:
18:51:01.070 [Thread-1] WARN io.swagger.codegen.v3.generators.DefaultCodegenConfig - Empty operationId found for path: get /Service/listProducts. Renamed to auto-generated operationId: serviceListProductsGet
18:51:01.092 [Thread-1] DEBUG io.swagger.codegen.v3.generators.DefaultCodegenConfig - Property type is not primitive: \Swagger\Client\Model\EngineNameEnum
java.lang.NullPointerException
at io.swagger.codegen.v3.generators.DefaultCodegenConfig.getParameterFromRef(DefaultCodegenConfig.java:3659)
at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromOperation(DefaultCodegenConfig.java:2012)
at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:847)
at io.swagger.codegen.v3.DefaultGenerator.processPaths(DefaultGenerator.java:771)
at io.swagger.codegen.v3.DefaultGenerator.generateApis(DefaultGenerator.java:419)
at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:722)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:342)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-1" java.lang.RuntimeException: Could not process operation:
Tag: class Tag {
name: products
description: Operations for Products Management
externalDocs: null
}
Operation: null
Resource: get /Service/listProducts
Exception: null
at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:872)
at io.swagger.codegen.v3.DefaultGenerator.processPaths(DefaultGenerator.java:771)
at io.swagger.codegen.v3.DefaultGenerator.generateApis(DefaultGenerator.java:419)
at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:722)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:342)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at io.swagger.codegen.v3.generators.DefaultCodegenConfig.getParameterFromRef(DefaultCodegenConfig.java:3659)
at io.swagger.codegen.v3.generators.DefaultCodegenConfig.fromOperation(DefaultCodegenConfig.java:2012)
at io.swagger.codegen.v3.DefaultGenerator.processOperation(DefaultGenerator.java:847)
... 5 more
Любая идея о причине NPE на io.swagger.codegen.v3.generators.DefaultCodegenConfig.getParameterFromRef ()? Я не нашел ничего об этом методе, бросающем его.
Я ожидаю, чтопроблема вызвана форматированием более крупного API, но валидатор не находит проблем.
Заранее спасибо!