Class DefaultCodegen

    • Field Detail

      • DefaultFeatureSet

        public static FeatureSet DefaultFeatureSet
      • falseSchema

        protected static io.swagger.v3.oas.models.media.Schema falseSchema
      • trueSchema

        protected static io.swagger.v3.oas.models.media.Schema trueSchema
      • inputSpec

        protected String inputSpec
      • outputFolder

        protected String outputFolder
      • defaultIncludes

        protected Set<String> defaultIncludes
      • reservedWords

        protected Set<String> reservedWords
      • languageSpecificPrimitives

        protected Set<String> languageSpecificPrimitives
      • inlineSchemaNameMapping

        protected Map<String,​String> inlineSchemaNameMapping
      • inlineSchemaNameDefault

        protected Map<String,​String> inlineSchemaNameDefault
      • modelPackage

        protected String modelPackage
      • apiPackage

        protected String apiPackage
      • fileSuffix

        protected String fileSuffix
      • modelNamePrefix

        protected String modelNamePrefix
      • modelNameSuffix

        protected String modelNameSuffix
      • apiNamePrefix

        protected String apiNamePrefix
      • apiNameSuffix

        protected String apiNameSuffix
      • testPackage

        protected String testPackage
      • filesMetadataFilename

        protected String filesMetadataFilename
      • versionMetadataFilename

        protected String versionMetadataFilename
      • apiTestTemplateFiles

        protected Map<String,​String> apiTestTemplateFiles
      • modelTestTemplateFiles

        protected Map<String,​String> modelTestTemplateFiles
      • modelDocTemplateFiles

        protected Map<String,​String> modelDocTemplateFiles
      • reservedWordsMappings

        protected Map<String,​String> reservedWordsMappings
      • templateDir

        protected String templateDir
      • embeddedTemplateDir

        protected String embeddedTemplateDir
      • additionalProperties

        protected Map<String,​Object> additionalProperties
      • skipOverwrite

        protected boolean skipOverwrite
      • removeOperationIdPrefix

        protected boolean removeOperationIdPrefix
      • removeOperationIdPrefixDelimiter

        protected String removeOperationIdPrefixDelimiter
      • removeOperationIdPrefixCount

        protected int removeOperationIdPrefixCount
      • skipOperationExample

        protected boolean skipOperationExample
      • JSON_MIME_PATTERN

        protected static final Pattern JSON_MIME_PATTERN
      • JSON_VENDOR_MIME_PATTERN

        protected static final Pattern JSON_VENDOR_MIME_PATTERN
      • supportsMultipleInheritance

        protected boolean supportsMultipleInheritance
        True if the code generator supports multiple class inheritance. This is used to model the parent hierarchy based on the 'allOf' composed schemas.
      • supportsInheritance

        protected boolean supportsInheritance
        True if the code generator supports single class inheritance. This is used to model the parent hierarchy based on the 'allOf' composed schemas. Note: the single-class inheritance technique has inherent limitations because a 'allOf' composed schema may have multiple $ref child schemas, each one potentially representing a "parent" in the class inheritance hierarchy. Some language generators also use class inheritance to implement the `additionalProperties` keyword. For example, the Java code generator may generate 'extends HashMap'.
      • supportsAdditionalPropertiesWithComposedSchema

        protected boolean supportsAdditionalPropertiesWithComposedSchema
        True if the language generator supports the 'additionalProperties' keyword as sibling of a composed (allOf/anyOf/oneOf) schema. Note: all language generators should support this to comply with the OAS specification.
      • supportsMixins

        protected boolean supportsMixins
      • library

        protected String library
      • sortParamsByRequiredFlag

        protected Boolean sortParamsByRequiredFlag
      • sortModelPropertiesByRequiredFlag

        protected Boolean sortModelPropertiesByRequiredFlag
      • ensureUniqueParams

        protected Boolean ensureUniqueParams
      • allowUnicodeIdentifiers

        protected Boolean allowUnicodeIdentifiers
      • gitHost

        protected String gitHost
      • gitUserId

        protected String gitUserId
      • gitRepoId

        protected String gitRepoId
      • releaseNote

        protected String releaseNote
      • httpUserAgent

        protected String httpUserAgent
      • hideGenerationTimestamp

        protected Boolean hideGenerationTimestamp
      • specialCharReplacements

        protected Map<String,​String> specialCharReplacements
      • prependFormOrBodyParameters

        protected Boolean prependFormOrBodyParameters
      • docExtension

        protected String docExtension
      • ignoreFilePathOverride

        protected String ignoreFilePathOverride
      • enablePostProcessFile

        protected boolean enablePostProcessFile
      • useOneOfInterfaces

        protected boolean useOneOfInterfaces
      • addOneOfInterfaceImports

        protected boolean addOneOfInterfaceImports
      • enableMinimalUpdate

        protected boolean enableMinimalUpdate
      • strictSpecBehavior

        protected boolean strictSpecBehavior
      • removeEnumValuePrefix

        protected boolean removeEnumValuePrefix
      • legacyDiscriminatorBehavior

        protected boolean legacyDiscriminatorBehavior
      • disallowAdditionalPropertiesIfNotPresent

        protected boolean disallowAdditionalPropertiesIfNotPresent
      • enumUnknownDefaultCase

        protected boolean enumUnknownDefaultCase
      • enumUnknownDefaultCaseName

        protected String enumUnknownDefaultCaseName
      • openAPI

        protected io.swagger.v3.oas.models.OpenAPI openAPI
      • loadDeepObjectIntoItems

        protected boolean loadDeepObjectIntoItems
      • importBaseType

        protected boolean importBaseType
      • importContainerType

        protected boolean importContainerType
      • addSuffixToDuplicateOperationNicknames

        protected boolean addSuffixToDuplicateOperationNicknames
    • Constructor Detail

      • DefaultCodegen

        public DefaultCodegen()
        Default constructor. This method will map between OAS type and language-specified type, as well as mapping between OAS type and the corresponding import statement for the language. This will also add some language specified CLI options, if any. returns string presentation of the example path (it's a constructor)
    • Method Detail

      • addMustacheLambdas

        protected com.google.common.collect.ImmutableMap.Builder<String,​com.samskivert.mustache.Mustache.Lambda> addMustacheLambdas()
        Preset map builder with commonly used Mustache lambdas. To extend the map, override addMustacheLambdas(), call parent method first and then add additional lambdas to the returned builder. If common lambdas are not desired, override addMustacheLambdas() method and return empty builder.
        Returns:
        preinitialized map with common lambdas
      • getModelNameToSchemaCache

        protected Map<String,​io.swagger.v3.oas.models.media.Schema> getModelNameToSchemaCache()
        Return a map from model name to Schema for efficient lookup.
        Returns:
        map from model name to Schema.
      • getAllModels

        public Map<String,​CodegenModel> getAllModels​(Map<String,​ModelsMap> objs)
        Index all CodegenModels by model name.
        Parameters:
        objs - Map of models
        Returns:
        map of all models indexed by names
      • updateAllModels

        public Map<String,​ModelsMap> updateAllModels​(Map<String,​ModelsMap> objs)
        Loop through all models to update different flags (e.g. isSelfReference), children models, etc and update mapped models for import.
        Specified by:
        updateAllModels in interface CodegenConfig
        Parameters:
        objs - Map of models
        Returns:
        maps of models with various updates
      • removeImport

        protected void removeImport​(OperationsMap objs,
                                    String importToRemove)
        Removes importToRemove from the imports of objs, if present. This is useful to remove imports that are already present in operations-related template files, to avoid importing the same thing twice.
        Parameters:
        objs - imports will be removed from this objs' imports collection
        importToRemove - the import statement to be removed
      • removeSelfReferenceImports

        protected void removeSelfReferenceImports​(CodegenModel model)
        Removes imports from the model that points to itself Marks a self referencing property, if detected
        Parameters:
        model - Self imports will be removed from this model.imports collection
      • postProcessModelsEnum

        public ModelsMap postProcessModelsEnum​(ModelsMap objs)
        post process enum defined in model's properties
        Parameters:
        objs - Map of models
        Returns:
        maps of models with better enum support
      • findCommonPrefixOfVars

        public String findCommonPrefixOfVars​(List<Object> vars)
        Returns the common prefix of variables for enum naming if two or more variables are present
        Parameters:
        vars - List of variable names
        Returns:
        the common prefix for naming
      • toEnumDefaultValue

        public String toEnumDefaultValue​(String value,
                                         String datatype)
        Return the enum default value in the language specified format
        Parameters:
        value - enum variable name
        datatype - data type
        Returns:
        the default value for the enum
      • toEnumValue

        public String toEnumValue​(String value,
                                  String datatype)
        Return the enum value in the language specified format e.g. status becomes "status"
        Parameters:
        value - enum variable name
        datatype - data type
        Returns:
        the sanitized value for enum
      • toEnumVarName

        public String toEnumVarName​(String value,
                                    String datatype)
        Return the sanitized variable name for enum
        Parameters:
        value - enum variable name
        datatype - data type
        Returns:
        the sanitized variable name for enum
      • setOpenAPI

        public void setOpenAPI​(io.swagger.v3.oas.models.OpenAPI openAPI)
        Set the OpenAPI document. This method is invoked when the input OpenAPI document has been parsed and validated.
        Specified by:
        setOpenAPI in interface CodegenConfig
        Parameters:
        openAPI - specification being generated
      • preprocessOpenAPI

        public void preprocessOpenAPI​(io.swagger.v3.oas.models.OpenAPI openAPI)
        Specified by:
        preprocessOpenAPI in interface CodegenConfig
      • processOpenAPI

        public void processOpenAPI​(io.swagger.v3.oas.models.OpenAPI openAPI)
        Specified by:
        processOpenAPI in interface CodegenConfig
      • processCompiler

        public com.samskivert.mustache.Mustache.Compiler processCompiler​(com.samskivert.mustache.Mustache.Compiler compiler)
        Specified by:
        processCompiler in interface CodegenConfig
      • escapeTextWhileAllowingNewLines

        public String escapeTextWhileAllowingNewLines​(String input)
        Escape characters while allowing new lines
        Specified by:
        escapeTextWhileAllowingNewLines in interface CodegenConfig
        Parameters:
        input - String to be escaped
        Returns:
        escaped string
      • escapeUnsafeCharacters

        public String escapeUnsafeCharacters​(String input)
        override with any special text escaping logic to handle unsafe characters so as to avoid code injection
        Specified by:
        escapeUnsafeCharacters in interface CodegenConfig
        Parameters:
        input - String to be cleaned up
        Returns:
        string with unsafe characters removed or escaped
      • escapeQuotationMark

        public String escapeQuotationMark​(String input)
        Escape single and/or double quote to avoid code injection
        Specified by:
        escapeQuotationMark in interface CodegenConfig
        Parameters:
        input - String to be cleaned up
        Returns:
        string with quotation mark removed or escaped
      • setFilesMetadataFilename

        public void setFilesMetadataFilename​(String filesMetadataFilename)
      • setVersionMetadataFilename

        public void setVersionMetadataFilename​(String versionMetadataFilename)
      • setTemplateDir

        public void setTemplateDir​(String templateDir)
      • setModelPackage

        public void setModelPackage​(String modelPackage)
      • getModelNamePrefix

        public String getModelNamePrefix()
      • setModelNamePrefix

        public void setModelNamePrefix​(String modelNamePrefix)
      • getModelNameSuffix

        public String getModelNameSuffix()
      • setModelNameSuffix

        public void setModelNameSuffix​(String modelNameSuffix)
      • getApiNameSuffix

        public String getApiNameSuffix()
      • setApiNameSuffix

        public void setApiNameSuffix​(String apiNameSuffix)
      • getApiNamePrefix

        public String getApiNamePrefix()
      • setApiNamePrefix

        public void setApiNamePrefix​(String apiNamePrefix)
      • setApiPackage

        public void setApiPackage​(String apiPackage)
      • getSortParamsByRequiredFlag

        public Boolean getSortParamsByRequiredFlag()
      • setSortParamsByRequiredFlag

        public void setSortParamsByRequiredFlag​(Boolean sortParamsByRequiredFlag)
      • getSortModelPropertiesByRequiredFlag

        public Boolean getSortModelPropertiesByRequiredFlag()
      • setSortModelPropertiesByRequiredFlag

        public void setSortModelPropertiesByRequiredFlag​(Boolean sortModelPropertiesByRequiredFlag)
      • getPrependFormOrBodyParameters

        public Boolean getPrependFormOrBodyParameters()
      • setPrependFormOrBodyParameters

        public void setPrependFormOrBodyParameters​(Boolean prependFormOrBodyParameters)
      • getEnsureUniqueParams

        public Boolean getEnsureUniqueParams()
      • setEnsureUniqueParams

        public void setEnsureUniqueParams​(Boolean ensureUniqueParams)
      • getLegacyDiscriminatorBehavior

        public Boolean getLegacyDiscriminatorBehavior()
      • setLegacyDiscriminatorBehavior

        public void setLegacyDiscriminatorBehavior​(boolean val)
      • getDisallowAdditionalPropertiesIfNotPresent

        public Boolean getDisallowAdditionalPropertiesIfNotPresent()
      • setDisallowAdditionalPropertiesIfNotPresent

        public void setDisallowAdditionalPropertiesIfNotPresent​(boolean val)
      • getEnumUnknownDefaultCase

        public Boolean getEnumUnknownDefaultCase()
      • setEnumUnknownDefaultCase

        public void setEnumUnknownDefaultCase​(boolean val)
      • getAllowUnicodeIdentifiers

        public Boolean getAllowUnicodeIdentifiers()
      • setAllowUnicodeIdentifiers

        public void setAllowUnicodeIdentifiers​(Boolean allowUnicodeIdentifiers)
      • getUseOneOfInterfaces

        public Boolean getUseOneOfInterfaces()
      • setUseOneOfInterfaces

        public void setUseOneOfInterfaces​(Boolean useOneOfInterfaces)
      • toRegularExpression

        public String toRegularExpression​(String pattern)
        Return the regular expression/JSON schema pattern (http://json-schema.org/latest/json-schema-validation.html#anchor33)
        Parameters:
        pattern - the pattern (regular expression)
        Returns:
        properly-escaped pattern
      • toApiFilename

        public String toApiFilename​(String name)
        Return the file name of the Api Test
        Specified by:
        toApiFilename in interface CodegenConfig
        Parameters:
        name - the file name of the Api
        Returns:
        the file name of the Api
      • toApiDocFilename

        public String toApiDocFilename​(String name)
        Return the file name of the Api Documentation
        Specified by:
        toApiDocFilename in interface CodegenConfig
        Parameters:
        name - the file name of the Api
        Returns:
        the file name of the Api
      • toApiTestFilename

        public String toApiTestFilename​(String name)
        Return the file name of the Api Test
        Specified by:
        toApiTestFilename in interface CodegenConfig
        Parameters:
        name - the file name of the Api
        Returns:
        the file name of the Api
      • toApiVarName

        public String toApiVarName​(String name)
        Return the variable name in the Api
        Specified by:
        toApiVarName in interface CodegenConfig
        Parameters:
        name - the variable name of the Api
        Returns:
        the snake-cased variable name
      • toModelFilename

        public String toModelFilename​(String name)
        Return the capitalized file name of the model
        Specified by:
        toModelFilename in interface CodegenConfig
        Parameters:
        name - the model name
        Returns:
        the file name of the model
      • toModelTestFilename

        public String toModelTestFilename​(String name)
        Return the capitalized file name of the model test
        Specified by:
        toModelTestFilename in interface CodegenConfig
        Parameters:
        name - the model name
        Returns:
        the file name of the model
      • toModelDocFilename

        public String toModelDocFilename​(String name)
        Return the capitalized file name of the model documentation
        Specified by:
        toModelDocFilename in interface CodegenConfig
        Parameters:
        name - the model name
        Returns:
        the file name of the model
      • toOperationId

        public String toOperationId​(String operationId)
        Return the operation ID (method name)
        Parameters:
        operationId - operation ID
        Returns:
        the sanitized method name
      • toVarName

        public String toVarName​(String name)
        Return the variable name by removing invalid characters and proper escaping if it's a reserved word.
        Parameters:
        name - the variable name
        Returns:
        the sanitized variable name
      • toParamName

        public String toParamName​(String name)
        Return the parameter name by removing invalid characters and proper escaping if it's a reserved word.
        Specified by:
        toParamName in interface CodegenConfig
        Parameters:
        name - Codegen property object
        Returns:
        the sanitized parameter name
      • toArrayModelParamName

        public String toArrayModelParamName​(String name)
        Return the parameter name of array of model
        Parameters:
        name - name of the array model
        Returns:
        the sanitized parameter name
      • toEnumName

        public String toEnumName​(CodegenProperty property)
        Return the Enum name (e.g. StatusEnum given 'status')
        Parameters:
        property - Codegen property
        Returns:
        the Enum name
      • escapeReservedWord

        public String escapeReservedWord​(String name)
        Return the escaped name of the reserved word
        Specified by:
        escapeReservedWord in interface CodegenConfig
        Parameters:
        name - the name to be escaped
        Returns:
        the escaped reserved word

        throws Runtime exception as reserved word is not allowed (default behavior)

      • toModelImport

        public String toModelImport​(String name)
        Return the fully-qualified "Model" name for import
        Specified by:
        toModelImport in interface CodegenConfig
        Parameters:
        name - the name of the "Model"
        Returns:
        the fully-qualified "Model" name for import
      • toModelImportMap

        public Map<String,​String> toModelImportMap​(String name)
        Returns the same content as [[toModelImport]] with key the fully-qualified Model name and value the initial input. In case of union types this method has a key for each separate model and import.
        Specified by:
        toModelImportMap in interface CodegenConfig
        Parameters:
        name - the name of the "Model"
        Returns:
        Map of fully-qualified models.
      • toApiImport

        public String toApiImport​(String name)
        Return the fully-qualified "Api" name for import
        Specified by:
        toApiImport in interface CodegenConfig
        Parameters:
        name - the name of the "Api"
        Returns:
        the fully-qualified "Api" name for import
      • initializeSpecialCharacterMapping

        protected void initializeSpecialCharacterMapping()
        Initialize special character mapping
      • getSymbolName

        protected String getSymbolName​(String input)
        Return the symbol name of a symbol
        Parameters:
        input - Symbol (e.g. $)
        Returns:
        Symbol name (e.g. Dollar)
      • generateExamplePath

        public String generateExamplePath​(String path,
                                          io.swagger.v3.oas.models.Operation operation)
        Return the example path
        Specified by:
        generateExamplePath in interface CodegenConfig
        Parameters:
        path - the path of the operation
        operation - OAS operation object
        Returns:
        string presentation of the example path
      • toInstantiationType

        public String toInstantiationType​(io.swagger.v3.oas.models.media.Schema schema)
        Return the instantiation type of the property, especially for map and array
        Parameters:
        schema - property schema
        Returns:
        string presentation of the instantiation type of the property
      • setParameterExampleValue

        public void setParameterExampleValue​(CodegenParameter codegenParameter)
        Return the example value of the parameter.
        Parameters:
        codegenParameter - Codegen parameter
      • setParameterExampleValue

        public void setParameterExampleValue​(CodegenParameter codegenParameter,
                                             io.swagger.v3.oas.models.parameters.Parameter parameter)
        Return the example value of the parameter.
        Parameters:
        codegenParameter - Codegen parameter
        parameter - Parameter
      • setParameterExamples

        public void setParameterExamples​(CodegenParameter codegenParameter,
                                         io.swagger.v3.oas.models.parameters.Parameter parameter)
        Return the examples of the parameter.
        Parameters:
        codegenParameter - Codegen parameter
        parameter - Parameter
      • setParameterExampleValue

        public void setParameterExampleValue​(CodegenParameter codegenParameter,
                                             io.swagger.v3.oas.models.parameters.RequestBody requestBody)
        Return the example value of the parameter.
        Parameters:
        codegenParameter - Codegen parameter
        requestBody - Request body
      • setParameterEncodingValues

        public void setParameterEncodingValues​(CodegenParameter codegenParameter,
                                               io.swagger.v3.oas.models.media.MediaType mediaType)
        Sets the content type, style, and explode of the parameter based on the encoding specified in the request body.
        Parameters:
        codegenParameter - Codegen parameter
        mediaType - MediaType from the request body
      • toExampleValue

        public String toExampleValue​(io.swagger.v3.oas.models.media.Schema schema)
        Return the example value of the property

        This method should be overridden in the generator to meet its requirement.

        Parameters:
        schema - Property schema
        Returns:
        string presentation of the example value of the property
      • toDefaultValue

        public String toDefaultValue​(io.swagger.v3.oas.models.media.Schema schema)
        Return the default value of the property

        This method should be overridden in the generator to meet its requirement. Return null if you do NOT want a default value. Any non-null value will cause {{#defaultValue} check to pass.

        Parameters:
        schema - Property schema
        Returns:
        string presentation of the default value of the property
      • toDefaultParameterValue

        public String toDefaultParameterValue​(io.swagger.v3.oas.models.media.Schema<?> schema)
        Return the default value of the parameter

        Return null if you do NOT want a default value. Any non-null value will cause {{#defaultValue} check to pass.

        Parameters:
        schema - Parameter schema
        Returns:
        string presentation of the default value of the parameter
      • toDefaultParameterValue

        public String toDefaultParameterValue​(CodegenProperty codegenProperty,
                                              io.swagger.v3.oas.models.media.Schema<?> schema)
        Return the default value of the parameter

        Return null if you do NOT want a default value. Any non-null value will cause {{#defaultValue} check to pass.

        Parameters:
        codegenProperty - Codegen Property
        schema - Parameter schema
        Returns:
        string presentation of the default value of the parameter
      • toDefaultValueWithParam

        public String toDefaultValueWithParam​(String name,
                                              io.swagger.v3.oas.models.media.Schema schema)
        Return the property initialized from a data object Useful for initialization with a plain object in Javascript
        Parameters:
        name - Name of the property object
        schema - Property schema
        Returns:
        string presentation of the default value of the property
      • toDefaultValue

        public String toDefaultValue​(CodegenProperty codegenProperty,
                                     io.swagger.v3.oas.models.media.Schema schema)
        Return the default value of the property

        Return null if you do NOT want a default value. Any non-null value will cause {{#defaultValue} check to pass.

        Parameters:
        schema - Property schema
        codegenProperty - Codegen property
        Returns:
        string presentation of the default value of the property
      • getSchemaType

        public String getSchemaType​(io.swagger.v3.oas.models.media.Schema schema)
        returns the OpenAPI type for the property. Use getAlias to handle $ref of primitive type
        Parameters:
        schema - property schema
        Returns:
        string presentation of the type
      • getSchemaItems

        protected io.swagger.v3.oas.models.media.Schema<?> getSchemaItems​(io.swagger.v3.oas.models.media.ArraySchema schema)
      • getSchemaAdditionalProperties

        protected io.swagger.v3.oas.models.media.Schema<?> getSchemaAdditionalProperties​(io.swagger.v3.oas.models.media.Schema schema)
      • toAllOfName

        public String toAllOfName​(List<String> names,
                                  io.swagger.v3.oas.models.media.ComposedSchema composedSchema)
        Return the name of the 'allOf' composed schema.
        Parameters:
        names - List of names
        composedSchema - composed schema
        Returns:
        name of the allOf schema
      • toAnyOfName

        public String toAnyOfName​(List<String> names,
                                  io.swagger.v3.oas.models.media.ComposedSchema composedSchema)
        Return the name of the anyOf schema
        Parameters:
        names - List of names
        composedSchema - composed schema
        Returns:
        name of the anyOf schema
      • toOneOfName

        public String toOneOfName​(List<String> names,
                                  io.swagger.v3.oas.models.media.ComposedSchema composedSchema)
        Return the name of the oneOf schema.

        This name is used to set the value of CodegenProperty.openApiType.

        If the 'x-one-of-name' extension is specified in the OAS document, return that value. Otherwise, a name is constructed by creating a comma-separated list of all the names of the oneOf schemas.

        Parameters:
        names - List of names
        composedSchema - composed schema
        Returns:
        name of the oneOf schema
      • unaliasSchema

        public io.swagger.v3.oas.models.media.Schema unaliasSchema​(io.swagger.v3.oas.models.media.Schema schema)
        Specified by:
        unaliasSchema in interface CodegenConfig
      • getSingleSchemaType

        protected String getSingleSchemaType​(io.swagger.v3.oas.models.media.Schema schema)
        Return a string representation of the schema type, resolving aliasing and references if necessary.
        Parameters:
        schema - input
        Returns:
        the string representation of the schema type.
      • lowerCamelCase

        public String lowerCamelCase​(String name)
        Return the lowerCamelCase of the string
        Parameters:
        name - string to be lowerCamelCased
        Returns:
        lowerCamelCase string
      • getTypeDeclaration

        public String getTypeDeclaration​(String name)
        Output the language-specific type declaration of a given OAS name.
        Specified by:
        getTypeDeclaration in interface CodegenConfig
        Parameters:
        name - name
        Returns:
        a string presentation of the type
      • getTypeDeclaration

        public String getTypeDeclaration​(io.swagger.v3.oas.models.media.Schema schema)
        Output the language-specific type declaration of the property.
        Specified by:
        getTypeDeclaration in interface CodegenConfig
        Parameters:
        schema - property schema
        Returns:
        a string presentation of the property type
      • getAlias

        public String getAlias​(String name)
        Determine the type alias for the given type if it exists. This feature was originally developed for Java because the language does not have an aliasing mechanism of its own but later extends to handle other languages
        Parameters:
        name - The type name.
        Returns:
        The alias of the given type, if it exists. If there is no alias for this type, then returns the input type name.
      • toBooleanGetter

        public String toBooleanGetter​(String name)
        Output the Getter name for boolean property, e.g. getActive
        Specified by:
        toBooleanGetter in interface CodegenConfig
        Parameters:
        name - the name of the property
        Returns:
        getter name based on naming convention
      • toGetter

        public String toGetter​(String name)
        Output the Getter name, e.g. getSize
        Specified by:
        toGetter in interface CodegenConfig
        Parameters:
        name - the name of the property
        Returns:
        getter name based on naming convention
      • toSetter

        public String toSetter​(String name)
        Output the Setter name, e.g. setSize
        Specified by:
        toSetter in interface CodegenConfig
        Parameters:
        name - the name of the property
        Returns:
        setter name based on naming convention
      • toApiName

        public String toApiName​(String name)
        Output the API (class) name (capitalized) ending with the specified or default suffix Return DefaultApi if name is empty
        Specified by:
        toApiName in interface CodegenConfig
        Parameters:
        name - the name of the Api
        Returns:
        capitalized Api name
      • toModelName

        public String toModelName​(String name)
        Converts the OpenAPI schema name to a model name suitable for the current code generator. May be overridden for each programming language. In case the name belongs to the TypeSystem it won't be renamed.
        Specified by:
        toModelName in interface CodegenConfig
        Parameters:
        name - the name of the model
        Returns:
        capitalized model name
      • updateModelForComposedSchema

        protected void updateModelForComposedSchema​(CodegenModel m,
                                                    io.swagger.v3.oas.models.media.Schema schema,
                                                    Map<String,​io.swagger.v3.oas.models.media.Schema> allDefinitions)
      • updateModelForObject

        protected void updateModelForObject​(CodegenModel m,
                                            io.swagger.v3.oas.models.media.Schema schema)
      • updateModelForAnyType

        protected void updateModelForAnyType​(CodegenModel m,
                                             io.swagger.v3.oas.models.media.Schema schema)
      • toTestCaseName

        protected String toTestCaseName​(String specTestCaseName)
      • processTestExampleData

        protected Object processTestExampleData​(Object data)
        A method that allows generators to pre-process test example payloads This can be useful if one needs to change how values like null in string are represented
        Parameters:
        data - the test data payload
        Returns:
        the updated test data payload
      • updateModelForString

        protected void updateModelForString​(CodegenModel model,
                                            io.swagger.v3.oas.models.media.Schema schema)
        Sets the booleans that define the model's type
        Parameters:
        model - the model to update
        schema - the model's schema
      • updateModelForNumber

        protected void updateModelForNumber​(CodegenModel model,
                                            io.swagger.v3.oas.models.media.Schema schema)
      • updateModelForInteger

        protected void updateModelForInteger​(CodegenModel model,
                                             io.swagger.v3.oas.models.media.Schema schema)
      • fromModel

        public CodegenModel fromModel​(String name,
                                      io.swagger.v3.oas.models.media.Schema schema)
        Convert OAS Model object to Codegen Model object.
        Specified by:
        fromModel in interface CodegenConfig
        Parameters:
        name - the name of the model
        schema - OAS Model object
        Returns:
        Codegen Model object
      • getOneOfAnyOfDescendants

        protected List<CodegenDiscriminator.MappedModel> getOneOfAnyOfDescendants​(String composedSchemaName,
                                                                                  String discPropName,
                                                                                  io.swagger.v3.oas.models.media.ComposedSchema c,
                                                                                  io.swagger.v3.oas.models.OpenAPI openAPI)
        This function is only used for composed schemas which have a discriminator Process oneOf and anyOf models in a composed schema and adds them into a list if the oneOf and anyOf models contain the required discriminator. If they don't contain the required discriminator or the discriminator is the wrong type then an error is thrown
        Parameters:
        composedSchemaName - The String model name of the composed schema where we are setting the discriminator map
        discPropName - The String that is the discriminator propertyName in the schema
        c - The ComposedSchema that contains the discriminator and oneOf/anyOf schemas
        openAPI - The OpenAPI spec that we are using
        Returns:
        the list of oneOf and anyOf MappedModel that need to be added to the discriminator map
      • createDiscriminator

        protected CodegenDiscriminator createDiscriminator​(String schemaName,
                                                           io.swagger.v3.oas.models.media.Schema schema,
                                                           io.swagger.v3.oas.models.OpenAPI openAPI)
      • addAdditionPropertiesToCodeGenModel

        protected void addAdditionPropertiesToCodeGenModel​(CodegenModel codegenModel,
                                                           io.swagger.v3.oas.models.media.Schema schema)
        Handle the model for the 'additionalProperties' keyword in the OAS schema.
        Parameters:
        codegenModel - The codegen representation of the schema.
        schema - The input OAS schema.
      • addProperties

        protected void addProperties​(Map<String,​io.swagger.v3.oas.models.media.Schema> properties,
                                     List<String> required,
                                     io.swagger.v3.oas.models.media.Schema schema,
                                     Set<io.swagger.v3.oas.models.media.Schema> visitedSchemas)
        Add schema's properties to "properties" and "required" list
        Parameters:
        properties - all properties
        required - required property only
        schema - schema in which the properties will be added to the lists
        visitedSchemas - circuit-breaker - the schemas with which the method was called before for recursive structures
      • getterAndSetterCapitalize

        public String getterAndSetterCapitalize​(String name)
        Camelize the method name of the getter and setter
        Parameters:
        name - string to be camelized
        Returns:
        Camelized string
      • updatePropertyForMap

        protected void updatePropertyForMap​(CodegenProperty property,
                                            io.swagger.v3.oas.models.media.Schema p)
      • updatePropertyForObject

        protected void updatePropertyForObject​(CodegenProperty property,
                                               io.swagger.v3.oas.models.media.Schema p)
      • updatePropertyForAnyType

        protected void updatePropertyForAnyType​(CodegenProperty property,
                                                io.swagger.v3.oas.models.media.Schema p)
      • updatePropertyForString

        protected void updatePropertyForString​(CodegenProperty property,
                                               io.swagger.v3.oas.models.media.Schema p)
      • updatePropertyForNumber

        protected void updatePropertyForNumber​(CodegenProperty property,
                                               io.swagger.v3.oas.models.media.Schema p)
      • updatePropertyForInteger

        protected void updatePropertyForInteger​(CodegenProperty property,
                                                io.swagger.v3.oas.models.media.Schema p)
      • fromProperty

        public CodegenProperty fromProperty​(String name,
                                            io.swagger.v3.oas.models.media.Schema p,
                                            boolean required)
        TODO remove this in 7.0.0 as a breaking change This method was kept when required was added to the fromProperty signature to ensure that the change was non-breaking
        Parameters:
        name - name of the property
        p - OAS property schema
        required - true if the property is required in the next higher object schema, false otherwise
        Returns:
        Codegen Property object
      • fromProperty

        public CodegenProperty fromProperty​(String name,
                                            io.swagger.v3.oas.models.media.Schema p)
        TODO remove this in 7.0.0 as a breaking change This method was kept when required was added to the fromProperty signature to ensure that the change was non-breaking
        Parameters:
        name - name of the property
        p - OAS property schema
        Returns:
        Codegen Property object
      • fromProperty

        public CodegenProperty fromProperty​(String name,
                                            io.swagger.v3.oas.models.media.Schema p,
                                            boolean required,
                                            boolean schemaIsFromAdditionalProperties)
        Convert OAS Property object to Codegen Property object.

        The return value is cached. An internal cache is looked up to determine if the CodegenProperty return value has already been instantiated for the (String name, Schema p) arguments. Any subsequent processing of the CodegenModel return value must be idempotent for a given (String name, Schema schema).

        Parameters:
        name - name of the property
        p - OAS property schema
        required - true if the property is required in the next higher object schema, false otherwise
        schemaIsFromAdditionalProperties - true if the property is a required property defined by additional properties schema If this is the actual additionalProperties schema not defining a required property, then the value should be false
        Returns:
        Codegen Property object
      • updatePropertyForArray

        protected void updatePropertyForArray​(CodegenProperty property,
                                              CodegenProperty innerProperty)
        Update property for array(list) container
        Parameters:
        property - Codegen property
        innerProperty - Codegen inner property of map or list
      • updatePropertyForMap

        protected void updatePropertyForMap​(CodegenProperty property,
                                            CodegenProperty innerProperty)
        Update property for map container
        Parameters:
        property - Codegen property
        innerProperty - Codegen inner property of map or list
      • isPropertyInnerMostEnum

        protected Boolean isPropertyInnerMostEnum​(CodegenProperty property)
        Update property for map container
        Parameters:
        property - Codegen property
        Returns:
        True if the inner most type is enum
      • updateDataTypeWithEnumForArray

        protected void updateDataTypeWithEnumForArray​(CodegenProperty property)
        Update datatypeWithEnum for array container
        Parameters:
        property - Codegen property
      • updateDataTypeWithEnumForMap

        protected void updateDataTypeWithEnumForMap​(CodegenProperty property)
        Update datatypeWithEnum for map container
        Parameters:
        property - Codegen property
      • setNonArrayMapProperty

        protected void setNonArrayMapProperty​(CodegenProperty property,
                                              String type)
      • findMethodResponse

        protected io.swagger.v3.oas.models.responses.ApiResponse findMethodResponse​(io.swagger.v3.oas.models.responses.ApiResponses responses)
        Override with any special handling of response codes
        Parameters:
        responses - OAS Operation's responses
        Returns:
        default method response or null if not found
      • handleMethodResponse

        protected void handleMethodResponse​(io.swagger.v3.oas.models.Operation operation,
                                            Map<String,​io.swagger.v3.oas.models.media.Schema> schemas,
                                            CodegenOperation op,
                                            io.swagger.v3.oas.models.responses.ApiResponse methodResponse)
        Set op's returnBaseType, returnType, examples etc.
        Parameters:
        operation - endpoint Operation
        schemas - a map of the schemas in the openapi spec
        op - endpoint CodegenOperation
        methodResponse - the default ApiResponse for the endpoint
      • handleMethodResponse

        protected void handleMethodResponse​(io.swagger.v3.oas.models.Operation operation,
                                            Map<String,​io.swagger.v3.oas.models.media.Schema> schemas,
                                            CodegenOperation op,
                                            io.swagger.v3.oas.models.responses.ApiResponse methodResponse,
                                            Map<String,​String> schemaMappings)
        Set op's returnBaseType, returnType, examples etc.
        Parameters:
        operation - endpoint Operation
        schemas - a map of the schemas in the openapi spec
        op - endpoint CodegenOperation
        methodResponse - the default ApiResponse for the endpoint
        schemaMappings - mappings of external types to be omitted by unaliasing
      • fromOperation

        public CodegenOperation fromOperation​(String path,
                                              String httpMethod,
                                              io.swagger.v3.oas.models.Operation operation,
                                              List<io.swagger.v3.oas.models.servers.Server> servers)
        Convert OAS Operation object to Codegen Operation object
        Specified by:
        fromOperation in interface CodegenConfig
        Parameters:
        httpMethod - HTTP method
        operation - OAS operation object
        path - the path of the operation
        servers - list of servers
        Returns:
        Codegen Operation object
      • fromResponse

        public CodegenResponse fromResponse​(String responseCode,
                                            io.swagger.v3.oas.models.responses.ApiResponse response)
        Convert OAS Response object to Codegen Response object
        Parameters:
        responseCode - HTTP response code
        response - OAS Response object
        Returns:
        Codegen Response object
      • fromCallback

        public CodegenCallback fromCallback​(String name,
                                            io.swagger.v3.oas.models.callbacks.Callback callback,
                                            List<io.swagger.v3.oas.models.servers.Server> servers)
        Convert OAS Callback object to Codegen Callback object
        Parameters:
        name - callback name
        callback - OAS Callback object
        servers - list of servers
        Returns:
        Codegen Response object
      • updateParameterForString

        protected void updateParameterForString​(CodegenParameter codegenParameter,
                                                io.swagger.v3.oas.models.media.Schema parameterSchema)
      • fromParameter

        public CodegenParameter fromParameter​(io.swagger.v3.oas.models.parameters.Parameter parameter,
                                              Set<String> imports)
        Convert OAS Parameter object to Codegen Parameter object
        Parameters:
        parameter - OAS parameter object
        imports - set of imports for library/package/module
        Returns:
        Codegen Parameter object
      • getParameterDataType

        protected String getParameterDataType​(io.swagger.v3.oas.models.parameters.Parameter parameter,
                                              io.swagger.v3.oas.models.media.Schema schema)
        Returns the data type of parameter. Returns null by default to use the CodegenProperty.datatype value
        Parameters:
        parameter - Parameter
        schema - Schema
        Returns:
        data type
      • isDataTypeBinary

        public boolean isDataTypeBinary​(String dataType)
      • isDataTypeFile

        public boolean isDataTypeFile​(String dataType)
      • fromSecurity

        public List<CodegenSecurity> fromSecurity​(Map<String,​io.swagger.v3.oas.models.security.SecurityScheme> securitySchemeMap)
        Convert map of OAS SecurityScheme objects to a list of Codegen Security objects
        Specified by:
        fromSecurity in interface CodegenConfig
        Parameters:
        securitySchemeMap - a map of OAS SecuritySchemeDefinition object
        Returns:
        a list of Codegen Security objects
      • setReservedWordsLowerCase

        protected void setReservedWordsLowerCase​(List<String> words)
      • isReservedWord

        protected boolean isReservedWord​(String word)
      • getOrGenerateOperationId

        protected String getOrGenerateOperationId​(io.swagger.v3.oas.models.Operation operation,
                                                  String path,
                                                  String httpMethod)
        Get operationId from the operation object, and if it's blank, generate a new one from the given parameters.
        Parameters:
        operation - the operation object
        path - the path of the operation
        httpMethod - the HTTP method of the operation
        Returns:
        the (generated) operationId
      • needToImport

        protected boolean needToImport​(String type)
        Check the type to see if it needs import the library/module/package
        Parameters:
        type - name of the type
        Returns:
        true if the library/module/package of the corresponding type needs to be imported
      • addHeaders

        protected void addHeaders​(io.swagger.v3.oas.models.responses.ApiResponse response,
                                  List<CodegenProperty> properties)
        Add headers to codegen property
        Parameters:
        response - API response
        properties - list of codegen property
      • addOperationToGroup

        public void addOperationToGroup​(String tag,
                                        String resourcePath,
                                        io.swagger.v3.oas.models.Operation operation,
                                        CodegenOperation co,
                                        Map<String,​List<CodegenOperation>> operations)
        Add operation to group
        Specified by:
        addOperationToGroup in interface CodegenConfig
        Parameters:
        tag - name of the tag
        resourcePath - path of the resource
        operation - OAS Operation object
        co - Codegen Operation object
        operations - map of Codegen operations
      • addParentContainer

        protected void addParentContainer​(CodegenModel model,
                                          String name,
                                          io.swagger.v3.oas.models.media.Schema schema)
        Sets the value of the 'model.parent' property in CodegenModel, based on the value of the 'additionalProperties' keyword. Some language generator use class inheritance to implement additional properties. For example, in Java the generated model class has 'extends HashMap' to represent the additional properties.

        TODO: it's not a good idea to use single class inheritance to implement additionalProperties. That may work for non-composed schemas, but that does not work for composed 'allOf' schemas. For example, in Java, if additionalProperties is set to true (which it should be by default, per OAS spec), then the generated code has extends HashMap. That wouldn't work for composed 'allOf' schemas.

        Parameters:
        model - the codegen representation of the OAS schema.
        name - the name of the model.
        schema - the input OAS schema.
      • addImports

        protected void addImports​(Set<String> importsToBeAddedTo,
                                  Set<String> importsToAdd)
      • addImport

        protected void addImport​(Set<String> importsToBeAddedTo,
                                 String type)
      • addImport

        protected void addImport​(io.swagger.v3.oas.models.media.ComposedSchema composed,
                                 io.swagger.v3.oas.models.media.Schema childSchema,
                                 CodegenModel model,
                                 String modelName)
        Add the model name of the child schema in a composed schema to the set of imports
        Parameters:
        composed - composed schema
        childSchema - composed schema
        model - codegen model
        modelName - model name
      • shouldAddImport

        protected boolean shouldAddImport​(String type)
      • unaliasPropertySchema

        protected Map<String,​io.swagger.v3.oas.models.media.Schema> unaliasPropertySchema​(Map<String,​io.swagger.v3.oas.models.media.Schema> properties)
        Loop through properties and unalias the reference if $ref (reference) is defined
        Parameters:
        properties - model properties (schemas)
        Returns:
        model properties with direct reference to schemas
      • addVars

        protected void addVars​(IJsonSchemaValidationProperties m,
                               List<CodegenProperty> vars,
                               Map<String,​io.swagger.v3.oas.models.media.Schema> properties,
                               Set<String> mandatory)
        Add variables (properties) to codegen model (list of properties, various flags, etc)
        Parameters:
        m - Must be an instance of IJsonSchemaValidationProperties, may be model or property...
        vars - list of codegen properties (e.g. vars, allVars) to be updated with the new properties
        properties - a map of properties (schema)
        mandatory - a set of required properties' name
      • addImportsForPropertyType

        protected void addImportsForPropertyType​(CodegenModel model,
                                                 CodegenProperty property)
        For a given property, adds all needed imports to the model This includes a flat property type (e.g. property type: ReferencedModel) as well as container type (property type: array of ReferencedModel's)
        Parameters:
        model - The codegen representation of the OAS schema.
        property - The codegen representation of the OAS schema's property.
      • removeNonNameElementToCamelCase

        public String removeNonNameElementToCamelCase​(String name)
        Remove characters not suitable for variable or method name from the input and camelize it
        Parameters:
        name - string to be camelize
        Returns:
        camelized string
      • removeNonNameElementToCamelCase

        protected String removeNonNameElementToCamelCase​(String name,
                                                         String nonNameElementPattern)
        Remove characters that is not good to be included in method name from the input and camelize it
        Parameters:
        name - string to be camelize
        nonNameElementPattern - a regex pattern of the characters that is not good to be included in name
        Returns:
        camelized string
      • apiDocFilename

        public String apiDocFilename​(String templateName,
                                     String tag)
        Return the full path and API documentation file
        Specified by:
        apiDocFilename in interface CodegenConfig
        Parameters:
        templateName - template name
        tag - tag
        Returns:
        the API documentation file name with full path
      • apiTestFilename

        public String apiTestFilename​(String templateName,
                                      String tag)
        Return the full path and API test file
        Specified by:
        apiTestFilename in interface CodegenConfig
        Parameters:
        templateName - template name
        tag - tag
        Returns:
        the API test file name with full path
      • getRemoveOperationIdPrefixDelimiter

        public String getRemoveOperationIdPrefixDelimiter()
      • setRemoveOperationIdPrefixDelimiter

        public void setRemoveOperationIdPrefixDelimiter​(String removeOperationIdPrefixDelimiter)
      • getRemoveOperationIdPrefixCount

        public int getRemoveOperationIdPrefixCount()
      • setRemoveOperationIdPrefixCount

        public void setRemoveOperationIdPrefixCount​(int removeOperationIdPrefixCount)
      • supportedLibraries

        public Map<String,​String> supportedLibraries()
        All library templates supported. (key: library name, value: library description)
        Specified by:
        supportedLibraries in interface CodegenConfig
        Returns:
        the supported libraries
      • setLibrary

        public void setLibrary​(String library)
        Set library template (sub-template).
        Specified by:
        setLibrary in interface CodegenConfig
        Parameters:
        library - Library template
      • getLibrary

        public String getLibrary()
        Library template (sub-template).
        Specified by:
        getLibrary in interface CodegenConfig
        Returns:
        Library template
      • isLibrary

        public final boolean isLibrary​(String library)
        check if current active library equals to passed
        Parameters:
        library - - library to be compared with
        Returns:
        true if passed library is active, false otherwise
      • setGitHost

        public void setGitHost​(String gitHost)
        Set Git host.
        Specified by:
        setGitHost in interface CodegenConfig
        Parameters:
        gitHost - Git host
      • setGitUserId

        public void setGitUserId​(String gitUserId)
        Set Git user ID.
        Specified by:
        setGitUserId in interface CodegenConfig
        Parameters:
        gitUserId - Git user ID
      • setGitRepoId

        public void setGitRepoId​(String gitRepoId)
        Set Git repo ID.
        Specified by:
        setGitRepoId in interface CodegenConfig
        Parameters:
        gitRepoId - Git repo ID
      • setReleaseNote

        public void setReleaseNote​(String releaseNote)
        Set release note.
        Specified by:
        setReleaseNote in interface CodegenConfig
        Parameters:
        releaseNote - Release note
      • getDocExtension

        public String getDocExtension()
        Documentation files extension
        Specified by:
        getDocExtension in interface CodegenConfig
        Returns:
        Documentation files extension
      • setDocExtension

        public void setDocExtension​(String userDocExtension)
        Set Documentation files extension
        Specified by:
        setDocExtension in interface CodegenConfig
        Parameters:
        userDocExtension - documentation files extension
      • setHttpUserAgent

        public void setHttpUserAgent​(String httpUserAgent)
        Set HTTP user agent.
        Specified by:
        setHttpUserAgent in interface CodegenConfig
        Parameters:
        httpUserAgent - HTTP user agent
      • sanitizeName

        public String sanitizeName​(String name)
        Sanitize name (parameter, property, method, etc)
        Specified by:
        sanitizeName in interface CodegenConfig
        Parameters:
        name - string to be sanitize
        Returns:
        sanitized string
      • sanitizeName

        public String sanitizeName​(String name,
                                   String removeCharRegEx)
        Sanitize name (parameter, property, method, etc)
        Parameters:
        name - string to be sanitize
        removeCharRegEx - a regex containing all char that will be removed
        Returns:
        sanitized string
      • sanitizeName

        public String sanitizeName​(String name,
                                   String removeCharRegEx,
                                   ArrayList<String> exceptionList)
        Sanitize name (parameter, property, method, etc)
        Parameters:
        name - string to be sanitize
        removeCharRegEx - a regex containing all char that will be removed
        exceptionList - a list of matches which should not be sanitized (i.e exception)
        Returns:
        sanitized string
      • setParameterBooleanFlagWithCodegenProperty

        public void setParameterBooleanFlagWithCodegenProperty​(CodegenParameter parameter,
                                                               CodegenProperty property)
        Set CodegenParameter boolean flag using CodegenProperty. NOTE: This is deprecated and can be removed in 6.0.0 This logic has been folded into the original call sites and long term will be moved into IJsonSchemaValidationProperties.setTypeProperties and overrides like updateModelForObject
        Parameters:
        parameter - Codegen Parameter
        property - Codegen property
      • updateCodegenPropertyEnum

        public void updateCodegenPropertyEnum​(CodegenProperty var)
        Update codegen property's enum by adding "enumVars" (with name and value)
        Parameters:
        var - list of CodegenProperty
      • getEnumDefaultValue

        protected String getEnumDefaultValue​(String defaultValue,
                                             String dataType)
      • addRegularExpressionDelimiter

        public String addRegularExpressionDelimiter​(String pattern)
        If the pattern misses the delimiter, add "/" to the beginning and end Otherwise, return the original pattern
        Parameters:
        pattern - the pattern (regular expression)
        Returns:
        the pattern with delimiter
      • convertPropertyToBooleanAndWriteBack

        public boolean convertPropertyToBooleanAndWriteBack​(String propertyKey)
        reads propertyKey from additionalProperties, converts it to a boolean and writes it back to additionalProperties to be usable as a boolean in mustache files.
        Parameters:
        propertyKey - property key
        Returns:
        property value as boolean
      • getIgnoreFilePathOverride

        public String getIgnoreFilePathOverride()
        Provides an override location, if any is specified, for the .openapi-generator-ignore.

        This is originally intended for the first generation only.

        Specified by:
        getIgnoreFilePathOverride in interface CodegenConfig
        Returns:
        a string of the full path to an override ignore file.
      • setIgnoreFilePathOverride

        public void setIgnoreFilePathOverride​(String ignoreFileOverride)
        Sets an override location for the '.openapi-generator-ignore' location for the first code generation.
        Specified by:
        setIgnoreFilePathOverride in interface CodegenConfig
        Parameters:
        ignoreFileOverride - The full path to an ignore file
      • convertPropertyToBoolean

        public boolean convertPropertyToBoolean​(String propertyKey)
      • writePropertyBack

        public void writePropertyBack​(String propertyKey,
                                      Object value)
      • getContentType

        protected String getContentType​(io.swagger.v3.oas.models.parameters.RequestBody requestBody)
      • getConsumesInfo

        public static Set<String> getConsumesInfo​(io.swagger.v3.oas.models.OpenAPI openAPI,
                                                  io.swagger.v3.oas.models.Operation operation)
      • hasFormParameter

        public boolean hasFormParameter​(io.swagger.v3.oas.models.OpenAPI openAPI,
                                        io.swagger.v3.oas.models.Operation operation)
      • hasBodyParameter

        public boolean hasBodyParameter​(io.swagger.v3.oas.models.OpenAPI openAPI,
                                        io.swagger.v3.oas.models.Operation operation)
      • getProducesInfo

        public static Set<String> getProducesInfo​(io.swagger.v3.oas.models.OpenAPI openAPI,
                                                  io.swagger.v3.oas.models.Operation operation)
        returns the list of MIME types the APIs can produce
        Parameters:
        openAPI - current specification instance
        operation - Operation
        Returns:
        a set of MIME types
      • getCollectionFormat

        protected String getCollectionFormat​(io.swagger.v3.oas.models.parameters.Parameter parameter)
      • fromRequestBodyToFormParameters

        public List<CodegenParameter> fromRequestBodyToFormParameters​(io.swagger.v3.oas.models.parameters.RequestBody body,
                                                                      Set<String> imports)
      • fromFormProperty

        public CodegenParameter fromFormProperty​(String name,
                                                 io.swagger.v3.oas.models.media.Schema propertySchema,
                                                 Set<String> imports)
      • addBodyModelSchema

        protected void addBodyModelSchema​(CodegenParameter codegenParameter,
                                          String name,
                                          io.swagger.v3.oas.models.media.Schema schema,
                                          Set<String> imports,
                                          String bodyParameterName,
                                          boolean forceSimpleRef)
      • updateRequestBodyForMap

        protected void updateRequestBodyForMap​(CodegenParameter codegenParameter,
                                               io.swagger.v3.oas.models.media.Schema schema,
                                               String name,
                                               Set<String> imports,
                                               String bodyParameterName)
      • updateRequestBodyForPrimitiveType

        protected void updateRequestBodyForPrimitiveType​(CodegenParameter codegenParameter,
                                                         io.swagger.v3.oas.models.media.Schema schema,
                                                         String bodyParameterName,
                                                         Set<String> imports)
      • updateRequestBodyForObject

        protected void updateRequestBodyForObject​(CodegenParameter codegenParameter,
                                                  io.swagger.v3.oas.models.media.Schema schema,
                                                  String name,
                                                  Set<String> imports,
                                                  String bodyParameterName)
      • updateRequestBodyForArray

        protected void updateRequestBodyForArray​(CodegenParameter codegenParameter,
                                                 io.swagger.v3.oas.models.media.Schema schema,
                                                 String name,
                                                 Set<String> imports,
                                                 String bodyParameterName)
      • updateRequestBodyForString

        protected void updateRequestBodyForString​(CodegenParameter codegenParameter,
                                                  io.swagger.v3.oas.models.media.Schema schema,
                                                  Set<String> imports,
                                                  String bodyParameterName)
      • toMediaTypeSchemaName

        protected String toMediaTypeSchemaName​(String contentType,
                                               String mediaTypeSchemaSuffix)
      • fromRequestBody

        public CodegenParameter fromRequestBody​(io.swagger.v3.oas.models.parameters.RequestBody body,
                                                Set<String> imports,
                                                String bodyParameterName)
      • addVarsRequiredVarsAdditionalProps

        protected void addVarsRequiredVarsAdditionalProps​(io.swagger.v3.oas.models.media.Schema schema,
                                                          IJsonSchemaValidationProperties property)
      • getItemsName

        protected String getItemsName​(io.swagger.v3.oas.models.media.Schema containingSchema,
                                      String containingSchemaName)
      • getAdditionalPropertiesName

        protected String getAdditionalPropertiesName()
      • addOption

        protected void addOption​(String key,
                                 String description,
                                 String defaultValue)
      • updateOption

        protected void updateOption​(String key,
                                    String defaultValue)
      • removeOption

        protected void removeOption​(String key)
      • addSwitch

        protected void addSwitch​(String key,
                                 String description,
                                 Boolean defaultValue)
      • generateJSONSpecFile

        protected void generateJSONSpecFile​(Map<String,​Object> objs)
        generates OpenAPI specification file in JSON format
        Parameters:
        objs - map of object
      • generateYAMLSpecFile

        public void generateYAMLSpecFile​(Map<String,​Object> objs)
        generates OpenAPI specification file in YAML format
        Parameters:
        objs - map of object
      • isDataTypeString

        public boolean isDataTypeString​(String dataType)
        checks if the data should be classified as "string" in enum e.g. double in C# needs to be double-quoted (e.g. "2.8") by treating it as a string In the future, we may rename this function to "isEnumString"
        Parameters:
        dataType - data type
        Returns:
        true if it's a enum string
      • postProcessFile

        public void postProcessFile​(File file,
                                    String fileType)
        Post-process the auto-generated file, e.g. using go-fmt to format the Go code. The file type can be "model-test", "model-doc", "model", "api", "api-test", "api-doc", "supporting-mustache", "supporting-common", "openapi-generator-ignore", "openapi-generator-version"

        TODO: store these values in enum instead

        Specified by:
        postProcessFile in interface CodegenConfig
        Parameters:
        file - file to be processed
        fileType - file type
      • isEnablePostProcessFile

        public boolean isEnablePostProcessFile()
        Boolean value indicating the state of the option for post-processing file using environment variables.
        Specified by:
        isEnablePostProcessFile in interface CodegenConfig
        Returns:
        true if the option is enabled
      • setEnablePostProcessFile

        public void setEnablePostProcessFile​(boolean enablePostProcessFile)
        Set the boolean value indicating the state of the option for post-processing file using environment variables.
        Specified by:
        setEnablePostProcessFile in interface CodegenConfig
        Parameters:
        enablePostProcessFile - true to enable post-processing file
      • isEnableMinimalUpdate

        public boolean isEnableMinimalUpdate()
        Get the boolean value indicating the state of the option for updating only changed files
        Specified by:
        isEnableMinimalUpdate in interface CodegenConfig
      • setEnableMinimalUpdate

        public void setEnableMinimalUpdate​(boolean enableMinimalUpdate)
        Set the boolean value indicating the state of the option for updating only changed files
        Specified by:
        setEnableMinimalUpdate in interface CodegenConfig
        Parameters:
        enableMinimalUpdate - true to enable minimal update
      • isStrictSpecBehavior

        public boolean isStrictSpecBehavior()
        Indicates whether the codegen configuration should treat documents as strictly defined by the OpenAPI specification.
        Specified by:
        isStrictSpecBehavior in interface CodegenConfig
        Returns:
        true to act strictly upon spec documents, potentially modifying the spec to strictly fit the spec.
      • setStrictSpecBehavior

        public void setStrictSpecBehavior​(boolean strictSpecBehavior)
        Sets the boolean valid indicating whether generation will work strictly against the specification, potentially making minor changes to the input document.
        Specified by:
        setStrictSpecBehavior in interface CodegenConfig
        Parameters:
        strictSpecBehavior - true if we will behave strictly, false to allow specification documents which pass validation to be loosely interpreted against the spec.
      • isRemoveEnumValuePrefix

        public boolean isRemoveEnumValuePrefix()
        Get the boolean value indicating whether to remove enum value prefixes
        Specified by:
        isRemoveEnumValuePrefix in interface CodegenConfig
      • setRemoveEnumValuePrefix

        public void setRemoveEnumValuePrefix​(boolean removeEnumValuePrefix)
        Set the boolean value indicating whether to remove enum value prefixes
        Specified by:
        setRemoveEnumValuePrefix in interface CodegenConfig
        Parameters:
        removeEnumValuePrefix - true to enable enum value prefix removal
      • addOneOfNameExtension

        public void addOneOfNameExtension​(io.swagger.v3.oas.models.media.ComposedSchema s,
                                          String name)
        Add "x-one-of-name" extension to a given oneOf schema (assuming it has at least 1 oneOf elements)
        Parameters:
        s - schema to add the extension to
        name - name of the parent oneOf schema
      • addOneOfInterfaceModel

        public void addOneOfInterfaceModel​(io.swagger.v3.oas.models.media.ComposedSchema cs,
                                           String type,
                                           io.swagger.v3.oas.models.OpenAPI openAPI)
        Add a given ComposedSchema as an interface model to be generated, assuming it has `oneOf` defined
        Parameters:
        cs - ComposedSchema object to create as interface model
        type - name to use for the generated interface model
        openAPI - OpenAPI spec that we are using
      • addImportsToOneOfInterface

        public void addImportsToOneOfInterface​(List<Map<String,​String>> imports)
      • isAnyTypeSchema

        public boolean isAnyTypeSchema​(io.swagger.v3.oas.models.media.Schema schema)
        This method has been kept to keep the introduction of ModelUtils.isAnyType as a non-breaking change this way, existing forks of our generator can continue to use this method TODO in 6.0.0 replace this method with ModelUtils.isAnyType Return true if the schema value can be any type, i.e. it can be the null value, integer, number, string, object or array. One use case is when the "type" attribute in the OAS schema is unspecified. Examples: arbitraryTypeValue: description: This is an arbitrary type schema. It is not a free-form object. The value can be any type except the 'null' value. arbitraryTypeNullableValue: description: This is an arbitrary type schema. It is not a free-form object. The value can be any type, including the 'null' value. nullable: true
        Parameters:
        schema - the OAS schema.
        Returns:
        true if the schema value can be an arbitrary type.
      • isFreeFormObject

        protected boolean isFreeFormObject​(io.swagger.v3.oas.models.media.Schema schema)
        Check to see if the schema is a free form object. A free form object is an object (i.e. 'type: object' in a OAS document) that: 1) Does not define properties, and 2) Is not a composed schema (no anyOf, oneOf, allOf), and 3) additionalproperties is not defined, or additionalproperties: true, or additionalproperties: {}. Examples: components: schemas: arbitraryObject: type: object description: This is a free-form object. The value must be a map of strings to values. The value cannot be 'null'. It cannot be array, string, integer, number. arbitraryNullableObject: type: object description: This is a free-form object. The value must be a map of strings to values. The value can be 'null', It cannot be array, string, integer, number. nullable: true arbitraryTypeValue: description: This is NOT a free-form object. The value can be any type except the 'null' value.
        Parameters:
        schema - potentially containing a '$ref'
        Returns:
        true if it's a free-form object
      • getAdditionalProperties

        protected io.swagger.v3.oas.models.media.Schema getAdditionalProperties​(io.swagger.v3.oas.models.media.Schema schema)
        Returns the additionalProperties Schema for the specified input schema.

        The additionalProperties keyword is used to control the handling of additional, undeclared properties, that is, properties whose names are not listed in the properties keyword. The additionalProperties keyword may be either a boolean or an object. If additionalProperties is a boolean and set to false, no additional properties are allowed. By default when the additionalProperties keyword is not specified in the input schema, any additional properties are allowed. This is equivalent to setting additionalProperties to the boolean value True or setting additionalProperties: {}

        Parameters:
        schema - the input schema that may or may not have the additionalProperties keyword.
        Returns:
        the Schema of the additionalProperties. The null value is returned if no additional properties are allowed.
      • isJsonMimeType

        protected static boolean isJsonMimeType​(String mime)
        Check if the given MIME is a JSON MIME. JSON MIME examples: application/json application/json; charset=UTF8 APPLICATION/JSON
        Parameters:
        mime - MIME string
        Returns:
        true if the input matches the JSON MIME
      • isJsonVendorMimeType

        protected static boolean isJsonVendorMimeType​(String mime)
        Check if the given MIME is a JSON Vendor MIME. JSON MIME examples: application/vnd.mycompany+json application/vnd.mycompany.resourceA.version1+json
        Parameters:
        mime - MIME string
        Returns:
        true if the input matches the JSON vendor MIME
      • getCollectionFormat

        protected String getCollectionFormat​(CodegenParameter codegenParameter)
        Builds OAPI 2.0 collectionFormat value based on style and explode values for the CodegenParameter.
        Parameters:
        codegenParameter - parameter
        Returns:
        string for a collectionFormat.
      • handleSpecialCharacters

        protected String handleSpecialCharacters​(String name)
      • getSchemaFromBooleanOrSchema

        protected io.swagger.v3.oas.models.media.Schema getSchemaFromBooleanOrSchema​(Object schema)
        Used to ensure that null or Schema is returned given an input Boolean/Schema/null This will be used in openapi 3.1.0 spec processing to ensure that Booleans become Schemas Because our generators only understand Schemas Note: use getIsBooleanSchemaTrue or getIsBooleanSchemaFalse on the IJsonSchemaValidationProperties if you need to be able to detect if the original schema's value was true or false
        Parameters:
        schema - the input Boolean or Schema data to convert to a Schema
        Returns:
        Schema the input data converted to a Schema if possible