Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Csharp] add nullable support to API client #2528

Merged
merged 3 commits into from
Mar 30, 2019
Merged

[Csharp] add nullable support to API client #2528

merged 3 commits into from
Mar 30, 2019

Conversation

drl-max
Copy link
Contributor

@drl-max drl-max commented Mar 27, 2019

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.4.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

Followed a similar pattern to how the new csharp-netcore generator handles nullable support. I added an additional testcase as well. It verifies that a property marked as not-nullable will not generate the nullable form of it's type. Also, I verify that types that don't support the nullable type shorthand aren't affected, ie. a string. Please let me know if this is sufficient or if there are other cases you'd like me to capture.

I did not provide any files for the CI because it appears only the csharp-dotnet2 client has files committed to the project. Please let me know if you'd like me to run the csharp-petstore-all script and commit everything that's generated.

I think this can resolve the client-side request for issue #2269 (@wing328, hopefully this helps! I also have a PR prepped for the server-side as well).

@jimschubert @mandrean - Please review and let me know if you have any feedback,

drl-max added 2 commits March 26, 2019 16:57
Overrode getNullableType method
Added non-nullable type varients to 'typeMapping' collection
Removed nullable type shorthand from api template
Set Integer property to not be nullable. Expect no '?' in baseType
Set String property to be nullable. Expect no '?' in baseType
@wing328
Copy link
Member

wing328 commented Mar 29, 2019

@drl-max thanks for the PR, which looks good to me. Can you also apply another fix (#1819) to the csharp generator in this PR?

@drl-max
Copy link
Contributor Author

drl-max commented Mar 29, 2019

@wing328 - Done! PR has been updated.

@@ -86,6 +86,18 @@ public CSharpClientCodegen() {

cliOptions.clear();

typeMapping.put("boolean", "bool");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I may move these type mapping to abstract C# code generator instead with another PR.

@wing328 wing328 merged commit f26d7bd into OpenAPITools:master Mar 30, 2019
@wing328 wing328 changed the title Csharp nullable support [Csharp] add nullable support to API client Mar 30, 2019
karismann added a commit to karismann/openapi-generator that referenced this pull request Mar 30, 2019
karismann added a commit to karismann/openapi-generator that referenced this pull request Mar 30, 2019
@karismann karismann mentioned this pull request Mar 30, 2019
3 tasks
karismann added a commit to karismann/openapi-generator that referenced this pull request Mar 30, 2019
wing328 pushed a commit that referenced this pull request Mar 30, 2019
* [csharp] update sample after #2528

* [csharp] update sample after #2528

* [csharp] update sample after #2528
jimschubert added a commit to jimschubert/openapi-generator that referenced this pull request Apr 1, 2019
* master: (48 commits)
  [Typescript AngularJS] fix Extra package prefix in api parameters operations (OpenAPITools#2522)
  OpenAPITools#1023 - [Scala] Use status family during response processing (OpenAPITools#1024)
  Generate setters for readonly properties in server code (OpenAPITools#1582)
  [JS] fix NPE for null string and improve Travis config file (OpenAPITools#2553)
  [elm] Update ISO 8601 library (fixes missing time zone designator) (OpenAPITools#2545)
  [csharp] update sample after OpenAPITools#2528 (OpenAPITools#2550)
  [JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (OpenAPITools#2511)
  Aspnetcore nullable support (OpenAPITools#2529)
  Csharp nullable support (OpenAPITools#2528)
  [C++] [Qt5] Add enum support for client and server (OpenAPITools#2339)
  Fixed typo in migration-from-swagger-codegen.md (OpenAPITools#2548)
  [TypeScript Client] fix install Aurelia + fix use deprecated function (OpenAPITools#2514)
  [KOTLIN] fix var name not correctly sanitized (OpenAPITools#2537)
  Update swagger-parser to '2.0.11-OpenAPITools.org-1' (OpenAPITools#2262)
  Add @karismann to Java and Kotlin technical committee (OpenAPITools#2542)
  Add GoDaddy to the list of companies using OpenAPI Generator (OpenAPITools#2541)
  [Kotlin SpringBoot Server] alternative: fix optional parameter not correctly declared in service (OpenAPITools#2539)
  improve indentation, update dependencies (OpenAPITools#2521)
  update kotlin spring samples
  [JAVA] Use specified data type in enum's fromValue instead of string (OpenAPITools#2347)
  ...
jimschubert added a commit that referenced this pull request Apr 2, 2019
* master: (133 commits)
  #2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536)
  remove emitDefaultValue option (#2559)
  fix EmitDefaultValue default vallue with false (#2558)
  Added API Key auth to rust-server (#2459)
  remove initialCaps and replace with camelize (#2546)
  Add packageName configuration to maven (#2429)
  [Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522)
  #1023 - [Scala] Use status family during response processing (#1024)
  Generate setters for readonly properties in server code (#1582)
  [JS] fix NPE for null string and improve Travis config file (#2553)
  [elm] Update ISO 8601 library (fixes missing time zone designator) (#2545)
  [csharp] update sample after #2528 (#2550)
  [JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511)
  Aspnetcore nullable support (#2529)
  Csharp nullable support (#2528)
  [C++] [Qt5] Add enum support for client and server (#2339)
  Fixed typo in migration-from-swagger-codegen.md (#2548)
  [TypeScript Client] fix install Aurelia + fix use deprecated function (#2514)
  [KOTLIN] fix var name not correctly sanitized (#2537)
  Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants