This repository was archived by the owner on Dec 25, 2024. It is now read-only.
This repository was archived by the owner on Dec 25, 2024. It is now read-only.
[BUG][python] Crash when generating const property #442
Closed
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator (example)?
- Have you tested with the latest master to confirm the issue still exists? (no commits on master since latest release as far as I can see)
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request
Description
I have a schema using const/enum and it crashes when generating. It works if I remove the const specifier.
openapi-json-schema-generator version
4.5.0
OpenAPI declaration file content or url
{
"openapi": "3.1.0",
"info": {
"title": "const",
"version": "2.17.0"
},
"paths": {
"/v1/auth/token": {
"post": {
"tags": ["auth"],
"summary": "Get Auth Token",
"operationId": "get_auth_token_v1",
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccessTokens"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"AccessTokens": {
"properties": {
"token_type": {
"type": "string",
"enum": ["Bearer"],
"const": "Bearer",
"title": "Token Type"
},
"access_token": {
"type": "string",
"title": "Access Token"
},
"expires_in": {
"type": "integer",
"title": "Expires In"
},
"refresh_token": {
"type": "string",
"title": "Refresh Token"
},
"refresh_token_expires_in": {
"type": "integer",
"title": "Refresh Token Expires In"
}
},
"type": "object",
"required": [
"token_type",
"access_token",
"expires_in",
"refresh_token",
"refresh_token_expires_in"
],
"title": "AccessTokens"
}
}
}
}
Generation Details
Steps to reproduce
docker run --pull always --rm -v "${PWD}:/local" openapijsonschematools/openapi-json-schema-generator-cli generate -i /local/test-schema.json -g python -o /local/out/python
Gives
Exception in thread "main" java.lang.RuntimeException: Could not generate model 'AccessTokens'
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generateSchemas(DefaultGeneratorRunner.java:1078)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generate(DefaultGeneratorRunner.java:1538)
at org.openapijsonschematools.codegen.clicommands.Generate.execute(Generate.java:377)
at org.openapijsonschematools.codegen.clicommands.AbstractCommand.run(AbstractCommand.java:34)
at org.openapijsonschematools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:76)
Caused by: java.lang.RuntimeException: Could not generate file '/local/out/python/src/openapi_client/components/schema/access_tokens.py'
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generateXs(DefaultGeneratorRunner.java:964)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generateSchema(DefaultGeneratorRunner.java:364)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generateSchemas(DefaultGeneratorRunner.java:1063)
... 4 more
Caused by: com.github.jknack.handlebars.HandlebarsException: components/schemas/schema_cls/validate/validate.hbs:137:12: java.lang.IllegalStateException: Shouldn't be illegal to access field 'value'
components/schemas/schema_cls/validate/validate.hbs:137:12
at com.github.jknack.handlebars.context.FieldValueResolver.invokeMember(FieldValueResolver.java:217)
at com.github.jknack.handlebars.context.FieldValueResolver.invokeMember(FieldValueResolver.java:39)
at com.github.jknack.handlebars.context.MemberValueResolver.resolve(MemberValueResolver.java:59)
at com.github.jknack.handlebars.Context$CompositeValueResolver.resolve(Context.java:200)
at com.github.jknack.handlebars.internal.path.PropertyPath.eval(PropertyPath.java:52)
at com.github.jknack.handlebars.Context$PathExpressionChain.next(Context.java:361)
at com.github.jknack.handlebars.Context$PathExpressionChain.eval(Context.java:381)
at com.github.jknack.handlebars.Context.get(Context.java:618)
at com.github.jknack.handlebars.internal.Variable.value(Variable.java:169)
at com.github.jknack.handlebars.internal.Variable.merge(Variable.java:146)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:99)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:53)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:53)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:228)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$8.apply(ConditionalHelpers.java:343)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:228)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:51)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$8.apply(ConditionalHelpers.java:343)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.ConditionalHelpers$8.apply(ConditionalHelpers.java:343)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:228)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:433)
at com.github.jknack.handlebars.helper.ConditionalHelpers$1.apply(ConditionalHelpers.java:65)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:228)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.inverse(Options.java:467)
at com.github.jknack.handlebars.helper.IfHelper.apply(IfHelper.java:51)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:445)
at com.github.jknack.handlebars.helper.WithHelper.apply(WithHelper.java:58)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:126)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:114)
at org.openapijsonschematools.codegen.templating.HandlebarsEngineAdapter.compileTemplate(HandlebarsEngineAdapter.java:92)
at org.openapijsonschematools.codegen.templating.TemplateManager.write(TemplateManager.java:157)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.processTemplateToFile(DefaultGeneratorRunner.java:1723)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.processTemplateToFile(DefaultGeneratorRunner.java:1710)
at org.openapijsonschematools.codegen.generatorrunner.DefaultGeneratorRunner.generateXs(DefaultGeneratorRunner.java:956)
... 6 more
Caused by: java.lang.IllegalStateException: Shouldn't be illegal to access field 'value'
... 229 more
Caused by: java.lang.IllegalAccessException: class com.github.jknack.handlebars.context.FieldValueResolver$FieldMember cannot access a member of class java.lang.String (in module java.base) with modifiers "private final"
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown Source)
at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.base/java.lang.reflect.Field.checkAccess(Unknown Source)
at java.base/java.lang.reflect.Field.get(Unknown Source)
at com.github.jknack.handlebars.context.FieldValueResolver$FieldMember.get(FieldValueResolver.java:135)
at com.github.jknack.handlebars.context.FieldValueResolver.invokeMember(FieldValueResolver.java:214)
... 228 more