Skip to content

Commit b8d7786

Browse files
renato-tvrenatomameli
authored andcommitted
fix(java-spring): add missing imports for converter (#23325)
1 parent e6ef8ee commit b8d7786

32 files changed

Lines changed: 235 additions & 519 deletions

File tree

modules/openapi-generator/src/main/resources/JavaSpring/converter.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package {{configPackage}};
22

3+
import java.math.BigDecimal;
4+
import java.net.URI;
5+
import java.util.UUID;
6+
37
{{#models}}
48
{{#model}}
59
{{#isEnum}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3057,6 +3057,36 @@ public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throw
30573057
.containsWithName("marker.Common");
30583058
}
30593059

3060+
@Test
3061+
public void contractWithUriEnumContainsEnumConverterWithUriImport() throws IOException {
3062+
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_uri.yaml", SPRING_BOOT);
3063+
3064+
JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
3065+
.hasImports("java.net.URI")
3066+
.fileContains("Converter<URI, ExampleUriEnum>")
3067+
.assertMethod("exampleUriEnumConverter");
3068+
}
3069+
3070+
@Test
3071+
public void contractWithUuidEnumContainsEnumConverterWithUuidImport() throws IOException {
3072+
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_uuid.yaml", SPRING_BOOT);
3073+
3074+
JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
3075+
.hasImports("java.util.UUID")
3076+
.fileContains("Converter<UUID, ExampleUuidEnum>")
3077+
.assertMethod("exampleUuidEnumConverter");
3078+
}
3079+
3080+
@Test
3081+
public void contractWithNumberEnumContainsEnumConverterWithBigDecimalImport() throws IOException {
3082+
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_number.yaml", SPRING_BOOT);
3083+
3084+
JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
3085+
.hasImports("java.math.BigDecimal")
3086+
.fileContains("Converter<BigDecimal, ExampleNumberEnum>")
3087+
.assertMethod("exampleNumberEnumConverter");
3088+
}
3089+
30603090
@Test
30613091
public void contractWithoutEnumDoesNotContainEnumConverter() throws IOException {
30623092
Map<String, File> output = generateFromContract("src/test/resources/3_0/generic.yaml", SPRING_BOOT);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Sample API
4+
description: API with number enum.
5+
version: 1.0.0
6+
paths:
7+
/resources:
8+
get:
9+
summary: Returns resources.
10+
responses:
11+
200:
12+
description: OK
13+
content:
14+
application/json:
15+
schema:
16+
type: array
17+
items:
18+
$ref: '#/components/schemas/Resource'
19+
components:
20+
schemas:
21+
Resource:
22+
type: object
23+
properties:
24+
source:
25+
$ref: '#/components/schemas/ExampleNumberEnum'
26+
ExampleNumberEnum:
27+
type: number
28+
description: Example of an Enum with number values
29+
enum:
30+
- 1.1
31+
- 2.2
32+
- 3.3
33+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Sample API
4+
description: API with URI enum.
5+
version: 1.0.0
6+
paths:
7+
/resources:
8+
get:
9+
summary: Returns resources.
10+
responses:
11+
200:
12+
description: OK
13+
content:
14+
application/json:
15+
schema:
16+
type: array
17+
items:
18+
$ref: '#/components/schemas/Resource'
19+
components:
20+
schemas:
21+
Resource:
22+
type: object
23+
properties:
24+
source:
25+
$ref: '#/components/schemas/ExampleUriEnum'
26+
ExampleUriEnum:
27+
type: string
28+
format: uri
29+
description: Example of an Enum with URI values
30+
enum:
31+
- "https://another-example.com"
32+
- "https://example.com"
33+
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Sample API
4+
description: API with UUID enum.
5+
version: 1.0.0
6+
paths:
7+
/resources:
8+
get:
9+
summary: Returns resources.
10+
responses:
11+
200:
12+
description: OK
13+
content:
14+
application/json:
15+
schema:
16+
type: array
17+
items:
18+
$ref: '#/components/schemas/Resource'
19+
components:
20+
schemas:
21+
Resource:
22+
type: object
23+
properties:
24+
source:
25+
$ref: '#/components/schemas/ExampleUuidEnum'
26+
ExampleUuidEnum:
27+
type: string
28+
format: uuid
29+
description: Example of an Enum with UUID values
30+
enum:
31+
- "d6a8f2b0-1c34-4e56-a789-0abcdef12345"
32+
- "e7b9c3d1-2d45-5f67-b890-1bcdef023456"
33+

samples/client/petstore/java/okhttp-gson-3.1/.openapi-generator/FILES

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,12 @@ README.md
55
api/openapi.yaml
66
build.gradle
77
build.sbt
8-
docs/AllOfSimpleModel.md
9-
docs/Animal.md
10-
docs/AnyTypeTest.md
11-
docs/ArrayOfSameRef.md
12-
docs/Cat.md
138
docs/Category.md
14-
docs/CircularReference1.md
15-
docs/CircularReference2.md
16-
docs/CircularReference3.md
17-
docs/CodesEnum.md
18-
docs/DefaultApi.md
19-
docs/Dog.md
20-
docs/FakeApi.md
21-
docs/FakeWebhooksSourcesDeletedPostRequest.md
22-
docs/FakeWebhooksSourcesDeletedPostRequestEvent.md
239
docs/ModelApiResponse.md
24-
docs/OneOfStringOrInt.md
2510
docs/Order.md
2611
docs/Pet.md
2712
docs/PetApi.md
28-
docs/PetWithTypesObjectNullAndRef.md
29-
docs/RefRefToPathLevelParameterOneofRefToOneofParameter.md
30-
docs/RefToRefParameterAnyofRefToAnyofParameter.md
31-
docs/SelfReferenceAdditionalProperties.md
32-
docs/SelfReferenceAnyOf.md
33-
docs/SelfReferenceOneOf.md
34-
docs/SimpleModelWithArrayProperty.md
3513
docs/StoreApi.md
36-
docs/StringOrInt.md
3714
docs/Tag.md
3815
docs/User.md
3916
docs/UserApi.md
@@ -59,8 +36,6 @@ src/main/java/org/openapitools/client/ProgressResponseBody.java
5936
src/main/java/org/openapitools/client/ServerConfiguration.java
6037
src/main/java/org/openapitools/client/ServerVariable.java
6138
src/main/java/org/openapitools/client/StringUtil.java
62-
src/main/java/org/openapitools/client/api/DefaultApi.java
63-
src/main/java/org/openapitools/client/api/FakeApi.java
6439
src/main/java/org/openapitools/client/api/PetApi.java
6540
src/main/java/org/openapitools/client/api/StoreApi.java
6641
src/main/java/org/openapitools/client/api/UserApi.java
@@ -73,30 +48,9 @@ src/main/java/org/openapitools/client/auth/OAuthFlow.java
7348
src/main/java/org/openapitools/client/auth/OAuthOkHttpClient.java
7449
src/main/java/org/openapitools/client/auth/RetryingOAuth.java
7550
src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
76-
src/main/java/org/openapitools/client/model/AllOfSimpleModel.java
77-
src/main/java/org/openapitools/client/model/Animal.java
78-
src/main/java/org/openapitools/client/model/AnyTypeTest.java
79-
src/main/java/org/openapitools/client/model/ArrayOfSameRef.java
80-
src/main/java/org/openapitools/client/model/Cat.java
8151
src/main/java/org/openapitools/client/model/Category.java
82-
src/main/java/org/openapitools/client/model/CircularReference1.java
83-
src/main/java/org/openapitools/client/model/CircularReference2.java
84-
src/main/java/org/openapitools/client/model/CircularReference3.java
85-
src/main/java/org/openapitools/client/model/CodesEnum.java
86-
src/main/java/org/openapitools/client/model/Dog.java
87-
src/main/java/org/openapitools/client/model/FakeWebhooksSourcesDeletedPostRequest.java
88-
src/main/java/org/openapitools/client/model/FakeWebhooksSourcesDeletedPostRequestEvent.java
8952
src/main/java/org/openapitools/client/model/ModelApiResponse.java
90-
src/main/java/org/openapitools/client/model/OneOfStringOrInt.java
9153
src/main/java/org/openapitools/client/model/Order.java
9254
src/main/java/org/openapitools/client/model/Pet.java
93-
src/main/java/org/openapitools/client/model/PetWithTypesObjectNullAndRef.java
94-
src/main/java/org/openapitools/client/model/RefRefToPathLevelParameterOneofRefToOneofParameter.java
95-
src/main/java/org/openapitools/client/model/RefToRefParameterAnyofRefToAnyofParameter.java
96-
src/main/java/org/openapitools/client/model/SelfReferenceAdditionalProperties.java
97-
src/main/java/org/openapitools/client/model/SelfReferenceAnyOf.java
98-
src/main/java/org/openapitools/client/model/SelfReferenceOneOf.java
99-
src/main/java/org/openapitools/client/model/SimpleModelWithArrayProperty.java
100-
src/main/java/org/openapitools/client/model/StringOrInt.java
10155
src/main/java/org/openapitools/client/model/Tag.java
10256
src/main/java/org/openapitools/client/model/User.java

samples/client/petstore/java/okhttp-gson-3.1/README.md

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,26 @@ Please follow the [installation](#installation) instruction and execute the foll
8383
import org.openapitools.client.ApiClient;
8484
import org.openapitools.client.ApiException;
8585
import org.openapitools.client.Configuration;
86+
import org.openapitools.client.auth.*;
8687
import org.openapitools.client.model.*;
87-
import org.openapitools.client.api.FakeApi;
88+
import org.openapitools.client.api.PetApi;
8889

8990
public class Example {
9091
public static void main(String[] args) {
9192
ApiClient defaultClient = Configuration.getDefaultApiClient();
9293
defaultClient.setBasePath("http://petstore.swagger.io/v2");
94+
95+
// Configure OAuth2 access token for authorization: petstore_auth
96+
OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
97+
petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
9398

94-
FakeApi apiInstance = new FakeApi(defaultClient);
99+
PetApi apiInstance = new PetApi(defaultClient);
100+
Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store
95101
try {
96-
Object result = apiInstance.fakeInlineSchemaAnyofPath1Get();
102+
Pet result = apiInstance.addPet(pet);
97103
System.out.println(result);
98104
} catch (ApiException e) {
99-
System.err.println("Exception when calling FakeApi#fakeInlineSchemaAnyofPath1Get");
105+
System.err.println("Exception when calling PetApi#addPet");
100106
System.err.println("Status code: " + e.getCode());
101107
System.err.println("Reason: " + e.getResponseBody());
102108
System.err.println("Response headers: " + e.getResponseHeaders());
@@ -113,18 +119,6 @@ All URIs are relative to *http://petstore.swagger.io/v2*
113119

114120
Class | Method | HTTP request | Description
115121
------------ | ------------- | ------------- | -------------
116-
*FakeApi* | [**fakeInlineSchemaAnyofPath1Get**](docs/FakeApi.md#fakeInlineSchemaAnyofPath1Get) | **GET** /fake/inline/schema/anyof/path1 |
117-
*FakeApi* | [**fakeInlineSchemaAnyofPath2Get**](docs/FakeApi.md#fakeInlineSchemaAnyofPath2Get) | **GET** /fake/inline/schema/anyof/path2 |
118-
*FakeApi* | [**fakeInlineSchemaAnyofPath3Get**](docs/FakeApi.md#fakeInlineSchemaAnyofPath3Get) | **GET** /fake/inline/schema/anyof/path3 |
119-
*FakeApi* | [**op1**](docs/FakeApi.md#op1) | **POST** /fake/api/changeowner | op1
120-
*FakeApi* | [**op2**](docs/FakeApi.md#op2) | **POST** /fake/api/changename | op2
121-
*FakeApi* | [**op3**](docs/FakeApi.md#op3) | **POST** /fake/api/query/enum | op3
122-
*FakeApi* | [**refToRefParameter**](docs/FakeApi.md#refToRefParameter) | **GET** /ref/ref_to_parameter |
123-
*FakeApi* | [**refToRefParameterAnyof**](docs/FakeApi.md#refToRefParameterAnyof) | **GET** /ref/ref_to_operation_level_parameter_oneof |
124-
*FakeApi* | [**refToRefParameterOneof**](docs/FakeApi.md#refToRefParameterOneof) | **GET** /ref/ref_to_path_level_parameter_oneof |
125-
*FakeApi* | [**responseNoRef**](docs/FakeApi.md#responseNoRef) | **GET** /no_ref |
126-
*FakeApi* | [**responseRefToNoRef**](docs/FakeApi.md#responseRefToNoRef) | **GET** /ref/no_ref |
127-
*FakeApi* | [**responseRefToRef**](docs/FakeApi.md#responseRefToRef) | **GET** /ref/ref |
128122
*PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
129123
*PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
130124
*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
@@ -149,31 +143,10 @@ Class | Method | HTTP request | Description
149143

150144
## Documentation for Models
151145

152-
- [AllOfSimpleModel](docs/AllOfSimpleModel.md)
153-
- [Animal](docs/Animal.md)
154-
- [AnyTypeTest](docs/AnyTypeTest.md)
155-
- [ArrayOfSameRef](docs/ArrayOfSameRef.md)
156-
- [Cat](docs/Cat.md)
157146
- [Category](docs/Category.md)
158-
- [CircularReference1](docs/CircularReference1.md)
159-
- [CircularReference2](docs/CircularReference2.md)
160-
- [CircularReference3](docs/CircularReference3.md)
161-
- [CodesEnum](docs/CodesEnum.md)
162-
- [Dog](docs/Dog.md)
163-
- [FakeWebhooksSourcesDeletedPostRequest](docs/FakeWebhooksSourcesDeletedPostRequest.md)
164-
- [FakeWebhooksSourcesDeletedPostRequestEvent](docs/FakeWebhooksSourcesDeletedPostRequestEvent.md)
165147
- [ModelApiResponse](docs/ModelApiResponse.md)
166-
- [OneOfStringOrInt](docs/OneOfStringOrInt.md)
167148
- [Order](docs/Order.md)
168149
- [Pet](docs/Pet.md)
169-
- [PetWithTypesObjectNullAndRef](docs/PetWithTypesObjectNullAndRef.md)
170-
- [RefRefToPathLevelParameterOneofRefToOneofParameter](docs/RefRefToPathLevelParameterOneofRefToOneofParameter.md)
171-
- [RefToRefParameterAnyofRefToAnyofParameter](docs/RefToRefParameterAnyofRefToAnyofParameter.md)
172-
- [SelfReferenceAdditionalProperties](docs/SelfReferenceAdditionalProperties.md)
173-
- [SelfReferenceAnyOf](docs/SelfReferenceAnyOf.md)
174-
- [SelfReferenceOneOf](docs/SelfReferenceOneOf.md)
175-
- [SimpleModelWithArrayProperty](docs/SimpleModelWithArrayProperty.md)
176-
- [StringOrInt](docs/StringOrInt.md)
177150
- [Tag](docs/Tag.md)
178151
- [User](docs/User.md)
179152

0 commit comments

Comments
 (0)