Commit Graph

306 Commits

Author SHA1 Message Date
manuc66
b06ccec11e [csharp] Update JsonSubTypes to 1.1.3 and use nuget dependency (#6969)
* the result I want to obtain

* add csharp-petstore-net-40.bat for windows

* just ran bin\windows\csharp-petstore-all.bat

* Removed those directories:
- samples\client\petstore\csharp
- samples\client\petstore\csharp-dotnet2

then ran :
bin\windows\csharp-petstore-all.bat

* - update JsonSubTypes to 1.1.3 by using nuget dependency (the package is compatible with net40)
- allign all version of Newtonsoft.Json to 10.0.3

* the result of bin\windows\csharp-petstore-all.bat

* ran bin\security\windows\csharp-petstore.bat
2017-11-21 11:26:58 +08:00
Jim Schubert
2c9f98ce38 [csharp] clean boolean additional properties 6784 (#6899)
* [csharp] Convert "false" properties to booleans

It appears as though "false" strings in additionalProperties are no
longer treated as false booleans. This may be an issue elsewhere, but a
simple fix is to always explicitly set the boolean value in a generator
class back to the additionalProperties map to convert boolean Strings to
boolean Objects.

* [nancyfx] Clean up async default option handling

* [nancyfx] Include asyncServer=false in sample script

* [csharp] Regenerate samples

* [csharp] Resolve .net 4 generation issues

Some functionality is missing from .NET 4.0, such as IReadonlyDictionary
and Type.GetTypeInfo().

This commit resolves compilation of generated .NET 4.0 code, requiring
no conditional versioning of Newtonsoft.Json.

* [csharp] Regenerate .net 4.0 sample

* [csharp] Resolve .NET 4.0 sample compile

Sample build.sh wasn't accounting for targeting different FCL correctly.
That is, when passing "net40" to the -sdk option, it would use the
default -sdk:4 and -langversion:6. These don't necessarily match with
what is installed on a machine with only .NET 4.0 (which is our targeted
use case here).

To resolve, we need to define another version-specific value for passing
to the mcs -sdk option (see man mcs for details).

This option currently isn't overridable in the client codegen class.
Also, langversion is set specifically to the version of C# available to
the targeted SDK version. If there is need, we may extend this to
something like:

langversion=${MCS_LANG_VERSION:-6}

To allow users to run as:

   env MCS_LANG_VERSION=5 sh build.sh

I haven't done this because I doubt there's much of a use case via this
script. I'm assuming most consumers will build via IDE or MSBuild.

* [csharp] Revert bin/csharp-petstore.sh to 3.5

* [csharp] Regenerate .NET 3.5 sample

* [csharp] Resolve nuget issue with existing files

* [csharp] Update -all.sh, regenerate samples
2017-11-15 22:36:37 +08:00
wing328
473dfded21 fix typo: crediential => credential 2017-11-13 18:42:23 +08:00
Jim Schubert
28e2fcee78 [csharp] fix enum serialization of first value (#6873)
* [csharp] Treat enum models consistently

C# works differently from most languages in that enums are not
considered objects. This means default(EnumType) will choose a default
of the first enum option. This isn't desirable because it breaks the
required = false functionality of swagger specs, which defines a
property which isn't required to exist in the message body.

Rather than force consumers to use enum values such as UNSPECIFIED, UNKNOWN,
NOT_SET, etc... we can treat enums as primitives. This means any
non-required enum will become Nullable<EnumType> regardless of whether
it is defined as an inline enum or a referenced enum model.

* Categorizing C# integration test for enums as general

* [csharp] Remove enum-ref integration test

* [csharp] Clean up general enum support integration test, validate different enum usage cases.

* [csharp][all] Assign one-based int to string enums

The EmitDefaultValue=false for string based enums will prevent the first
enum value from being serialized, because as 0 it is considered the
default.

This commit assigns an explicit numerical value to all non-integer
enums. This assignment has no effect on the
serialization/deserialization values, and only assigns the compiled
integer.

NOTE: This will have an effect of requiring recompilation of any code
that references the client/server models. This is because:

    public enum Pet { Available }

Source files referencing Pet.Available as defined above will have a
constant 0 in place of the enum value.

    public enum Pet { Available = 1 }

Source files referencing Pet.Available as defined above will have a
constant 1 in place of the enum value.

After compilation, Pet.Available in both instances lose their semantic
values and refer to the byte representation of their integral values.

For more info, see
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
2017-11-13 16:02:03 +08:00
Jim Schubert
92ac1edd78 [csharp] Treat enum models consistently (#6851)
* [csharp] Treat enum models consistently

C# works differently from most languages in that enums are not
considered objects. This means default(EnumType) will choose a default
of the first enum option. This isn't desirable because it breaks the
required = false functionality of swagger specs, which defines a
property which isn't required to exist in the message body.

Rather than force consumers to use enum values such as UNSPECIFIED, UNKNOWN,
NOT_SET, etc... we can treat enums as primitives. This means any
non-required enum will become Nullable<EnumType> regardless of whether
it is defined as an inline enum or a referenced enum model.

* Categorizing C# integration test for enums as general

* [csharp] Remove enum-ref integration test

* [csharp] Clean up general enum support integration test, validate different enum usage cases.
2017-11-09 17:14:47 +08:00
wing328
cab4fc0fed add support for csharp net40 (#6792) 2017-10-27 22:47:02 +08:00
alex-fisher
ff9c723208 ContentType selection fix for csharp. (#6633)
* ContentType selection fix for csharp.
Updated to reflect java implementation. Previously any request body of type string was having the content type overridden to 'application/json'.  This prevented custom json ContentTypes

* updated the petshop codegen for C#

* Fixed content type selection test for csharp

* Replaced tabs with 4 spaces

* Removed trailing space / string comparison
2017-10-17 23:37:22 +08:00
manuc66
a41e8bed97 [csharp] Support inheritance instead of duplicating parent properties in derived classes (#5922)
* [csharp] Explicitly set supportsInheritance

* [csharp] set supportsInheritance for client

This includes supportsInheritance only for the client codegen at the
moment, because setting in AbstractCSharpCodegen would require the
change to be tested in all derived generators, possibly including
similar template changes to this commit's.

* include nice improvement of https://github.com/jimschubert/swagger-codegen/tree/csharp/3829 and leverage https://github.com/manuc66/JsonSubTypes for subtype deserialization

* remove duplicate base validations

* remove useless tests

* restore documentation for properties coming from parent

* launch bin/security/csharp-petstore.sh

* it's impossible to call an explicitly implemented interface-method on the base class
(https://stackoverflow.com/questions/5976216/how-to-call-an-explicitly-implemented-interface-method-on-the-base-class)

* restore portion of code that was lost

* regenerate more

* fix missing using

* take the multi .net compatible revision

* keep generated model simple when no hierarchy involved

* regenerate with:
- bin/csharp-petstore-all.sh && bin/security/csharp-petstore.sh
- bin/csharp-dotnet2-petstore.sh && bin/csharp-petstore.sh && bin/csharp-petstore-netcore-project.sh && bin/csharp-petstore-net-standard.sh && bin/csharp-property-changed-petstore.sh

* fix sln indentation and the missing windows runner for dotnet2

* fix inheritance GetHashCode and Equals

* override instead of hiding the base method
+ fix the csharp-property-changed-petstore.bat

* By default the value of the discriminator property must be the name of the current schema

* Add test for subtype deserialisation from parent type

* add missing '.bat' and use the 'call' template from javascript-petstore-all.bat

add missing file to trigger it on windows

* fix default value bug

* cleanup copyright information

* formatting after merge

* fix merge

* applying bin/csharp-petstore-all.sh

* applying bin/security/csharp-petstore.sh
2017-09-06 17:22:20 +08:00
wing328
443b0f142b remove ref to SO (#6209) 2017-07-29 18:53:08 +08:00
wing328
82835db670 fix issue with api key (query) in c# (#6199) 2017-07-28 01:51:39 +08:00
wing328
11d9cbd597 Merge remote-tracking branch 'origin/master' into 2.3.0 2017-07-16 16:10:08 +08:00
wing328
c1825b417c use html-escaped description for C# (client, server), Java server (#6061) 2017-07-14 23:36:24 +08:00
wing328
094dbd00ed Merge remote-tracking branch 'origin/master' into 2.3.0 2017-07-13 23:35:22 +08:00
wing328
21d33c4054 skip pattern check for byte array in C# (#6048) 2017-07-13 23:25:23 +08:00
beatcracker
ef076c34b4 [csharp] Update nuget.exe URL for latest version (#6031)
* Set nuget.exe URL to latest version

Fix #6022

* Update samples
2017-07-13 22:49:56 +08:00
wing328
9269dac6cf Merge remote-tracking branch 'origin/master' into 2.3.0 2017-07-01 15:47:27 +08:00
wing328
846ee63f38 [C#] Update C# API client dependencies to the latest version (#5935)
* update C# client dependency

* add back csproj file for c# petstore

* update test result

* downgrade version 1.51.3

* add logo as embedded resource
2017-06-29 21:37:24 +08:00
wing328
87bbbc1a1b Merge remote-tracking branch 'origin/master' into 230_merge_master 2017-06-05 23:27:11 +08:00
wing328
4fd52d17c5 minor build warning fix for C# client 2017-06-05 01:05:19 +08:00
Jim Schubert
bc8fe0fd03 [csharp] date proper format (#5734)
* [csharp] Honor Swagger/OpenAPI 'date' format

Per spec
(https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types),
DateTime instances defined as 'date' datatype need to be serialized as
defined by full-date - RFC3339, which has the format:

full-date       = date-fullyear "-" date-month "-" date-mday

ref:
https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14

see #5513
see #5531

* [csharp] Regenerate sample

* [csharp] Include date format test
2017-06-05 00:57:00 +08:00
wing328
08a11c1d75 fix c# net35 issue, add xml doc to new C# class (#5756) 2017-06-01 07:53:35 +08:00
Jim Schubert
b671129557 [csharp] Refactor Configuration usage (#5740)
* [csharp] refactor ApiClient and Configuration usage

* # This is a combination of 2 commits.
# The first commit's message is:

[csharp] refactor ApiClient and Configuration usage

[csharp] Regenerate sample

# This is the 2nd commit message:

[csharp] Simplify setting apikey/prefix/headers

* # This is a combination of 2 commits.
# The first commit's message is:

[csharp] refactor ApiClient and Configuration usage
* Simplify setting apikey/prefix/headers
*  Regenerate sample

# This is the 2nd commit message:

[csharp] Pass-through configuration timeout to client

* [csharp] refactor ApiClient and Configuration usage

* Simplify setting apikey/prefix/headers
* Regenerate sample

* [csharp] Regenerate all client samples

* [csharp] regenerate .net standard/core samples

* [csharp] Fix Timeout diff between netstandard and non-netstandard

* [csharp] Resolve additional netStandard issues after merge

* [csharp] Update doc for Configuration usage
2017-06-01 06:06:36 +08:00
wing328
18e6440bcc Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-30 00:12:34 +08:00
wing328
b84769d1e3 fix enum float value in C#, minor format fix in doc (#5726) 2017-05-29 22:16:42 +08:00
wing328
4d705081c8 [PHP] Fix broken links in the auto-generated documentation (#5715)
* remove trailing space in cpprest, update samples

* remove unused pom.xml in go pestore

* fix broken links in php api doc by fixing baseType

* fix csharp api doc

* fix php examples

* fix examples for abstract php generator
2017-05-26 21:47:49 +08:00
wing328
d0d9650c13 Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-11 01:25:30 +08:00
Jim Schubert
eaa2dc6d21 [csharp] Fix project glob pattern (#5605)
This fixes the glob pattern to remove hard-coded namespaces, and exclude
the obj folder. This removes a newly introduced issue that breaks
apiPackage and modelPackage support and fixes a problem with Xamarin
pulling in obj/**.cs when globbing **/*.cs.
2017-05-11 01:01:45 +08:00
wing328
45ff39c237 Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-10 18:04:49 +08:00
Voydz
5a257a0558 [csharp] fixes for netstandard (json serializing and project files) (#5590) 2017-05-10 15:24:43 +08:00
wing328
fb357086c8 Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-04 19:04:39 +08:00
wing328
1e9fe51175 use original value of pattern (#5554) 2017-05-04 18:01:52 +08:00
wing328
6f944b243d Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-03 21:45:07 +08:00
wing328
a7e42ee2b6 add validatable flag for .net 3.5 (#5544) 2017-05-03 21:32:25 +08:00
wing328
3b98cc7ca0 Merge remote-tracking branch 'origin/master' into 2.3.0 2017-05-03 17:32:24 +08:00
wing328
43812cc002 use origina value of example (#5540) 2017-05-03 16:14:20 +08:00
wing328
2dd051fd4e Merge remote-tracking branch 'origin/master' into 2.3.0 2017-04-25 21:46:44 +08:00
nikitozz
80dccfe395 The new .NET project file format support (#5439) 2017-04-25 10:22:59 +08:00
wing328
c5e6401b89 fix C# api client template for multi query parameter support 2017-04-03 16:55:55 +08:00
wing328
5453d61a4c fix PrepareRequest method signature 2017-04-03 16:45:32 +08:00
Sean O'Hare
f102d675d6 Initial commit to support "multi" formatted collections as query strings in csharp. 2017-04-03 16:36:29 +08:00
wing328
bc8e16e3f8 fix package name in mono test script (#5278) 2017-04-01 21:12:17 +08:00
JC Casas
909f392745 fix mustache file for build.bat (#5264)
replace IO.Swagger for {{packageName}} where necessary
2017-03-31 16:30:40 +08:00
wing328
d68859cfbc fix c# docstring typo (#5223) 2017-03-27 18:06:34 +08:00
wing328
b37a7c81b0 add comments to csharp methods (#5206) 2017-03-27 11:43:14 +08:00
Ben Herila
42a7110d90 Fix Bug/4952 by explicitly implementing IValidatableObject (#4954)
* Explicitly implement IValidatableObject interface to avoid conflict with potential ValidationResult classes

* Missed one

* Rebuilt tests
2017-03-21 15:57:56 +08:00
Gronsak
580745ef43 [C#] Adding support for generating .NET Standard 1.3 client library (#4955)
* [CsharpNetStandard] Added C# .NET Standard Client Generation

Added language CsharpNetStandard.
Everything copied from csharp Client Generator.
Dependancies switched from Restsharp to Restsharp.Portable.
Changes made where nececary to replicate Restsharp functionallity.
Project type changed to .NET Standard protable library.

* [CsharpNetStandard] Removed client prop validation due to incompability

* [CsharpNetStandard] Minor fixes

Changed leftover RestSharp.Method to Method
Changed to .Net Standard 1.3 for compability reasons
Changed excludeTests to default to true due to tests not being implemented yet

Removed unnecessary targetFramework property
Removed leftover UWP stuff

* [CsharpNetStandard] More fixes

Added correct dependencies to Readme
Added correct supported frameworks to Readme
Added slightly better placeholder for installation instructions in Readme

Removed leftover dependencies from project.json
Removed leftover SupportsAsync stuff
Removed references to build.bat/-.sh since they're not yet being generated

Todo implement test generation

* [CsharpNetStandard] Added forgoten git_push.sh

* [C#-netstandard] Renamed option to csharp-netstandard

Also added .bat file for test generation

* [C# Net Standard] fixed path in .bat file

* [C# NET Standard] fixes to enum generation

Fixed issues with enum generation due to tired programmer

* [C# NET Standard] Generated sample client library

Sample library generated

Fixes:
Class actually works again
.bat - minor inconsistency fixed

* [C# NET Standard] Error corrected in how timeout is set

Configuration Timeout property changed to TimeSpan type and code corrected around that

* [C#] Merged .NET Standard generator into csharp generator

Functionallity of csharp-netstarndard generator has been moved into standard csharp generator under the targetFramework option as "v5.0"
2017-03-20 17:21:44 +08:00
wing328
eee5cc061c fix path with {{{ .. }}} in c# api mustache file (#5112) 2017-03-18 23:02:20 +08:00
wing328
b6d6356c46 remove default format (json) from c# api (#4980) 2017-03-08 22:43:59 +08:00
Tristan Sokol
23d114e1eb Fix minor spelling mistake in readme (#4818) 2017-02-20 15:13:06 +08:00
wing328
ef31efe8d9 remove default temp folder during initalization (#4749) 2017-02-09 12:22:13 +08:00