Skip to content

Commit

Permalink
fixed format of Date serialization (#14616)
Browse files Browse the repository at this point in the history
  • Loading branch information
devhl-labs committed Feb 4, 2023
1 parent c2bad96 commit a3c0de9
Show file tree
Hide file tree
Showing 58 changed files with 2,315 additions and 14 deletions.
Expand Up @@ -3,6 +3,15 @@
/// </summary>
{{>visibility}} class {{classname}}JsonConverter : JsonConverter<{{classname}}>
{
{{#allVars}}
{{#isDate}}
/// <summary>
/// The format to use to serialize {{name}}
/// </summary>
public string {{name}}Format { get; set; } = "yyyy-MM-dd";

{{/isDate}}
{{/allVars}}
/// <summary>
/// A Json reader.
/// </summary>
Expand Down Expand Up @@ -208,8 +217,15 @@
{{/isNumeric}}
{{/isEnum}}
{{#isDate}}
writer.WritePropertyName("{{baseName}}");
JsonSerializer.Serialize(writer, {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}, jsonSerializerOptions);
{{#isNullable}}
if ({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}} != null)
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.Value.ToString(this.{{name}}Format));
else
writer.WriteNull("{{baseName}}");
{{/isNullable}}
{{^isNullable}}
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.ToString(this.{{name}}Format));
{{/isNullable}}
{{/isDate}}
{{#isDateTime}}
writer.WritePropertyName("{{baseName}}");
Expand Down
Expand Up @@ -2187,3 +2187,10 @@ components:
format: uuid
example: 72f98069-206d-4f12-9f12-3d1e525a8e84
nullable: true
DateOnlyClass:
type: object
properties:
dateOnlyProperty:
type: string
format: date
example: "2017-07-21"
Expand Up @@ -25,6 +25,7 @@ docs/ChildCatAllOf.md
docs/ClassModel.md
docs/ComplexQuadrilateral.md
docs/DanishPig.md
docs/DateOnlyClass.md
docs/DefaultApi.md
docs/DeprecatedObject.md
docs/Dog.md
Expand Down Expand Up @@ -141,6 +142,7 @@ src/Org.OpenAPITools/Model/ChildCatAllOf.cs
src/Org.OpenAPITools/Model/ClassModel.cs
src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/DogAllOf.cs
Expand Down
Expand Up @@ -169,6 +169,7 @@ Class | Method | HTTP request | Description
- [Model.ClassModel](docs/ClassModel.md)
- [Model.ComplexQuadrilateral](docs/ComplexQuadrilateral.md)
- [Model.DanishPig](docs/DanishPig.md)
- [Model.DateOnlyClass](docs/DateOnlyClass.md)
- [Model.DeprecatedObject](docs/DeprecatedObject.md)
- [Model.Dog](docs/Dog.md)
- [Model.DogAllOf](docs/DogAllOf.md)
Expand Down
@@ -0,0 +1,10 @@
# Org.OpenAPITools.Model.DateOnlyClass

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**DateOnlyProperty** | **DateTime** | | [optional]

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

@@ -0,0 +1,70 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/


using Xunit;

using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using Org.OpenAPITools.Api;
using Org.OpenAPITools.Model;
using Org.OpenAPITools.Client;
using System.Reflection;
using Newtonsoft.Json;

namespace Org.OpenAPITools.Test.Model
{
/// <summary>
/// Class for testing DateOnlyClass
/// </summary>
/// <remarks>
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
/// Please update the test case below to test the model.
/// </remarks>
public class DateOnlyClassTests : IDisposable
{
// TODO uncomment below to declare an instance variable for DateOnlyClass
//private DateOnlyClass instance;

public DateOnlyClassTests()
{
// TODO uncomment below to create an instance of DateOnlyClass
//instance = new DateOnlyClass();
}

public void Dispose()
{
// Cleanup when everything is done.
}

/// <summary>
/// Test an instance of DateOnlyClass
/// </summary>
[Fact]
public void DateOnlyClassInstanceTest()
{
// TODO uncomment below to test "IsType" DateOnlyClass
//Assert.IsType<DateOnlyClass>(instance);
}


/// <summary>
/// Test the property 'DateOnlyProperty'
/// </summary>
[Fact]
public void DateOnlyPropertyTest()
{
// TODO unit test for the property 'DateOnlyProperty'
}

}

}
@@ -0,0 +1,155 @@
/*
* OpenAPI Petstore
*
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/


using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter;
using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils;

namespace Org.OpenAPITools.Model
{
/// <summary>
/// DateOnlyClass
/// </summary>
[DataContract(Name = "DateOnlyClass")]
public partial class DateOnlyClass : IEquatable<DateOnlyClass>, IValidatableObject
{
/// <summary>
/// Initializes a new instance of the <see cref="DateOnlyClass" /> class.
/// </summary>
/// <param name="dateOnlyProperty">dateOnlyProperty.</param>
public DateOnlyClass(DateTime dateOnlyProperty = default(DateTime))
{
this._DateOnlyProperty = dateOnlyProperty;
if (this.DateOnlyProperty != null)
{
this._flagDateOnlyProperty = true;
}
this.AdditionalProperties = new Dictionary<string, object>();
}

/// <summary>
/// Gets or Sets DateOnlyProperty
/// </summary>
[JsonConverter(typeof(OpenAPIDateConverter))]
[DataMember(Name = "dateOnlyProperty", EmitDefaultValue = false)]
public DateTime DateOnlyProperty
{
get{ return _DateOnlyProperty;}
set
{
_DateOnlyProperty = value;
_flagDateOnlyProperty = true;
}
}
private DateTime _DateOnlyProperty;
private bool _flagDateOnlyProperty;

/// <summary>
/// Returns false as DateOnlyProperty should not be serialized given that it's read-only.
/// </summary>
/// <returns>false (boolean)</returns>
public bool ShouldSerializeDateOnlyProperty()
{
return _flagDateOnlyProperty;
}
/// <summary>
/// Gets or Sets additional properties
/// </summary>
[JsonExtensionData]
public IDictionary<string, object> AdditionalProperties { get; set; }

/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("class DateOnlyClass {\n");
sb.Append(" DateOnlyProperty: ").Append(DateOnlyProperty).Append("\n");
sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n");
sb.Append("}\n");
return sb.ToString();
}

/// <summary>
/// Returns the JSON string presentation of the object
/// </summary>
/// <returns>JSON string presentation of the object</returns>
public virtual string ToJson()
{
return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
}

/// <summary>
/// Returns true if objects are equal
/// </summary>
/// <param name="input">Object to be compared</param>
/// <returns>Boolean</returns>
public override bool Equals(object input)
{
return OpenAPIClientUtils.compareLogic.Compare(this, input as DateOnlyClass).AreEqual;
}

/// <summary>
/// Returns true if DateOnlyClass instances are equal
/// </summary>
/// <param name="input">Instance of DateOnlyClass to be compared</param>
/// <returns>Boolean</returns>
public bool Equals(DateOnlyClass input)
{
return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual;
}

/// <summary>
/// Gets the hash code
/// </summary>
/// <returns>Hash code</returns>
public override int GetHashCode()
{
unchecked // Overflow is fine, just wrap
{
int hashCode = 41;
if (this.DateOnlyProperty != null)
{
hashCode = (hashCode * 59) + this.DateOnlyProperty.GetHashCode();
}
if (this.AdditionalProperties != null)
{
hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode();
}
return hashCode;
}
}

/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
public IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> Validate(ValidationContext validationContext)
{
yield break;
}
}

}
Expand Up @@ -31,6 +31,7 @@ docs/models/ChildCatAllOf.md
docs/models/ClassModel.md
docs/models/ComplexQuadrilateral.md
docs/models/DanishPig.md
docs/models/DateOnlyClass.md
docs/models/DeprecatedObject.md
docs/models/Dog.md
docs/models/DogAllOf.md
Expand Down Expand Up @@ -147,6 +148,7 @@ src/Org.OpenAPITools/Model/ChildCatAllOf.cs
src/Org.OpenAPITools/Model/ClassModel.cs
src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs
src/Org.OpenAPITools/Model/DanishPig.cs
src/Org.OpenAPITools/Model/DateOnlyClass.cs
src/Org.OpenAPITools/Model/DeprecatedObject.cs
src/Org.OpenAPITools/Model/Dog.cs
src/Org.OpenAPITools/Model/DogAllOf.cs
Expand Down
@@ -0,0 +1,10 @@
# Org.OpenAPITools.Model.DateOnlyClass

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**DateOnlyProperty** | **DateTime** | | [optional]

[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

0 comments on commit a3c0de9

Please sign in to comment.