swagger-api / swagger-api/swagger-codegen
[JavaJaxRS] Vendor Extensions Not Accessed in model.mustache
Nobody has claimed this yet.
- Dominant language
- Mustache
- Stars
- 17.8k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Description
When I update the licenseInfo.mustache template to reference vendor extensions and nest it in other templates, it works fine in files such as api.mustache, api_test.mustache, and apiServiceImpl.mustache. It does not output the value in model.mustache or pojo.mustache. Referencing included template variables (such as infoName) works fine.
Swagger-codegen version
swagger-codegen-cli-3.0.24 (cannot use latest at the moment due to Java version)
Swagger declaration file content or url
Unfortunately I cannot paste all of the code in here, but I can at least show how things are referenced/declared:
Folder structure:
swagger
/gen
/codegen
swagger-codegen-cli-3.0.24.jar
/templates
/jaxrs-cxf
<contents of JavaJaxRS folder from JAR file>
/output
/api
openapi: 3.0.1
x-year: 2025
info:
name: Your Name
paths:
Declaration in licenseInfo.mustache:
{{vendorExtensions.x-year}}
Use of licenseInfo.mustache in model.mustache and api.mustache
{{>licenseInfo}}
config-api.json
{
"hideGenerationTimestamp": true,
"java8": true,
"dateLibrary": "java8",
"useSwaggerFeature": true,
"modelPackage": "some.package.name",
"apiPackage": "some.package.name",
"invokerPackage": "some.package.name",
"useOas2": false,
"ignoreImportMappings": false,
"importMappings": {
"Set": "java.util.Set"
},
"addConsumesProducesJson": true
}
Command line used for generation
java -jar ./gen/codegen/swagger-codegen-cli-3.0.24.jar generate -D useGenericResponse=true -i swagger.yaml -t gen/templates/jaxrs-cxf -l jaxrs-cxf -o output/api -c config-api.json
Steps to reproduce
- Setup directory as shown above.
- Using any yaml file with a defined model, add the x-year property at the root level. Also, to show that included variables work fine, ensure to include info -> name in the yaml.
- Update the licenseInfo template directly under jaxrs-cxf folder to the above reference, using the template variable (name) and the vendor extension (x-year).
- Import licenseInfo to model.mustache and api.mustache per the above reference.
- cd into the swagger folder and run the JAR from there.
- When you open the API file(s), you will see that the licenseInfo text is there, with the year and name.
- When you open the model file, you will notice that the licenseInfo text is there, with the name, but minus the year. So, I think the import is working, but perhaps there's a vendor extension scoping issue somewhere?
Related issues/PRs
I didn't find anything similar.
Suggest a fix/enhancement
Fix the issue.
Contributor 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.
Research direction
Start with the jaxrs-cxf templates, especially licenseInfo.mustache, model.mustache, and pojo.mustache, and compare their rendering context with api.mustache and apiServiceImpl.mustache. Reproduce the issue using the supplied OpenAPI YAML and swagger-codegen-cli-3.0.24. Done means x-year renders from the included licenseInfo template in generated model and POJO files as it does in API files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100