forked from loafle/openapi-generator-original
fix ref to allOf wrapper, add tests (#19986)
This commit is contained in:
parent
891698784d
commit
48e8375166
@ -3861,8 +3861,29 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Schema original = null;
|
Schema original = null;
|
||||||
|
// process the dereference schema if it's a ref to allOf with a single item
|
||||||
|
// and certain field(s) (e.g. description, readyOnly, etc) is set
|
||||||
|
if (p.get$ref() != null) {
|
||||||
|
Schema derefSchema = ModelUtils.getReferencedSchema(openAPI, p);
|
||||||
|
if (ModelUtils.isAllOfWithSingleItem(derefSchema) && (
|
||||||
|
derefSchema.getReadOnly() != null ||
|
||||||
|
derefSchema.getWriteOnly() != null ||
|
||||||
|
derefSchema.getDeprecated() != null ||
|
||||||
|
derefSchema.getDescription() != null ||
|
||||||
|
derefSchema.getMaxLength() != null ||
|
||||||
|
derefSchema.getMinLength() != null ||
|
||||||
|
derefSchema.getMinimum() != null ||
|
||||||
|
derefSchema.getMaximum() != null ||
|
||||||
|
derefSchema.getMaximum() != null ||
|
||||||
|
derefSchema.getMinItems() != null ||
|
||||||
|
derefSchema.getTitle() != null
|
||||||
|
)) {
|
||||||
|
p = ModelUtils.getReferencedSchema(openAPI, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check if it's allOf (only 1 sub schema) with or without default/nullable/etc set in the top level
|
// check if it's allOf (only 1 sub schema) with or without default/nullable/etc set in the top level
|
||||||
if (ModelUtils.isAllOf(p) && p.getAllOf().size() == 1) {
|
if (ModelUtils.isAllOfWithSingleItem(p)) {
|
||||||
if (p.getAllOf().get(0) instanceof Schema) {
|
if (p.getAllOf().get(0) instanceof Schema) {
|
||||||
original = p;
|
original = p;
|
||||||
p = (Schema) p.getAllOf().get(0);
|
p = (Schema) p.getAllOf().get(0);
|
||||||
|
@ -2031,6 +2031,18 @@ public class ModelUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the schema contains allOf with a single item but
|
||||||
|
* no properties/oneOf/anyOf defined
|
||||||
|
*
|
||||||
|
* @param schema the schema
|
||||||
|
* @return true if the schema contains allOf but no properties/oneOf/anyOf defined.
|
||||||
|
*/
|
||||||
|
public static boolean isAllOfWithSingleItem(Schema schema) {
|
||||||
|
return (isAllOf(schema) && schema.getAllOf().size() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the schema contains allOf and may or may not have
|
* Returns true if the schema contains allOf and may or may not have
|
||||||
* properties/oneOf/anyOf defined.
|
* properties/oneOf/anyOf defined.
|
||||||
|
@ -2610,6 +2610,10 @@ components:
|
|||||||
minItems: 1
|
minItems: 1
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Scalar'
|
$ref: '#/components/schemas/Scalar'
|
||||||
|
AllOfRefToString:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/OuterString'
|
||||||
|
description: testing allOf with a ref to string
|
||||||
NewPet:
|
NewPet:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -2620,6 +2624,12 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
format: int64
|
format: int64
|
||||||
x-is-unique: true
|
x-is-unique: true
|
||||||
|
category_ref_to_inline_allof_string:
|
||||||
|
$ref: '#/components/schemas/AllOfRefToString'
|
||||||
|
category_inline_allof_string:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/OuterString'
|
||||||
|
description: testing allOf with a ref to string
|
||||||
category_inline_allof:
|
category_inline_allof:
|
||||||
allOf:
|
allOf:
|
||||||
- type: object
|
- type: object
|
||||||
|
@ -2689,12 +2689,22 @@ components:
|
|||||||
$ref: '#/components/schemas/Scalar'
|
$ref: '#/components/schemas/Scalar'
|
||||||
minItems: 1
|
minItems: 1
|
||||||
type: array
|
type: array
|
||||||
|
AllOfRefToString:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/OuterString'
|
||||||
|
description: testing allOf with a ref to string
|
||||||
NewPet:
|
NewPet:
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
x-is-unique: true
|
x-is-unique: true
|
||||||
|
category_ref_to_inline_allof_string:
|
||||||
|
$ref: '#/components/schemas/AllOfRefToString'
|
||||||
|
category_inline_allof_string:
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/components/schemas/OuterString'
|
||||||
|
description: testing allOf with a ref to string
|
||||||
category_inline_allof:
|
category_inline_allof:
|
||||||
$ref: '#/components/schemas/NewPet_category_inline_allof'
|
$ref: '#/components/schemas/NewPet_category_inline_allof'
|
||||||
category_allOf_ref:
|
category_allOf_ref:
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
| Name | Type | Description | Notes |
|
| Name | Type | Description | Notes |
|
||||||
|------------ | ------------- | ------------- | -------------|
|
|------------ | ------------- | ------------- | -------------|
|
||||||
|**id** | **Long** | | [optional] |
|
|**id** | **Long** | | [optional] |
|
||||||
|
|**categoryRefToInlineAllofString** | **String** | testing allOf with a ref to string | [optional] |
|
||||||
|
|**categoryInlineAllofString** | **String** | testing allOf with a ref to string | [optional] |
|
||||||
|**categoryInlineAllof** | [**NewPetCategoryInlineAllof**](NewPetCategoryInlineAllof.md) | | [optional] |
|
|**categoryInlineAllof** | [**NewPetCategoryInlineAllof**](NewPetCategoryInlineAllof.md) | | [optional] |
|
||||||
|**categoryAllOfRef** | [**Category**](Category.md) | | [optional] |
|
|**categoryAllOfRef** | [**Category**](Category.md) | | [optional] |
|
||||||
|**categoryAllOfRefDescription** | [**Category**](Category.md) | Adding description to property using allOf | [optional] |
|
|**categoryAllOfRefDescription** | [**Category**](Category.md) | Adding description to property using allOf | [optional] |
|
||||||
|
@ -60,6 +60,16 @@ public class NewPet {
|
|||||||
@javax.annotation.Nullable
|
@javax.annotation.Nullable
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
public static final String SERIALIZED_NAME_CATEGORY_REF_TO_INLINE_ALLOF_STRING = "category_ref_to_inline_allof_string";
|
||||||
|
@SerializedName(SERIALIZED_NAME_CATEGORY_REF_TO_INLINE_ALLOF_STRING)
|
||||||
|
@javax.annotation.Nullable
|
||||||
|
private String categoryRefToInlineAllofString;
|
||||||
|
|
||||||
|
public static final String SERIALIZED_NAME_CATEGORY_INLINE_ALLOF_STRING = "category_inline_allof_string";
|
||||||
|
@SerializedName(SERIALIZED_NAME_CATEGORY_INLINE_ALLOF_STRING)
|
||||||
|
@javax.annotation.Nullable
|
||||||
|
private String categoryInlineAllofString;
|
||||||
|
|
||||||
public static final String SERIALIZED_NAME_CATEGORY_INLINE_ALLOF = "category_inline_allof";
|
public static final String SERIALIZED_NAME_CATEGORY_INLINE_ALLOF = "category_inline_allof";
|
||||||
@SerializedName(SERIALIZED_NAME_CATEGORY_INLINE_ALLOF)
|
@SerializedName(SERIALIZED_NAME_CATEGORY_INLINE_ALLOF)
|
||||||
@javax.annotation.Nullable
|
@javax.annotation.Nullable
|
||||||
@ -183,6 +193,44 @@ public class NewPet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public NewPet categoryRefToInlineAllofString(@javax.annotation.Nullable String categoryRefToInlineAllofString) {
|
||||||
|
this.categoryRefToInlineAllofString = categoryRefToInlineAllofString;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testing allOf with a ref to string
|
||||||
|
* @return categoryRefToInlineAllofString
|
||||||
|
*/
|
||||||
|
@javax.annotation.Nullable
|
||||||
|
public String getCategoryRefToInlineAllofString() {
|
||||||
|
return categoryRefToInlineAllofString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCategoryRefToInlineAllofString(@javax.annotation.Nullable String categoryRefToInlineAllofString) {
|
||||||
|
this.categoryRefToInlineAllofString = categoryRefToInlineAllofString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public NewPet categoryInlineAllofString(@javax.annotation.Nullable String categoryInlineAllofString) {
|
||||||
|
this.categoryInlineAllofString = categoryInlineAllofString;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testing allOf with a ref to string
|
||||||
|
* @return categoryInlineAllofString
|
||||||
|
*/
|
||||||
|
@javax.annotation.Nullable
|
||||||
|
public String getCategoryInlineAllofString() {
|
||||||
|
return categoryInlineAllofString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCategoryInlineAllofString(@javax.annotation.Nullable String categoryInlineAllofString) {
|
||||||
|
this.categoryInlineAllofString = categoryInlineAllofString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public NewPet categoryInlineAllof(@javax.annotation.Nullable NewPetCategoryInlineAllof categoryInlineAllof) {
|
public NewPet categoryInlineAllof(@javax.annotation.Nullable NewPetCategoryInlineAllof categoryInlineAllof) {
|
||||||
this.categoryInlineAllof = categoryInlineAllof;
|
this.categoryInlineAllof = categoryInlineAllof;
|
||||||
return this;
|
return this;
|
||||||
@ -398,6 +446,8 @@ public class NewPet {
|
|||||||
}
|
}
|
||||||
NewPet newPet = (NewPet) o;
|
NewPet newPet = (NewPet) o;
|
||||||
return Objects.equals(this.id, newPet.id) &&
|
return Objects.equals(this.id, newPet.id) &&
|
||||||
|
Objects.equals(this.categoryRefToInlineAllofString, newPet.categoryRefToInlineAllofString) &&
|
||||||
|
Objects.equals(this.categoryInlineAllofString, newPet.categoryInlineAllofString) &&
|
||||||
Objects.equals(this.categoryInlineAllof, newPet.categoryInlineAllof) &&
|
Objects.equals(this.categoryInlineAllof, newPet.categoryInlineAllof) &&
|
||||||
Objects.equals(this.categoryAllOfRef, newPet.categoryAllOfRef) &&
|
Objects.equals(this.categoryAllOfRef, newPet.categoryAllOfRef) &&
|
||||||
Objects.equals(this.categoryAllOfRefDescription, newPet.categoryAllOfRefDescription) &&
|
Objects.equals(this.categoryAllOfRefDescription, newPet.categoryAllOfRefDescription) &&
|
||||||
@ -411,7 +461,7 @@ public class NewPet {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(id, categoryInlineAllof, categoryAllOfRef, categoryAllOfRefDescription, categoryAllOfRefDescriptionReadonly, name, photoUrls, tags, status, additionalProperties);
|
return Objects.hash(id, categoryRefToInlineAllofString, categoryInlineAllofString, categoryInlineAllof, categoryAllOfRef, categoryAllOfRefDescription, categoryAllOfRefDescriptionReadonly, name, photoUrls, tags, status, additionalProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -419,6 +469,8 @@ public class NewPet {
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("class NewPet {\n");
|
sb.append("class NewPet {\n");
|
||||||
sb.append(" id: ").append(toIndentedString(id)).append("\n");
|
sb.append(" id: ").append(toIndentedString(id)).append("\n");
|
||||||
|
sb.append(" categoryRefToInlineAllofString: ").append(toIndentedString(categoryRefToInlineAllofString)).append("\n");
|
||||||
|
sb.append(" categoryInlineAllofString: ").append(toIndentedString(categoryInlineAllofString)).append("\n");
|
||||||
sb.append(" categoryInlineAllof: ").append(toIndentedString(categoryInlineAllof)).append("\n");
|
sb.append(" categoryInlineAllof: ").append(toIndentedString(categoryInlineAllof)).append("\n");
|
||||||
sb.append(" categoryAllOfRef: ").append(toIndentedString(categoryAllOfRef)).append("\n");
|
sb.append(" categoryAllOfRef: ").append(toIndentedString(categoryAllOfRef)).append("\n");
|
||||||
sb.append(" categoryAllOfRefDescription: ").append(toIndentedString(categoryAllOfRefDescription)).append("\n");
|
sb.append(" categoryAllOfRefDescription: ").append(toIndentedString(categoryAllOfRefDescription)).append("\n");
|
||||||
@ -451,6 +503,8 @@ public class NewPet {
|
|||||||
// a set of all properties/fields (JSON key names)
|
// a set of all properties/fields (JSON key names)
|
||||||
openapiFields = new HashSet<String>();
|
openapiFields = new HashSet<String>();
|
||||||
openapiFields.add("id");
|
openapiFields.add("id");
|
||||||
|
openapiFields.add("category_ref_to_inline_allof_string");
|
||||||
|
openapiFields.add("category_inline_allof_string");
|
||||||
openapiFields.add("category_inline_allof");
|
openapiFields.add("category_inline_allof");
|
||||||
openapiFields.add("category_allOf_ref");
|
openapiFields.add("category_allOf_ref");
|
||||||
openapiFields.add("category_allOf_ref_description");
|
openapiFields.add("category_allOf_ref_description");
|
||||||
@ -486,6 +540,12 @@ public class NewPet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
JsonObject jsonObj = jsonElement.getAsJsonObject();
|
JsonObject jsonObj = jsonElement.getAsJsonObject();
|
||||||
|
if ((jsonObj.get("category_ref_to_inline_allof_string") != null && !jsonObj.get("category_ref_to_inline_allof_string").isJsonNull()) && !jsonObj.get("category_ref_to_inline_allof_string").isJsonPrimitive()) {
|
||||||
|
throw new IllegalArgumentException(String.format("Expected the field `category_ref_to_inline_allof_string` to be a primitive type in the JSON string but got `%s`", jsonObj.get("category_ref_to_inline_allof_string").toString()));
|
||||||
|
}
|
||||||
|
if ((jsonObj.get("category_inline_allof_string") != null && !jsonObj.get("category_inline_allof_string").isJsonNull()) && !jsonObj.get("category_inline_allof_string").isJsonPrimitive()) {
|
||||||
|
throw new IllegalArgumentException(String.format("Expected the field `category_inline_allof_string` to be a primitive type in the JSON string but got `%s`", jsonObj.get("category_inline_allof_string").toString()));
|
||||||
|
}
|
||||||
// validate the optional field `category_inline_allof`
|
// validate the optional field `category_inline_allof`
|
||||||
if (jsonObj.get("category_inline_allof") != null && !jsonObj.get("category_inline_allof").isJsonNull()) {
|
if (jsonObj.get("category_inline_allof") != null && !jsonObj.get("category_inline_allof").isJsonNull()) {
|
||||||
NewPetCategoryInlineAllof.validateJsonElement(jsonObj.get("category_inline_allof"));
|
NewPetCategoryInlineAllof.validateJsonElement(jsonObj.get("category_inline_allof"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user