forked from loafle/openapi-generator-original
Merge pull request #1859 from jhancock93/datetimeoffset2
CSharp client: Add support for DateTimeOffset and sourceFolder configuration.
This commit is contained in:
commit
ed2cb1d2e4
@ -46,6 +46,9 @@ public class CodegenConstants {
|
|||||||
public static final String SORT_PARAMS_BY_REQUIRED_FLAG = "sortParamsByRequiredFlag";
|
public static final String SORT_PARAMS_BY_REQUIRED_FLAG = "sortParamsByRequiredFlag";
|
||||||
public static final String SORT_PARAMS_BY_REQUIRED_FLAG_DESC = "Sort method arguments to place required parameters before optional parameters.";
|
public static final String SORT_PARAMS_BY_REQUIRED_FLAG_DESC = "Sort method arguments to place required parameters before optional parameters.";
|
||||||
|
|
||||||
|
public static final String USE_DATETIME_OFFSET = "useDateTimeOffset";
|
||||||
|
public static final String USE_DATETIME_OFFSET_DESC = "Use DateTimeOffset to model date-time properties";
|
||||||
|
|
||||||
public static final String ENSURE_UNIQUE_PARAMS = "ensureUniqueParams";
|
public static final String ENSURE_UNIQUE_PARAMS = "ensureUniqueParams";
|
||||||
public static final String ENSURE_UNIQUE_PARAMS_DESC = "Whether to ensure parameter names are unique in an operation (rename parameters that are not).";
|
public static final String ENSURE_UNIQUE_PARAMS_DESC = "Whether to ensure parameter names are unique in an operation (rename parameters that are not).";
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class);
|
||||||
protected boolean optionalAssemblyInfoFlag = true;
|
protected boolean optionalAssemblyInfoFlag = true;
|
||||||
protected boolean optionalMethodArgumentFlag = true;
|
protected boolean optionalMethodArgumentFlag = true;
|
||||||
|
protected boolean useDateTimeOffsetFlag = false;
|
||||||
protected String packageTitle = "Swagger Library";
|
protected String packageTitle = "Swagger Library";
|
||||||
protected String packageProductName = "SwaggerLibrary";
|
protected String packageProductName = "SwaggerLibrary";
|
||||||
protected String packageDescription = "A library generated from a Swagger doc";
|
protected String packageDescription = "A library generated from a Swagger doc";
|
||||||
@ -76,6 +77,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
"List",
|
"List",
|
||||||
"Dictionary",
|
"Dictionary",
|
||||||
"DateTime?",
|
"DateTime?",
|
||||||
|
"DateTimeOffset?",
|
||||||
"String",
|
"String",
|
||||||
"Boolean",
|
"Boolean",
|
||||||
"Double",
|
"Double",
|
||||||
@ -114,6 +116,8 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
"e.g. void square(int x=10) (.net 4.0+ only)."));
|
"e.g. void square(int x=10) (.net 4.0+ only)."));
|
||||||
cliOptions.add(CliOption.newBoolean(CodegenConstants.OPTIONAL_ASSEMBLY_INFO,
|
cliOptions.add(CliOption.newBoolean(CodegenConstants.OPTIONAL_ASSEMBLY_INFO,
|
||||||
CodegenConstants.OPTIONAL_ASSEMBLY_INFO_DESC).defaultValue(Boolean.TRUE.toString()));
|
CodegenConstants.OPTIONAL_ASSEMBLY_INFO_DESC).defaultValue(Boolean.TRUE.toString()));
|
||||||
|
cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC).defaultValue(sourceFolder));
|
||||||
|
cliOptions.add(CliOption.newBoolean(CodegenConstants.USE_DATETIME_OFFSET, CodegenConstants.USE_DATETIME_OFFSET_DESC));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -126,6 +130,14 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
additionalProperties.put(CodegenConstants.PACKAGE_VERSION, packageVersion);
|
additionalProperties.put(CodegenConstants.PACKAGE_VERSION, packageVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(CodegenConstants.SOURCE_FOLDER)){
|
||||||
|
setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
additionalProperties.put(CodegenConstants.SOURCE_FOLDER, this.sourceFolder);
|
||||||
|
}
|
||||||
|
|
||||||
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
|
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
|
||||||
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
|
setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME));
|
||||||
apiPackage = packageName + ".Api";
|
apiPackage = packageName + ".Api";
|
||||||
@ -135,6 +147,13 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName);
|
additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use DateTimeOffset
|
||||||
|
if (additionalProperties.containsKey(CodegenConstants.USE_DATETIME_OFFSET))
|
||||||
|
{
|
||||||
|
useDateTimeOffset(Boolean.valueOf(additionalProperties.get(CodegenConstants.USE_DATETIME_OFFSET).toString()));
|
||||||
|
}
|
||||||
|
additionalProperties.put(CodegenConstants.USE_DATETIME_OFFSET, useDateTimeOffsetFlag);
|
||||||
|
|
||||||
additionalProperties.put("clientPackage", clientPackage);
|
additionalProperties.put("clientPackage", clientPackage);
|
||||||
|
|
||||||
// Add properties used by AssemblyInfo.mustache
|
// Add properties used by AssemblyInfo.mustache
|
||||||
@ -320,6 +339,15 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
this.optionalMethodArgumentFlag = flag;
|
this.optionalMethodArgumentFlag = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void useDateTimeOffset(boolean flag) {
|
||||||
|
this.useDateTimeOffsetFlag = flag;
|
||||||
|
if (flag)
|
||||||
|
typeMapping.put("datetime", "DateTimeOffset?");
|
||||||
|
else
|
||||||
|
typeMapping.put("datetime", "DateTime?");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setPackageName(String packageName) {
|
public void setPackageName(String packageName) {
|
||||||
this.packageName = packageName;
|
this.packageName = packageName;
|
||||||
}
|
}
|
||||||
@ -328,6 +356,10 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
this.packageVersion = packageVersion;
|
this.packageVersion = packageVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSourceFolder(String sourceFolder) {
|
||||||
|
this.sourceFolder = sourceFolder;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
|
||||||
List<Object> models = (List<Object>) objs.get("models");
|
List<Object> models = (List<Object>) objs.get("models");
|
||||||
|
@ -194,6 +194,12 @@ namespace {{packageName}}.Client
|
|||||||
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
|
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
|
||||||
// For example: 2009-06-15T13:45:30.0000000
|
// For example: 2009-06-15T13:45:30.0000000
|
||||||
return ((DateTime)obj).ToString (Configuration.DateTimeFormat);
|
return ((DateTime)obj).ToString (Configuration.DateTimeFormat);
|
||||||
|
else if (obj is DateTimeOffset)
|
||||||
|
// Return a formatted date string - Can be customized with Configuration.DateTimeFormat
|
||||||
|
// Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
|
||||||
|
// https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
|
||||||
|
// For example: 2009-06-15T13:45:30.0000000
|
||||||
|
return ((DateTimeOffset)obj).ToString (Configuration.DateTimeFormat);
|
||||||
else if (obj is IList)
|
else if (obj is IList)
|
||||||
{
|
{
|
||||||
var flattenedString = new StringBuilder();
|
var flattenedString = new StringBuilder();
|
||||||
|
@ -33,7 +33,10 @@ public class CSharpClientOptionsTest extends AbstractOptionsTest {
|
|||||||
times = 1;
|
times = 1;
|
||||||
clientCodegen.setOptionalAssemblyInfoFlag(true);
|
clientCodegen.setOptionalAssemblyInfoFlag(true);
|
||||||
times = 1;
|
times = 1;
|
||||||
|
clientCodegen.setSourceFolder(CSharpClientOptionsProvider.SOURCE_FOLDER_VALUE);
|
||||||
|
times = 1;
|
||||||
|
clientCodegen.useDateTimeOffset(true);
|
||||||
|
times = 1;
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,8 @@ import java.util.Map;
|
|||||||
public class CSharpClientOptionsProvider implements OptionsProvider {
|
public class CSharpClientOptionsProvider implements OptionsProvider {
|
||||||
public static final String PACKAGE_NAME_VALUE = "swagger_client_csharp";
|
public static final String PACKAGE_NAME_VALUE = "swagger_client_csharp";
|
||||||
public static final String PACKAGE_VERSION_VALUE = "1.0.0-SNAPSHOT";
|
public static final String PACKAGE_VERSION_VALUE = "1.0.0-SNAPSHOT";
|
||||||
|
public static final String SOURCE_FOLDER_VALUE = "src_csharp";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getLanguage() {
|
public String getLanguage() {
|
||||||
return "csharp";
|
return "csharp";
|
||||||
@ -23,6 +24,8 @@ public class CSharpClientOptionsProvider implements OptionsProvider {
|
|||||||
.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, "true")
|
.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, "true")
|
||||||
.put(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "true")
|
.put(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "true")
|
||||||
.put(CodegenConstants.OPTIONAL_ASSEMBLY_INFO, "true")
|
.put(CodegenConstants.OPTIONAL_ASSEMBLY_INFO, "true")
|
||||||
|
.put(CodegenConstants.USE_DATETIME_OFFSET, "true")
|
||||||
|
.put(CodegenConstants.SOURCE_FOLDER, SOURCE_FOLDER_VALUE)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace SwaggerClientTest.TestApiClient
|
|||||||
{
|
{
|
||||||
ApiClient api = new ApiClient ();
|
ApiClient api = new ApiClient ();
|
||||||
// test datetime with a time zone
|
// test datetime with a time zone
|
||||||
DateTime dateWithTz = DateTime.Parse("2008-04-10T13:30:00.0000000-04:00", null, System.Globalization.DateTimeStyles.RoundtripKind);
|
DateTimeOffset dateWithTz = DateTimeOffset.Parse("2008-04-10T13:30:00.0000000-04:00", null, System.Globalization.DateTimeStyles.RoundtripKind);
|
||||||
Assert.AreEqual("2008-04-10T13:30:00.0000000-04:00", api.ParameterToString(dateWithTz));
|
Assert.AreEqual("2008-04-10T13:30:00.0000000-04:00", api.ParameterToString(dateWithTz));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user