Skip to content

Document config options for language #7795

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

Open
marcelstoer opened this issue Mar 8, 2018 · 12 comments
Open

Document config options for language #7795

marcelstoer opened this issue Mar 8, 2018 · 12 comments

Comments

@marcelstoer
Copy link

I recently searched high and low for a documentation of all the config options and didn't find anything. I believe this is a general problem but in my case I was interested specifically in the options for Java as I was generating with the swagger-codegen-maven-plugin. It's README says:

configOptions - a map of language-specific parameters (see below)

Yet, nowhere "below" are the options documented.

I thought about opening a PR to add the Java documentation (as follows) to the README. Maybe some guidance from @wing328 would be needed.

  • sortParamsByRequiredFlag Sort method arguments to place required parameters before optional parameters. (Default: true)

  • ensureUniqueParams
    Whether to ensure parameter names are unique in an operation (rename parameters that are not). (Default: true)

  • allowUnicodeIdentifiers
    boolean, toggles whether unicode identifiers are allowed in names or not, default is false (Default: false)

  • modelPackage
    package for generated models

  • apiPackage
    package for generated api classes

  • invokerPackage
    root package for generated code

  • groupId
    groupId in generated pom.xml

  • artifactId
    artifactId in generated pom.xml

  • artifactVersion
    artifact version in generated pom.xml

  • artifactUrl
    artifact URL in generated pom.xml

  • artifactDescription
    artifact description in generated pom.xml

  • scmConnection
    SCM connection in generated pom.xml

  • scmDeveloperConnection
    SCM developer connection in generated pom.xml

  • scmUrl
    SCM URL in generated pom.xml

  • developerName
    developer name in generated pom.xml

  • developerEmail
    developer email in generated pom.xml

  • developerOrganization
    developer organization in generated pom.xml

  • developerOrganizationUrl
    developer organization URL in generated pom.xml

  • licenseName
    The name of the license

  • licenseUrl
    The URL of the license

  • sourceFolder
    source folder for generated code

  • localVariablePrefix
    prefix for generated code members and local variables

  • serializableModel
    boolean - toggle "implements Serializable" for generated models (Default: false)

  • bigDecimalAsString
    Treat BigDecimal values as Strings to avoid precision loss. (Default: false)

  • fullJavaUtil
    whether to use fully qualified name for classes under java.util. This option only works for Java API client (Default: false)

  • hideGenerationTimestamp
    hides the timestamp when files were generated

  • withXml
    whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML) (Default: false)

  • dateLibrary Option. Date library to use

    • joda - Joda (for legacy app only)
    • legacy - Legacy java.util.Date (if you really have a good reason not to use threetenbp
    • java8-localdatetime - Java 8 using LocalDateTime (for legacy app only)
    • java8 - Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets "java8" to true
    • threetenbp - Backport of JSR310 (preferred for jdk < 1.8)
  • java8 Option. Use Java8 classes instead of third party equivalents

    • true - Use Java 8 classes such as Base64
    • false - Various third party libraries as needed
  • useRxJava
    Whether to use the RxJava adapter with the retrofit2 library. (Default: false)

  • useRxJava2
    Whether to use the RxJava2 adapter with the retrofit2 library. (Default: false)

  • parcelableModel
    Whether to generate models for Android that implement Parcelable with the okhttp-gson library. (Default: false)

  • usePlayWS
    Use Play! Async HTTP client (Play WS API) (Default: false)

  • playVersion
    Version of Play! Framework (possible values "play24", "play25")

  • supportJava6
    Whether to support Java6 with the Jersey1 library. (Default: false)

  • useBeanValidation
    Use BeanValidation API annotations (Default: false)

  • performBeanValidation
    Perform BeanValidation (Default: false)

  • useGzipFeature
    Send gzip-encoded requests (Default: false)

  • useRuntimeException
    Use RuntimeException instead of Exception (Default: false)

  • library library template (sub-template) to use (Default: okhttp-gson)

    • jersey1 - HTTP client: Jersey client 1.19.4. JSON processing: Jackson 2.8.9. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
    • feign - HTTP client: OpenFeign 9.4.0. JSON processing: Jackson 2.8.9
    • jersey2 - HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.8.9
    • okhttp-gson - HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.8.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
    • retrofit - HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.3.1 (Retrofit 1.9.0). IMPORTANT NOTE: retrofit1.x is no longer actively maintained so please upgrade to 'retrofit2' instead.
    • retrofit2 - HTTP client: OkHttp 3.8.0. JSON processing: Gson 2.6.1 (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2]=true'. (RxJava 1.x or 2.x)
    • resttemplate - HTTP client: Spring RestTemplate 4.3.9-RELEASE. JSON processing: Jackson 2.8.9
    • resteasy - HTTP client: Resteasy client 3.1.3.Final. JSON processing: Jackson 2.8.9
    • vertx - HTTP client: VertX client 3.2.4. JSON processing: Jackson 2.8.9
    • google-api-client - HTTP client: Google API client 1.23.0. JSON processing: Jackson 2.8.9
@wing328
Copy link
Contributor

wing328 commented Mar 8, 2018

@marcelstoer are you looking for the following commands to show the general options and language-specific option?

General: java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar help generate

Language-specific: java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar config-help -l java

@marcelstoer
Copy link
Author

No, I'm familiar with the commands (they produced the above list) but I expected the documentation to include the language-specific options.

@bxnkole
Copy link

bxnkole commented Jul 26, 2018

This could also be useful https://generator.swagger.io/api/gen/clients/java

@harshitbansal1992
Copy link

harshitbansal1992 commented Sep 17, 2018

Is there an option to use specific annotations from the library for eg: For each model I wish to use Jackson annotation @JsonInclude(Include.NON_NULL)
Also, if I want to use other than the specified libraries ... is that possible ?

@aratakokubun
Copy link

@harshitbansal1992
Have you already resolved the issue?
I really want that option to depend libraries as less as possible!

@verokarhu
Copy link

Currently this issue seems to be the best documentation on the different options for Java. Having to download a separate jar just to list the options is not an option.

@foal
Copy link

foal commented Jan 31, 2019

Just put it into README :)

@anandsunderraman
Copy link

Actually there exists comprehensive documentation in another repo:
https://github.com/OpenAPITools/openapi-generator/tree/master/docs/generators

@tyler2cr
Copy link

The configHelp parameter (right below configOptions) says that it "dumps the configuration help for the specified library (generates no sources)". I've incorporated this as part of my build lifecycle so I don't need to run the jar command manually. The list of configOptions that @marcelstoer posted gets printed as part of the build:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>generate "configOptions" for java</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>swagger.yaml</inputSpec>
                <configHelp>true</configHelp>
                <language>java</language>
            </configuration>
        </execution>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>swagger.yaml</inputSpec>

                <language>java</language>

                <configOptions>
                    <dateLibrary>java8</dateLibrary>
                </configOptions>

                <library>resttemplate</library>
            </configuration>
        </execution>
    </executions>
</plugin>
.
.
.
[INFO] --- swagger-codegen-maven-plugin:2.3.1:generate (generate "configOptions" for java) @ swagger.codegen.proof.of.concept ---
[INFO] reading from swagger.yaml
        sortParamsByRequiredFlag
            Sort method arguments to place required parameters before optional parameters. (Default: true)

        ensureUniqueParams
            Whether to ensure parameter names are unique in an operation (rename parameters that are not). (Default: true)

        allowUnicodeIdentifiers
            boolean, toggles whether unicode identifiers are allowed in names or not, default is false (Default: false)

        modelPackage
            package for generated models

        apiPackage
            package for generated api classes

        invokerPackage
            root package for generated code

        groupId
            groupId in generated pom.xml

        artifactId
            artifactId in generated pom.xml

        artifactVersion
            artifact version in generated pom.xml

        artifactUrl
            artifact URL in generated pom.xml

        artifactDescription
            artifact description in generated pom.xml

        scmConnection
            SCM connection in generated pom.xml

        scmDeveloperConnection
            SCM developer connection in generated pom.xml

        scmUrl
            SCM URL in generated pom.xml

        developerName
            developer name in generated pom.xml

        developerEmail
            developer email in generated pom.xml

        developerOrganization
            developer organization in generated pom.xml

        developerOrganizationUrl
            developer organization URL in generated pom.xml

        licenseName
            The name of the license

        licenseUrl
            The URL of the license

        sourceFolder
            source folder for generated code

        localVariablePrefix
            prefix for generated code members and local variables

        serializableModel
            boolean - toggle "implements Serializable" for generated models (Default: false)

        bigDecimalAsString
            Treat BigDecimal values as Strings to avoid precision loss. (Default: false)

        fullJavaUtil
            whether to use fully qualified name for classes under java.util. This option only works for Java API client (Default: false)

        hideGenerationTimestamp
            hides the timestamp when files were generated

        withXml
            whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML) (Default: false)

        dateLibrary
            Option. Date library to use
                joda - Joda (for legacy app only)
                legacy - Legacy java.util.Date (if you really have a good reason not to use threetenbp
                java8-localdatetime - Java 8 using LocalDateTime (for legacy app only)
                java8 - Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets "java8" to true
                threetenbp - Backport of JSR310 (preferred for jdk < 1.8)

        java8
            Option. Use Java8 classes instead of third party equivalents
                true - Use Java 8 classes such as Base64
                false - Various third party libraries as needed

        useRxJava
            Whether to use the RxJava adapter with the retrofit2 library. (Default: false)

        useRxJava2
            Whether to use the RxJava2 adapter with the retrofit2 library. (Default: false)

        parcelableModel
            Whether to generate models for Android that implement Parcelable with the okhttp-gson library. (Default: false)

        usePlayWS
            Use Play! Async HTTP client (Play WS API) (Default: false)

        playVersion
            Version of Play! Framework (possible values "play24", "play25")

        supportJava6
            Whether to support Java6 with the Jersey1 library. (Default: false)

        useBeanValidation
            Use BeanValidation API annotations (Default: false)

        performBeanValidation
            Perform BeanValidation (Default: false)

        useGzipFeature
            Send gzip-encoded requests (Default: false)

        useRuntimeException
            Use RuntimeException instead of Exception (Default: false)

        library
            library template (sub-template) to use (Default: okhttp-gson)
                jersey1 - HTTP client: Jersey client 1.19.4. JSON processing: Jackson 2.8.9. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
                feign - HTTP client: OpenFeign 9.4.0. JSON processing: Jackson 2.8.9
                jersey2 - HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.8.9
                okhttp-gson - HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.8.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
                retrofit - HTTP client: OkHttp 2.7.5. JSON processing: Gson 2.3.1 (Retrofit 1.9.0). IMPORTANT NOTE: retrofit1.x is no longer actively maintained so please upgrade to 'retrofit2' instead.
                retrofit2 - HTTP client: OkHttp 3.8.0. JSON processing: Gson 2.6.1 (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2]=true'. (RxJava 1.x or 2.x)
                resttemplate - HTTP client: Spring RestTemplate 4.3.9-RELEASE. JSON processing: Jackson 2.8.9
                resteasy - HTTP client: Resteasy client 3.1.3.Final. JSON processing: Jackson 2.8.9
                vertx - HTTP client: VertX client 3.2.4. JSON processing: Jackson 2.8.9
                google-api-client - HTTP client: Google API client 1.23.0. JSON processing: Jackson 2.8.9

[INFO] 
[INFO] --- swagger-codegen-maven-plugin:2.3.1:generate (default) @ swagger.codegen.proof.of.concept ---
[INFO] reading from swagger.yaml
.
.
.

@flocheke7
Copy link

interfaceOnly option no longer exists ???

@liangzuobin
Copy link

And those System Properties.

@mfaisalhyder
Copy link

Is there a way to disable @Schema from generated photos?

OpenApiTools has that but swagger-codegen seems to be missing it from both java and spring language.

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