support array of Dates encoding/decoding
This commit is contained in:
parent
fc7312aec1
commit
8ca770db9d
2
pom.xml
2
pom.xml
|
|
@ -5,7 +5,7 @@
|
|||
<artifactId>TINetworking-swagger-codegen</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>TINetworking-swagger-codegen</name>
|
||||
<version>1.1.6</version>
|
||||
<version>1.1.7</version>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
|
|
|
|||
|
|
@ -662,21 +662,30 @@ public class TINetworkingCodegen extends DefaultCodegenConfig {
|
|||
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
|
||||
super.postProcessModelProperty(model, property);
|
||||
|
||||
Map<String, Object> vendorExtensions = property.getVendorExtensions();
|
||||
|
||||
boolean containsCustomDateFormat = vendorExtensions.containsKey(TINetworkingCodegenConstants.DATE_FORMAT);
|
||||
|
||||
if (typeAliases.containsKey(property.baseType)) {
|
||||
Schema resolvedPropertySchema = getOpenAPI().getComponents().getSchemas().get(property.datatype);
|
||||
|
||||
postProcessAliasProperty(property, resolvedPropertySchema);
|
||||
}
|
||||
|
||||
if (property.getIsDate()
|
||||
|| property.getIsDateTime()
|
||||
&& !containsCustomDateFormat) {
|
||||
updateVendorExtensionsForProperty(property);
|
||||
|
||||
if (property.getIsListContainer()) {
|
||||
updateVendorExtensionsForProperty(property.items);
|
||||
}
|
||||
|
||||
if (property.getIsObject() && isReservedWord(property.getDatatype())) {
|
||||
property.datatype = escapeReservedTypeDeclaration(property.getDatatype());
|
||||
property.datatypeWithEnum = property.datatype;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVendorExtensionsForProperty(CodegenProperty property) {
|
||||
Map<String, Object> vendorExtensions = property.getVendorExtensions();
|
||||
|
||||
if (isISO8601DateProperty(property)) {
|
||||
vendorExtensions.put(TINetworkingCodegenConstants.IS_ISO8601_DATE, true);
|
||||
} else if (containsCustomDateFormat) {
|
||||
} else if (isCustomDateFormatProperty(property)) {
|
||||
String customDateFormat = (String) vendorExtensions.get(TINetworkingCodegenConstants.DATE_FORMAT);
|
||||
String dateFormatName = customDateFormat.replace(".", "_")
|
||||
.replaceAll("[^A-Za-z0-9_]", "");
|
||||
|
|
@ -684,11 +693,6 @@ public class TINetworkingCodegen extends DefaultCodegenConfig {
|
|||
|
||||
allCustomDateFormats.put(dateFormatName, customDateFormat);
|
||||
}
|
||||
|
||||
if (property.getIsObject() && isReservedWord(property.getDatatype())) {
|
||||
property.datatype = escapeReservedTypeDeclaration(property.getDatatype());
|
||||
property.datatypeWithEnum = property.datatype;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -771,5 +775,15 @@ public class TINetworkingCodegen extends DefaultCodegenConfig {
|
|||
propertyExtensions.put(CodegenConstants.IS_DATE_TIME_EXT_NAME, Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isISO8601DateProperty(CodegenProperty property) {
|
||||
return property.getIsDate()
|
||||
|| property.getIsDateTime()
|
||||
&& !isCustomDateFormatProperty(property);
|
||||
}
|
||||
|
||||
private boolean isCustomDateFormatProperty(CodegenProperty property) {
|
||||
return property.getVendorExtensions().containsKey(TINetworkingCodegenConstants.DATE_FORMAT);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,15 @@ public {{#useModelClasses}}class{{/useModelClasses}}{{^useModelClasses}}struct{{
|
|||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
{{#allVars}}
|
||||
{{#if isListContainer}}
|
||||
{{#if items.vendorExtensions.x-codegen-is-iso8601-date}}
|
||||
{{name}} = try container.decodeDates(forKey: .{{name}}, userInfo: decoder.userInfo, options: .{{#items.isDate}}withFullDate{{/items.isDate}}{{#items.isDateTime}}withInternetDateTime{{/items.isDateTime}}{{^required}}, required: false{{/required}})
|
||||
{{else if items.vendorExtensions.x-custom-date-format}}
|
||||
{{name}} = try container.decodeDates(forKey: .{{name}}, userInfo: decoder.userInfo, dateFormat: APIDateFormat.{{items.vendorExtensions.x-codegen-date-format-name}}{{^required}}, required: false{{/required}})
|
||||
{{else}}
|
||||
{{name}} = try container.decode({{{datatypeWithEnum}}}{{^required}}?{{/required}}.self, forKey: .{{name}}{{^required}}, required: false{{/required}})
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#if vendorExtensions.x-codegen-is-iso8601-date}}
|
||||
{{name}} = try container.decodeDate(forKey: .{{name}}, userInfo: decoder.userInfo, options: .{{#isDate}}withFullDate{{/isDate}}{{#isDateTime}}withInternetDateTime{{/isDateTime}}{{^required}}, required: false{{/required}})
|
||||
{{else if vendorExtensions.x-custom-date-format}}
|
||||
|
|
@ -42,6 +51,7 @@ public {{#useModelClasses}}class{{/useModelClasses}}{{^useModelClasses}}struct{{
|
|||
{{else}}
|
||||
{{name}} = try container.decode({{{datatypeWithEnum}}}{{^required}}?{{/required}}.self, forKey: .{{name}}{{^required}}, required: false{{/required}})
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/allVars}}
|
||||
}
|
||||
|
||||
|
|
@ -49,6 +59,15 @@ public {{#useModelClasses}}class{{/useModelClasses}}{{^useModelClasses}}struct{{
|
|||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
|
||||
{{#allVars}}
|
||||
{{#if isListContainer}}
|
||||
{{#if items.vendorExtensions.x-codegen-is-iso8601-date}}
|
||||
try container.encode(dates: {{name}}, forKey: .{{name}}, userInfo: encoder.userInfo, options: .{{#items.isDate}}withFullDate{{/items.isDate}}{{#isDateTime}}withInternetDateTime{{/isDateTime}}{{^required}}, required: false{{/required}})
|
||||
{{else if items.vendorExtensions.x-custom-date-format}}
|
||||
try container.encode(dates: {{name}}, forKey: .{{name}}, userInfo: encoder.userInfo, dateFormat: APIDateFormat.{{vendorExtensions.x-codegen-date-format-name}}{{^required}}, required: false{{/required}})
|
||||
{{else}}
|
||||
try container.encode({{name}}, forKey: .{{name}}{{^required}}, required: false{{/required}})
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#if vendorExtensions.x-codegen-is-iso8601-date}}
|
||||
try container.encode(date: {{name}}, forKey: .{{name}}, userInfo: encoder.userInfo, options: .{{#isDate}}withFullDate{{/isDate}}{{#isDateTime}}withInternetDateTime{{/isDateTime}}{{^required}}, required: false{{/required}})
|
||||
{{else if vendorExtensions.x-custom-date-format}}
|
||||
|
|
@ -56,6 +75,7 @@ public {{#useModelClasses}}class{{/useModelClasses}}{{^useModelClasses}}struct{{
|
|||
{{else}}
|
||||
try container.encode({{name}}, forKey: .{{name}}{{^required}}, required: false{{/required}})
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/allVars}}
|
||||
}
|
||||
{{/hasVars}}
|
||||
|
|
|
|||
Loading…
Reference in New Issue