Support models with multi-level hierarchy (via roxspring) (#4503)

* Example of broken multi-level hierarchy

* Support for multiple levels of hierarchy in model objects

* Support for multiple levels of hierarchy in generators

* Regenerated samples

* Temporarily skip scalaz sample verification, which is having issue with Java version in CI container

* Re-enable scalaz in verify samples

Co-authored-by: Rob Oxspring <roxspring@imapmail.org>
This commit is contained in:
Jim Schubert
2019-12-27 02:42:32 -05:00
committed by William Cheng
parent daec02b8c5
commit 376e419d0b
372 changed files with 23296 additions and 21 deletions

View File

@@ -32,6 +32,7 @@ namespace Org.OpenAPITools.Model
[JsonConverter(typeof(JsonSubtypes), "ClassName")]
[JsonSubtypes.KnownSubType(typeof(Dog), "Dog")]
[JsonSubtypes.KnownSubType(typeof(Cat), "Cat")]
[JsonSubtypes.KnownSubType(typeof(BigCat), "BigCat")]
public partial class Animal : IEquatable<Animal>, IValidatableObject
{
/// <summary>

View File

@@ -0,0 +1,163 @@
/*
* 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.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// BigCat
/// </summary>
[DataContract]
public partial class BigCat : Cat, IEquatable<BigCat>, IValidatableObject
{
/// <summary>
/// Defines Kind
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum KindEnum
{
/// <summary>
/// Enum Lions for value: lions
/// </summary>
[EnumMember(Value = "lions")]
Lions = 1,
/// <summary>
/// Enum Tigers for value: tigers
/// </summary>
[EnumMember(Value = "tigers")]
Tigers = 2,
/// <summary>
/// Enum Leopards for value: leopards
/// </summary>
[EnumMember(Value = "leopards")]
Leopards = 3,
/// <summary>
/// Enum Jaguars for value: jaguars
/// </summary>
[EnumMember(Value = "jaguars")]
Jaguars = 4
}
/// <summary>
/// Gets or Sets Kind
/// </summary>
[DataMember(Name="kind", EmitDefaultValue=false)]
public KindEnum? Kind { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="BigCat" /> class.
/// </summary>
[JsonConstructorAttribute]
protected BigCat() { }
/// <summary>
/// Initializes a new instance of the <see cref="BigCat" /> class.
/// </summary>
/// <param name="kind">kind.</param>
public BigCat(KindEnum? kind = default(KindEnum?), string className = default(string), string color = "red", bool declawed = default(bool)) : base(declawed)
{
this.Kind = kind;
}
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
var sb = new StringBuilder();
sb.Append("class BigCat {\n");
sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n");
sb.Append(" Kind: ").Append(Kind).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 override string ToJson()
{
return JsonConvert.SerializeObject(this, 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 this.Equals(input as BigCat);
}
/// <summary>
/// Returns true if BigCat instances are equal
/// </summary>
/// <param name="input">Instance of BigCat to be compared</param>
/// <returns>Boolean</returns>
public bool Equals(BigCat input)
{
if (input == null)
return false;
return base.Equals(input) &&
(
this.Kind == input.Kind ||
(this.Kind != null &&
this.Kind.Equals(input.Kind))
);
}
/// <summary>
/// Gets the hash code
/// </summary>
/// <returns>Hash code</returns>
public override int GetHashCode()
{
unchecked // Overflow is fine, just wrap
{
int hashCode = base.GetHashCode();
if (this.Kind != null)
hashCode = hashCode * 59 + this.Kind.GetHashCode();
return hashCode;
}
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
foreach(var x in base.BaseValidate(validationContext)) yield return x;
yield break;
}
}
}

View File

@@ -0,0 +1,156 @@
/*
* 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.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter;
namespace Org.OpenAPITools.Model
{
/// <summary>
/// BigCatAllOf
/// </summary>
[DataContract]
public partial class BigCatAllOf : IEquatable<BigCatAllOf>, IValidatableObject
{
/// <summary>
/// Defines Kind
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum KindEnum
{
/// <summary>
/// Enum Lions for value: lions
/// </summary>
[EnumMember(Value = "lions")]
Lions = 1,
/// <summary>
/// Enum Tigers for value: tigers
/// </summary>
[EnumMember(Value = "tigers")]
Tigers = 2,
/// <summary>
/// Enum Leopards for value: leopards
/// </summary>
[EnumMember(Value = "leopards")]
Leopards = 3,
/// <summary>
/// Enum Jaguars for value: jaguars
/// </summary>
[EnumMember(Value = "jaguars")]
Jaguars = 4
}
/// <summary>
/// Gets or Sets Kind
/// </summary>
[DataMember(Name="kind", EmitDefaultValue=false)]
public KindEnum? Kind { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="BigCatAllOf" /> class.
/// </summary>
/// <param name="kind">kind.</param>
public BigCatAllOf(KindEnum? kind = default(KindEnum?))
{
this.Kind = kind;
}
/// <summary>
/// Returns the string presentation of the object
/// </summary>
/// <returns>String presentation of the object</returns>
public override string ToString()
{
var sb = new StringBuilder();
sb.Append("class BigCatAllOf {\n");
sb.Append(" Kind: ").Append(Kind).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 JsonConvert.SerializeObject(this, 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 this.Equals(input as BigCatAllOf);
}
/// <summary>
/// Returns true if BigCatAllOf instances are equal
/// </summary>
/// <param name="input">Instance of BigCatAllOf to be compared</param>
/// <returns>Boolean</returns>
public bool Equals(BigCatAllOf input)
{
if (input == null)
return false;
return
(
this.Kind == input.Kind ||
(this.Kind != null &&
this.Kind.Equals(input.Kind))
);
}
/// <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.Kind != null)
hashCode = hashCode * 59 + this.Kind.GetHashCode();
return hashCode;
}
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
yield break;
}
}
}

View File

@@ -122,6 +122,16 @@ namespace Org.OpenAPITools.Model
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
/// <summary>
/// To validate all properties of the instance
/// </summary>
/// <param name="validationContext">Validation context</param>
/// <returns>Validation Result</returns>
protected IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> BaseValidate(ValidationContext validationContext)
{
foreach(var x in base.BaseValidate(validationContext)) yield return x;
yield break;