forked from loafle/openapi-generator-original
[swift5] Make it possible to opt out of JSONEncodable conformance (#12664)
* Make it possible to opt out of JSONEncodable conformance JSONEncodable is not a native type and does not exist if only models are generated. * Match file indentation level
This commit is contained in:
parent
012f90895f
commit
b1ea0f3af3
@ -53,6 +53,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
|||||||
|swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null|
|
|swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null|
|
||||||
|useBacktickEscapes|Escape reserved words using backticks (default: false)| |false|
|
|useBacktickEscapes|Escape reserved words using backticks (default: false)| |false|
|
||||||
|useClasses|Use final classes for models instead of structs (default: false)| |false|
|
|useClasses|Use final classes for models instead of structs (default: false)| |false|
|
||||||
|
|useJsonEncodable|Make models conform to JSONEncodable protocol (default: true)| |true|
|
||||||
|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null|
|
|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null|
|
||||||
|
|
||||||
## IMPORT MAPPING
|
## IMPORT MAPPING
|
||||||
|
@ -70,6 +70,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes";
|
public static final String USE_BACKTICK_ESCAPES = "useBacktickEscapes";
|
||||||
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties";
|
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties";
|
||||||
public static final String HASHABLE_MODELS = "hashableModels";
|
public static final String HASHABLE_MODELS = "hashableModels";
|
||||||
|
public static final String USE_JSON_ENCODABLE = "useJsonEncodable";
|
||||||
public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData";
|
public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData";
|
||||||
protected static final String LIBRARY_ALAMOFIRE = "alamofire";
|
protected static final String LIBRARY_ALAMOFIRE = "alamofire";
|
||||||
protected static final String LIBRARY_URLSESSION = "urlsession";
|
protected static final String LIBRARY_URLSESSION = "urlsession";
|
||||||
@ -93,6 +94,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
protected boolean useBacktickEscapes = false;
|
protected boolean useBacktickEscapes = false;
|
||||||
protected boolean generateModelAdditionalProperties = true;
|
protected boolean generateModelAdditionalProperties = true;
|
||||||
protected boolean hashableModels = true;
|
protected boolean hashableModels = true;
|
||||||
|
protected boolean useJsonEncodable = true;
|
||||||
protected boolean mapFileBinaryToData = false;
|
protected boolean mapFileBinaryToData = false;
|
||||||
protected String[] responseAs = new String[0];
|
protected String[] responseAs = new String[0];
|
||||||
protected String sourceFolder = swiftPackagePath;
|
protected String sourceFolder = swiftPackagePath;
|
||||||
@ -299,6 +301,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
"Make hashable models (default: true)")
|
"Make hashable models (default: true)")
|
||||||
.defaultValue(Boolean.TRUE.toString()));
|
.defaultValue(Boolean.TRUE.toString()));
|
||||||
|
|
||||||
|
cliOptions.add(new CliOption(USE_JSON_ENCODABLE,
|
||||||
|
"Make models conform to JSONEncodable protocol (default: true)")
|
||||||
|
.defaultValue(Boolean.TRUE.toString()));
|
||||||
|
|
||||||
cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA,
|
cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA,
|
||||||
"[WARNING] This option will be removed and enabled by default in the future once we've enhanced the code to work with `Data` in all the different situations. Map File and Binary to Data (default: false)")
|
"[WARNING] This option will be removed and enabled by default in the future once we've enhanced the code to work with `Data` in all the different situations. Map File and Binary to Data (default: false)")
|
||||||
.defaultValue(Boolean.FALSE.toString()));
|
.defaultValue(Boolean.FALSE.toString()));
|
||||||
@ -497,6 +503,11 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
}
|
}
|
||||||
additionalProperties.put(HASHABLE_MODELS, hashableModels);
|
additionalProperties.put(HASHABLE_MODELS, hashableModels);
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(USE_JSON_ENCODABLE)) {
|
||||||
|
setUseJsonEncodable(convertPropertyToBooleanAndWriteBack(USE_JSON_ENCODABLE));
|
||||||
|
}
|
||||||
|
additionalProperties.put(USE_JSON_ENCODABLE, useJsonEncodable);
|
||||||
|
|
||||||
if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_DATA)) {
|
if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_DATA)) {
|
||||||
setMapFileBinaryToData(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_DATA));
|
setMapFileBinaryToData(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_DATA));
|
||||||
}
|
}
|
||||||
@ -953,6 +964,10 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
this.hashableModels = hashableModels;
|
this.hashableModels = hashableModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUseJsonEncodable(boolean useJsonEncodable) {
|
||||||
|
this.useJsonEncodable = useJsonEncodable;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toEnumValue(String value, String datatype) {
|
public String toEnumValue(String value, String datatype) {
|
||||||
// for string, array of string
|
// for string, array of string
|
||||||
@ -995,7 +1010,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
if (getSymbolName(name) != null) {
|
if (getSymbolName(name) != null) {
|
||||||
return camelize(WordUtils.capitalizeFully(getSymbolName(name).toUpperCase(Locale.ROOT)), true);
|
return camelize(WordUtils.capitalizeFully(getSymbolName(name).toUpperCase(Locale.ROOT)), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Camelize only when we have a structure defined below
|
// Camelize only when we have a structure defined below
|
||||||
Boolean camelized = false;
|
Boolean camelized = false;
|
||||||
if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) {
|
if (name.matches("[A-Z][a-z0-9]+[a-zA-Z0-9]*")) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable, JSONEncodable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
|
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#useJsonEncodable}}, JSONEncodable{{/useJsonEncodable}}{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
|
||||||
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable, JSONEncodable {
|
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#useJsonEncodable}}, JSONEncodable{{/useJsonEncodable}} {
|
||||||
{{/objcCompatible}}
|
{{/objcCompatible}}
|
||||||
|
|
||||||
{{#allVars}}
|
{{#allVars}}
|
||||||
|
@ -50,6 +50,7 @@ public class Swift5OptionsProvider implements OptionsProvider {
|
|||||||
public static final String USE_BACKTICKS_ESCAPES_VALUE = "false";
|
public static final String USE_BACKTICKS_ESCAPES_VALUE = "false";
|
||||||
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true";
|
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true";
|
||||||
public static final String HASHABLE_MODELS_VALUE = "true";
|
public static final String HASHABLE_MODELS_VALUE = "true";
|
||||||
|
public static final String USE_JSON_ENCODABLE_VALUE = "true";
|
||||||
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";
|
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";
|
||||||
public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true";
|
public static final String PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = "true";
|
||||||
public static final String LIBRARY_VALUE = "alamofire";
|
public static final String LIBRARY_VALUE = "alamofire";
|
||||||
@ -98,6 +99,7 @@ public class Swift5OptionsProvider implements OptionsProvider {
|
|||||||
.put(Swift5ClientCodegen.SWIFT_PACKAGE_PATH, SWIFT_PACKAGE_PATH_VALUE)
|
.put(Swift5ClientCodegen.SWIFT_PACKAGE_PATH, SWIFT_PACKAGE_PATH_VALUE)
|
||||||
.put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE)
|
.put(Swift5ClientCodegen.GENERATE_MODEL_ADDITIONAL_PROPERTIES, GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE)
|
||||||
.put(Swift5ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE)
|
.put(Swift5ClientCodegen.HASHABLE_MODELS, HASHABLE_MODELS_VALUE)
|
||||||
|
.put(Swift5ClientCodegen.USE_JSON_ENCODABLE, USE_JSON_ENCODABLE_VALUE)
|
||||||
.put(Swift5ClientCodegen.MAP_FILE_BINARY_TO_DATA, "false")
|
.put(Swift5ClientCodegen.MAP_FILE_BINARY_TO_DATA, "false")
|
||||||
.put(Swift5ClientCodegen.USE_CLASSES, "false")
|
.put(Swift5ClientCodegen.USE_CLASSES, "false")
|
||||||
.put(CodegenConstants.ENUM_UNKNOWN_DEFAULT_CASE, ENUM_UNKNOWN_DEFAULT_CASE_VALUE)
|
.put(CodegenConstants.ENUM_UNKNOWN_DEFAULT_CASE, ENUM_UNKNOWN_DEFAULT_CASE_VALUE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user