You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,14 +16,15 @@ This project follows a contract-first release discipline:
16
16
17
17
OpenAPI Generics 1.2.1 simplifies contract-driven wrapper reconstruction by making the generated OpenAPI document the single source of truth for envelope identity.
18
18
19
-
This release removes redundant client-side envelope configuration, completes end-to-end validation for application-defined generic containers with the built-in `ServiceResponse<T>` envelope, and continues platform verification and dependency alignment without changing runtime behavior.
19
+
This release removes redundant client-side envelope configuration, completes end-to-end validation for application-defined generic containers with the built-in `ServiceResponse<T>` envelope, and expands platform verification across contract reconstruction, framework compatibility, and standard HTTP transport behavior without changing runtime behavior.
20
20
21
21
### Added
22
22
23
23
- Added the `x-api-wrapper-type` vendor extension to preserve the fully qualified Java envelope type in projected wrapper schemas.
24
24
- Added contract-driven envelope reconstruction in the Java code generator based on `x-api-wrapper-type`.
25
25
- Added end-to-end validation for application-defined generic containers used with the built-in `ServiceResponse<T>` envelope.
26
26
- Expanded sample coverage for producer → OpenAPI → generated client → consumer validation using application-owned generic containers.
27
+
- Added a dedicated `transport-coverage` sample for multipart upload, binary download, and form-urlencoded compatibility with the Java RestClient generator.
27
28
28
29
### Changed
29
30
@@ -44,6 +45,11 @@ This release removes redundant client-side envelope configuration, completes end
44
45
- Added verification that generated clients reconstruct wrapper inheritance without client-side envelope configuration.
45
46
- Verified built-in `ServiceResponse<T>` and BYOE envelope generation using the same metadata-driven reconstruction pipeline.
- Added transport regression coverage for `multipart/form-data`, `application/octet-stream`, and `application/x-www-form-urlencoded`.
49
+
- Verified that standard OpenAPI Generator Java RestClient transport behavior remains intact while generic JSON response reconstruction is enabled.
50
+
- Verified multipart file plus structured JSON part generation together with `ServiceResponse<T>` reconstruction.
51
+
- Verified binary download generation using the standard Spring `Resource` abstraction without wrapper interference.
52
+
- Verified form-urlencoded request generation together with generic response reconstruction.
47
53
- Verified the Spring Boot 4 integration stack on Spring Boot 4.1.0, Springdoc 3.1.0, and Java 25 LTS.
48
54
- Verified mixed Java baselines with Java 21 for Spring Boot 3 samples and Java 25 for Spring Boot 4 samples while published platform artifacts continue targeting Java 17+.
|**Transport coverage sample**| Focused regression suite validating standard HTTP transport compatibility together with generic response reconstruction. |
94
90
95
91
The integration stacks are intended for first-time users who want to run the platform end-to-end.
96
92
97
-
The typecoverage samples are intended for validating the core OpenAPI Generics reconstruction pipeline across many response shapes.
93
+
The type-coverage samples validate the core OpenAPI Generics reconstruction pipeline across many response shapes.
98
94
99
-
---
95
+
The transport-coverage sample validates that the custom `java-generics-contract` generator remains compatible with standard OpenAPI Generator transport behavior.
100
96
101
97
## Prerequisites
102
98
@@ -107,10 +103,12 @@ For Docker-based sample execution:
107
103
108
104
For local Maven builds:
109
105
110
-
- Java 17+
106
+
- Java 25
111
107
- Maven 3.9+
112
108
113
-
---
109
+
The sample suite includes both Java 21 and Java 25 modules. Building the complete `samples` reactor therefore requires JDK 25.
110
+
111
+
Published OpenAPI Generics platform artifacts continue to target Java 17+.
|`type-coverage/service-response`| Validates the canonical platform-provided `ServiceResponse<T>` contract.|
287
-
|`type-coverage/byoe-response`| Validates Bring Your Own Envelope support using a user-owned `ApiResponse<T>` contract. |
260
+
| Sample | Purpose |
261
+
|---|---|
262
+
|`type-coverage/service-response`| Validates the platform-provided `ServiceResponse<T>` contract. |
263
+
|`type-coverage/byoe-response`| Validates Bring Your Own Envelope using a user-owned `ApiResponse<T>` contract. |
288
264
289
-
These samples are used as executable regression suites for projection metadata, vendor extensions, wrapper reconstruction, generated client typing, runtime deserialization, and consumer compatibility.
265
+
See [`type-coverage/README.md`](type-coverage/README.md)for the complete validation matrix.
290
266
291
-
See [`type-coverage/README.md`](type-coverage/README.md) for the full validation matrix.
267
+
## Transport Coverage Sample
292
268
293
-
---
269
+
The `transport-coverage` directory validates that OpenAPI Generics remains transport-neutral.
294
270
295
-
## Local Maven Build
271
+
Rather than introducing new transport behavior, it verifies that the custom `java-generics-contract` generator preserves the standard transport functionality provided by the upstream Java RestClient generator.
272
+
273
+
The initial transport matrix covers:
296
274
297
-
Docker is the recommended path for running the integration stacks.
275
+
-`multipart/form-data`
276
+
-`application/octet-stream`
277
+
-`application/x-www-form-urlencoded`
298
278
299
-
For local build verification, run from the `samples` directory:
279
+
while simultaneously validating generic response reconstruction where JSON responses are returned.
280
+
281
+
Available sample:
282
+
283
+
| Sample | Purpose |
284
+
| --- | --- |
285
+
|`transport-coverage`| Validates transport compatibility together with generic response reconstruction. |
286
+
287
+
See [`transport-coverage/README.md`](transport-coverage/README.md) for transport scenarios, validation flow, and regression scope.
288
+
289
+
## Local Maven Build
290
+
291
+
From the `samples` directory:
300
292
301
293
```bash
302
294
mvn clean install
303
295
```
304
296
305
-
This builds the sample modules and verifies that generated client artifacts compile successfully.
306
-
307
-
Individual services can also be started locally from their module directories when needed.
297
+
This builds every sample module and verifies that generated client artifacts compile successfully.
308
298
309
-
---
299
+
Individual services can also be started directly from their module directories when needed.
310
300
311
301
## What to Observe
312
302
@@ -324,7 +314,7 @@ Observe that:
324
314
- paginated generic responses keep their generic structure
For example, generated response wrappers should remain thin contract bindings rather than duplicated envelope implementations:
317
+
For example:
328
318
329
319
```java
330
320
publicclassServiceResponsePageCustomerDto
@@ -335,25 +325,26 @@ The generated class binds the generic parameters.
335
325
336
326
It does not become the owner of the envelope structure.
337
327
338
-
---
339
-
340
328
## Notes
341
329
342
330
- Samples use in-memory data.
343
331
- No external database is required.
344
332
- The sample domain is intentionally simple.
345
-
- The focus is contract projection, generated client reconstruction, and downstream reuse.
346
333
- Spring Boot 3 and Spring Boot 4 stacks are intentionally equivalent.
347
-
- Type-coverage samples provide focused regression validation beyond the customer-service integration flow.
348
-
- You do not need to run the Spring Boot 3 and Spring Boot 4 stacks at the same time.
349
-
350
-
---
334
+
- Type-coverage samples validate generic reconstruction across supported contract shapes.
335
+
- Transport-coverage validates compatibility with standard OpenAPI Generator transport behavior.
336
+
- You do not need to run every sample simultaneously.
351
337
352
338
## Summary
353
339
354
340
These samples provide runnable environments for validating the OpenAPI Generics contract lifecycle.
355
341
356
-
They prove that a Java contract can be projected into OpenAPI, reconstructed into a generated Java client, and reused by a downstream consumer without redefining equivalent wrapper or DTO models.
0 commit comments