From ebe090572f466f418d0561f2155b725af8e5e9bf Mon Sep 17 00:00:00 2001 From: John Hancock Date: Wed, 6 Jan 2016 20:02:43 -0500 Subject: [PATCH] CSharp: add support for DateTimeOffset and sourceFolder configuration options Adds option to use DateTimeOffset to model datetime fields instead of DateTime to allow preservation of timezone information. Modifies ApiClient.ParameterToString to support DateTimeOffset. Also adds sourceFolder option. --- .../languages/CSharpClientCodegen.java | 60 +++++++++---------- .../csharp/CSharpClientOptionsTest.java | 9 ++- .../options/CSharpClientOptionsProvider.java | 6 +- 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java index b68efe4fff9..322729ac8c0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java @@ -25,7 +25,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class); protected boolean optionalAssemblyInfoFlag = true; protected boolean optionalMethodArgumentFlag = true; - protected boolean useDateTimeOffsetFlag = false; + protected boolean useDateTimeOffsetFlag = false; protected String packageTitle = "Swagger Library"; protected String packageProductName = "SwaggerLibrary"; protected String packageDescription = "A library generated from a Swagger doc"; @@ -77,7 +77,7 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig "List", "Dictionary", "DateTime?", - "DateTimeOffset?", + "DateTimeOffset?", "String", "Boolean", "Double", @@ -116,8 +116,8 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig "e.g. void square(int x=10) (.net 4.0+ only).")); cliOptions.add(CliOption.newBoolean(CodegenConstants.OPTIONAL_ASSEMBLY_INFO, 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)); + 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 @@ -130,14 +130,14 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig 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.SOURCE_FOLDER)){ + setSourceFolder((String) additionalProperties.get(CodegenConstants.SOURCE_FOLDER)); + } + else + { + additionalProperties.put(CodegenConstants.SOURCE_FOLDER, this.sourceFolder); + } + if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); apiPackage = packageName + ".Api"; @@ -147,13 +147,13 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig 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); - + // 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); // Add properties used by AssemblyInfo.mustache @@ -339,15 +339,15 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig this.optionalMethodArgumentFlag = flag; } - public void useDateTimeOffset(boolean flag) { - this.useDateTimeOffsetFlag = flag; - if (flag) - typeMapping.put("datetime", "DateTimeOffset?"); - else - typeMapping.put("datetime", "DateTime?"); + public void useDateTimeOffset(boolean flag) { + this.useDateTimeOffsetFlag = flag; + if (flag) + typeMapping.put("datetime", "DateTimeOffset?"); + else + typeMapping.put("datetime", "DateTime?"); } - + public void setPackageName(String packageName) { this.packageName = packageName; } @@ -356,10 +356,10 @@ public class CSharpClientCodegen extends DefaultCodegen implements CodegenConfig this.packageVersion = packageVersion; } - public void setSourceFolder(String sourceFolder) { - this.sourceFolder = sourceFolder; - } - + public void setSourceFolder(String sourceFolder) { + this.sourceFolder = sourceFolder; + } + @Override public Map postProcessModels(Map objs) { List models = (List) objs.get("models"); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java index c0cd6a6e9c8..367977e2b05 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpClientOptionsTest.java @@ -33,11 +33,10 @@ public class CSharpClientOptionsTest extends AbstractOptionsTest { times = 1; clientCodegen.setOptionalAssemblyInfoFlag(true); times = 1; - - clientCodegen.setSourceFolder(CSharpClientOptionsProvider.SOURCE_FOLDER_VALUE); - times = 1; - clientCodegen.useDateTimeOffset(true); - times = 1; + clientCodegen.setSourceFolder(CSharpClientOptionsProvider.SOURCE_FOLDER_VALUE); + times = 1; + clientCodegen.useDateTimeOffset(true); + times = 1; }}; } } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java index 6e3b14c580d..0c2da1f3fa2 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/CSharpClientOptionsProvider.java @@ -9,7 +9,7 @@ import java.util.Map; public class CSharpClientOptionsProvider implements OptionsProvider { 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 SOURCE_FOLDER_VALUE = "src_csharp"; + public static final String SOURCE_FOLDER_VALUE = "src_csharp"; @Override public String getLanguage() { @@ -24,8 +24,8 @@ public class CSharpClientOptionsProvider implements OptionsProvider { .put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, "true") .put(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "true") .put(CodegenConstants.OPTIONAL_ASSEMBLY_INFO, "true") - .put(CodegenConstants.USE_DATETIME_OFFSET, "true") - .put(CodegenConstants.SOURCE_FOLDER, SOURCE_FOLDER_VALUE) + .put(CodegenConstants.USE_DATETIME_OFFSET, "true") + .put(CodegenConstants.SOURCE_FOLDER, SOURCE_FOLDER_VALUE) .build(); }