Skip to content

Commit

Permalink
[normalizer] fix schemas incorrectly skipped (#18297)
Browse files Browse the repository at this point in the history
* fix circular reference check in normalizer

* add new files

* fix
  • Loading branch information
wing328 committed Apr 5, 2024
1 parent f357be4 commit 6d10e80
Show file tree
Hide file tree
Showing 19 changed files with 1,665 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ public Schema normalizeSchema(Schema schema, Set<Schema> visitedSchemas) {
}

if (StringUtils.isNotEmpty(schema.get$ref())) {
// not need to process $ref
// no need to process $ref
return schema;
}

Expand Down Expand Up @@ -594,7 +594,7 @@ private void normalizeProperties(Map<String, Schema> properties, Set<Schema> vis
}
for (Map.Entry<String, Schema> propertiesEntry : properties.entrySet()) {
Schema property = propertiesEntry.getValue();
Schema newProperty = normalizeSchema(property, visitedSchemas);
Schema newProperty = normalizeSchema(property, new HashSet<>());
propertiesEntry.setValue(newProperty);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -914,3 +914,33 @@ components:
description: A list of "good output" node IDs in the prompt.
items:
type: string
circular_reference_1:
type: object
properties:
prop1:
$ref: '#/components/schemas/circular_reference_2'
circular_reference_2:
type: object
properties:
prop1:
$ref: '#/components/schemas/circular_reference_3'
circular_reference_3:
type: object
properties:
prop1:
$ref: '#/components/schemas/circular_reference_1'
array_of_same_ref:
type: object
properties:
arrayFooOne:
type: array
items:
$ref: '#/components/schemas/Tag'
arrayFooTwo:
type: array
items:
$ref: '#/components/schemas/Tag'
arrayFooThree:
type: array
items:
$ref: '#/components/schemas/Tag'
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ build.sbt
docs/Animal.md
docs/AnyOfArray.md
docs/AnyTypeTest.md
docs/ArrayOfSameRef.md
docs/Cat.md
docs/Category.md
docs/CircularReference1.md
docs/CircularReference2.md
docs/CircularReference3.md
docs/Dog.md
docs/FakeApi.md
docs/ModelApiResponse.md
Expand Down Expand Up @@ -60,8 +64,12 @@ src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
src/main/java/org/openapitools/client/model/Animal.java
src/main/java/org/openapitools/client/model/AnyOfArray.java
src/main/java/org/openapitools/client/model/AnyTypeTest.java
src/main/java/org/openapitools/client/model/ArrayOfSameRef.java
src/main/java/org/openapitools/client/model/Cat.java
src/main/java/org/openapitools/client/model/Category.java
src/main/java/org/openapitools/client/model/CircularReference1.java
src/main/java/org/openapitools/client/model/CircularReference2.java
src/main/java/org/openapitools/client/model/CircularReference3.java
src/main/java/org/openapitools/client/model/Dog.java
src/main/java/org/openapitools/client/model/ModelApiResponse.java
src/main/java/org/openapitools/client/model/OneOfStringOrInt.java
Expand Down
4 changes: 4 additions & 0 deletions samples/client/petstore/java/okhttp-gson-3.1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,12 @@ Class | Method | HTTP request | Description
- [Animal](docs/Animal.md)
- [AnyOfArray](docs/AnyOfArray.md)
- [AnyTypeTest](docs/AnyTypeTest.md)
- [ArrayOfSameRef](docs/ArrayOfSameRef.md)
- [Cat](docs/Cat.md)
- [Category](docs/Category.md)
- [CircularReference1](docs/CircularReference1.md)
- [CircularReference2](docs/CircularReference2.md)
- [CircularReference3](docs/CircularReference3.md)
- [Dog](docs/Dog.md)
- [ModelApiResponse](docs/ModelApiResponse.md)
- [OneOfStringOrInt](docs/OneOfStringOrInt.md)
Expand Down
26 changes: 26 additions & 0 deletions samples/client/petstore/java/okhttp-gson-3.1/api/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1015,6 +1015,32 @@ components:
maxItems: 5
minItems: 3
type: array
circular_reference_1:
properties:
prop1:
$ref: '#/components/schemas/circular_reference_2'
circular_reference_2:
properties:
prop1:
$ref: '#/components/schemas/circular_reference_3'
circular_reference_3:
properties:
prop1:
$ref: '#/components/schemas/circular_reference_1'
array_of_same_ref:
properties:
arrayFooOne:
items:
$ref: '#/components/schemas/Tag'
type: array
arrayFooTwo:
items:
$ref: '#/components/schemas/Tag'
type: array
arrayFooThree:
items:
$ref: '#/components/schemas/Tag'
type: array
updatePetWithForm_request:
properties:
name:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@


# ArrayOfSameRef


## Properties

| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**arrayFooOne** | [**List&lt;Tag&gt;**](Tag.md) | | [optional] |
|**arrayFooTwo** | [**List&lt;Tag&gt;**](Tag.md) | | [optional] |
|**arrayFooThree** | [**List&lt;Tag&gt;**](Tag.md) | | [optional] |



Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@


# CircularReference1


## Properties

| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**prop1** | [**CircularReference2**](CircularReference2.md) | | [optional] |



Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@


# CircularReference2


## Properties

| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**prop1** | [**CircularReference3**](CircularReference3.md) | | [optional] |



Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@


# CircularReference3


## Properties

| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**prop1** | [**CircularReference1**](CircularReference1.md) | | [optional] |



Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,12 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter);
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AnyOfArray.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.AnyTypeTest.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ArrayOfSameRef.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Cat.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Category.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.CircularReference1.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.CircularReference2.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.CircularReference3.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Dog.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelApiResponse.CustomTypeAdapterFactory());
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.OneOfStringOrInt.CustomTypeAdapterFactory());
Expand Down
Loading

0 comments on commit 6d10e80

Please sign in to comment.