Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JavaJaxRS] Vendor Extensions Not Accessed in model.mustache #12486

Open
mrudd81 opened this issue Oct 31, 2024 · 0 comments
Open

[JavaJaxRS] Vendor Extensions Not Accessed in model.mustache #12486

mrudd81 opened this issue Oct 31, 2024 · 0 comments

Comments

@mrudd81
Copy link

mrudd81 commented Oct 31, 2024

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
  1. Setup directory as shown above.
  2. 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.
  3. Update the licenseInfo template directly under jaxrs-cxf folder to the above reference, using the template variable (name) and the vendor extension (x-year).
  4. Import licenseInfo to model.mustache and api.mustache per the above reference.
  5. cd into the swagger folder and run the JAR from there.
  6. When you open the API file(s), you will see that the licenseInfo text is there, with the year and name.
  7. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant