Skip to content

Commit 81ddb24

Browse files
committed
fix: upgrade Spring Boot 3.5.11, Springdoc 2.8.16, regenerate OpenAPI spec, update OpenAPI generator 7.20.0 and resolve Jackson vulnerabilities
1 parent b57f9af commit 81ddb24

19 files changed

Lines changed: 122 additions & 69 deletions

File tree

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body:
3939
description: "Tool versions or environment details."
4040
placeholder: |
4141
- Java: 21
42-
- OpenAPI Generator: 7.19.0
42+
- OpenAPI Generator: 7.20.0
4343
- Spring Boot: 3.5.x
4444
- OS: macOS / Windows / Linux
4545
- type: textarea

PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ Please confirm the following:
101101

102102
**Type:** `feature` / `bugfix` / `docs` / `refactor` / `chore` / `test` / `ci`
103103
**Related Issue / Discussion:** (optional) `#number`
104-
**Target Release:** (optional) e.g. `v0.7.5`
104+
**Target Release:** (optional) e.g. `v0.7.6`
105105

106106
---
107107

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
[![Release](https://img.shields.io/github/v/release/bsayli/spring-boot-openapi-generics-clients?logo=github\&label=release)](https://github.com/bsayli/spring-boot-openapi-generics-clients/releases/latest)
55
[![codecov](https://codecov.io/gh/bsayli/spring-boot-openapi-generics-clients/branch/main/graph/badge.svg)](https://codecov.io/gh/bsayli/spring-boot-openapi-generics-clients)
66
[![Java](https://img.shields.io/badge/Java-21-red?logo=openjdk)](https://openjdk.org/projects/jdk/21/)
7-
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.10-green?logo=springboot)](https://spring.io/projects/spring-boot)
8-
[![OpenAPI Generator](https://img.shields.io/badge/OpenAPI%20Generator-7.19.0-blue?logo=openapiinitiative)](https://openapi-generator.tech/)
7+
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.11-green?logo=springboot)](https://spring.io/projects/spring-boot)
8+
[![OpenAPI Generator](https://img.shields.io/badge/OpenAPI%20Generator-7.20.0-blue?logo=openapiinitiative)](https://openapi-generator.tech/)
99
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
1010

1111
<p align="center">
@@ -284,7 +284,7 @@ generator-safe evolution.
284284
| --------------------------- |----------------------------------------------------------------------------------------------------------------------------|
285285
| **API Producer (Server)** | Spring Boot service publishing an **OpenAPI 3.1** spec via Springdoc, backed by the shared `api-contract` |
286286
| **OpenAPI Schema Enricher** | `OpenApiCustomizer` detecting `ServiceResponse<T>` and emitting vendor extensions (`x-api-wrapper`, `x-data-container`, …) |
287-
| **Code Generation** | OpenAPI Generator **7.19.0** (`java / restclient`) with Mustache overlays bound to the canonical contract |
287+
| **Code Generation** | OpenAPI Generator **7.20.0** (`java / restclient`) with Mustache overlays bound to the canonical contract |
288288
| **Generated Client** | Thin wrapper models, domain DTOs, APIs, `RestClient`, and `ApiClient` (invoker layer) |
289289
| **Error Handling** | RFC 9457 **Problem Details** decoded into `ApiProblemException` with extension support |
290290
| **API Consumer** | Application/service layer using adapter interfaces and receiving fully type-safe responses |

api-contract/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ Add to both server and client modules:
225225
<dependency>
226226
<groupId>io.github.bsayli</groupId>
227227
<artifactId>api-contract</artifactId>
228-
<version>0.7.5</version>
228+
<version>0.7.6</version>
229229
</dependency>
230230
```
231231

api-contract/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.bsayli</groupId>
88
<artifactId>api-contract</artifactId>
9-
<version>0.7.5</version>
9+
<version>0.7.6</version>
1010

1111
<name>api-contract</name>
1212
<description>Shared API contract for the unified {data, meta} response model and pagination primitives.</description>
@@ -47,7 +47,7 @@
4747
<maven.compiler.source>21</maven.compiler.source>
4848
<maven.compiler.target>21</maven.compiler.target>
4949
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
50-
<jackson-annotations.version>2.19.4</jackson-annotations.version>
50+
<jackson-annotations.version>2.21</jackson-annotations.version>
5151
</properties>
5252

5353
<dependencies>

customer-service-client/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# customer-service-client
22

33
[![Java 21](https://img.shields.io/badge/Java-21-red?logo=openjdk)](https://openjdk.org/projects/jdk/21/)
4-
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.10-green?logo=springboot)](https://spring.io/projects/spring-boot)
5-
[![OpenAPI Generator](https://img.shields.io/badge/OpenAPI%20Generator-7.19.0-blue?logo=openapiinitiative)](https://openapi-generator.tech/)
4+
[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.11-green?logo=springboot)](https://spring.io/projects/spring-boot)
5+
[![OpenAPI Generator](https://img.shields.io/badge/OpenAPI%20Generator-7.20.0-blue?logo=openapiinitiative)](https://openapi-generator.tech/)
66
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](../LICENSE)
77

88
---
@@ -99,7 +99,7 @@ mvn -q clean install
9999

100100
## ✅ What You Get
101101

102-
* **OpenAPI Generator 7.19.0** + **Spring `RestClient`**-based Java client.
102+
* **OpenAPI Generator 7.20.0** + **Spring `RestClient`**-based Java client.
103103
* Canonical response envelope: **`ServiceResponse<T>`** (from `api-contract`).
104104
* **Page-only nested generics** support: `ServiceResponse<Page<CustomerDto>>`.
105105
* **RFC 9457 Problem decoding** surfaced as `ApiProblemException`.

customer-service-client/pom.xml

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.bsayli</groupId>
88
<artifactId>customer-service-client</artifactId>
9-
<version>0.7.5</version>
9+
<version>0.7.6</version>
1010
<name>customer-service-client</name>
1111
<description>Generated client (RestClient) using generics-aware OpenAPI templates</description>
1212
<packaging>jar</packaging>
@@ -40,9 +40,8 @@
4040
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4141
<java.version>21</java.version>
4242

43-
<spring-boot.version>3.5.10</spring-boot.version>
44-
<openapi.generator.version>7.19.0</openapi.generator.version>
45-
<assertj.version>3.27.7</assertj.version>
43+
<spring-boot.version>3.5.11</spring-boot.version>
44+
<openapi.generator.version>7.20.0</openapi.generator.version>
4645

4746
<jakarta.validation.version>3.1.1</jakarta.validation.version>
4847
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
@@ -60,8 +59,11 @@
6059

6160
<openapi.templates.upstream>${project.build.directory}/upstream-templates</openapi.templates.upstream>
6261
<openapi.templates.effective>${project.build.directory}/effective-templates</openapi.templates.effective>
63-
<api-contract.version>0.7.5</api-contract.version>
62+
<api-contract.version>0.7.6</api-contract.version>
63+
<slf4j-api.version>2.0.17</slf4j-api.version>
64+
<logback.version>1.5.32</logback.version>
6465
<argLine/>
66+
<jackson.version>2.21.1</jackson.version>
6567
</properties>
6668

6769
<dependencies>
@@ -114,20 +116,39 @@
114116
</dependency>
115117

116118
<dependency>
117-
<groupId>org.assertj</groupId>
118-
<artifactId>assertj-core</artifactId>
119-
<version>${assertj.version}</version>
119+
<groupId>com.squareup.okhttp3</groupId>
120+
<artifactId>mockwebserver</artifactId>
121+
<version>${mockwebserver.version}</version>
120122
<scope>test</scope>
121123
</dependency>
122124

123125
<dependency>
124-
<groupId>com.squareup.okhttp3</groupId>
125-
<artifactId>mockwebserver</artifactId>
126-
<version>${mockwebserver.version}</version>
126+
<groupId>org.slf4j</groupId>
127+
<artifactId>slf4j-api</artifactId>
128+
<version>${slf4j-api.version}</version>
129+
</dependency>
130+
131+
<dependency>
132+
<groupId>ch.qos.logback</groupId>
133+
<artifactId>logback-classic</artifactId>
134+
<version>${logback.version}</version>
127135
<scope>test</scope>
128136
</dependency>
137+
129138
</dependencies>
130139

140+
<dependencyManagement>
141+
<dependencies>
142+
<dependency>
143+
<groupId>com.fasterxml.jackson</groupId>
144+
<artifactId>jackson-bom</artifactId>
145+
<version>${jackson.version}</version>
146+
<type>pom</type>
147+
<scope>import</scope>
148+
</dependency>
149+
</dependencies>
150+
</dependencyManagement>
151+
131152
<build>
132153
<resources>
133154
<resource>

customer-service-client/src/main/java/io/github/bsayli/openapi/client/adapter/support/ProblemDetailFallbacks.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.github.bsayli.openapi.client.generated.dto.ErrorItem;
44
import io.github.bsayli.openapi.client.generated.dto.ProblemDetail;
5-
import io.github.bsayli.openapi.client.generated.dto.ProblemDetailExtensions;
5+
import io.github.bsayli.openapi.client.generated.dto.ProblemExtensions;
66
import java.net.URI;
77
import org.springframework.http.HttpStatusCode;
88
import org.springframework.http.MediaType;
@@ -117,7 +117,7 @@ private static void addContextErrors(
117117
MediaType contentType,
118118
Throwable cause) {
119119

120-
ProblemDetailExtensions ext = new ProblemDetailExtensions();
120+
ProblemExtensions ext = new ProblemExtensions();
121121

122122
String ct = contentType != null ? contentType.toString() : "";
123123
if (!ct.isBlank()) {

customer-service-client/src/main/java/io/github/bsayli/openapi/client/common/problem/ApiProblemException.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.github.bsayli.openapi.client.generated.dto.ErrorItem;
44
import io.github.bsayli.openapi.client.generated.dto.ProblemDetail;
5-
import io.github.bsayli.openapi.client.generated.dto.ProblemDetailExtensions;
5+
import io.github.bsayli.openapi.client.generated.dto.ProblemExtensions;
66
import java.io.Serial;
77
import java.io.Serializable;
88
import java.util.List;
@@ -45,7 +45,7 @@ private static String resolveErrorCode(ProblemDetail pd) {
4545

4646
private static List<ErrorItem> resolveErrors(ProblemDetail pd) {
4747
if (pd == null) return List.of();
48-
ProblemDetailExtensions ext = pd.getExtensions();
48+
ProblemExtensions ext = pd.getExtensions();
4949
if (ext == null) return List.of();
5050
List<ErrorItem> list = ext.getErrors();
5151
if (list == null || list.isEmpty()) return List.of();
@@ -70,7 +70,7 @@ private static String buildMessage(ProblemDetail pd, int status) {
7070
}
7171

7272
private static int countErrors(ProblemDetail pd) {
73-
ProblemDetailExtensions ext = pd.getExtensions();
73+
ProblemExtensions ext = pd.getExtensions();
7474
if (ext == null) return 0;
7575
List<ErrorItem> errors = ext.getErrors();
7676
return (errors == null) ? 0 : errors.size();

customer-service-client/src/main/resources/customer-api-docs.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ openapi: 3.1.0
22
info:
33
title: Customer Service API
44
description: Customer Service API with type-safe generic responses using OpenAPI
5-
version: 0.7.5
5+
version: 0.7.6
66
servers:
77
- url: http://localhost:8084/customer-service
88
description: Local service URL
@@ -408,6 +408,16 @@ components:
408408
required:
409409
- code
410410
- message
411+
ProblemExtensions:
412+
type: object
413+
additionalProperties: false
414+
description: Additional problem metadata.
415+
properties:
416+
errors:
417+
type: array
418+
description: List of error items (field-level or domain-specific).
419+
items:
420+
$ref: "#/components/schemas/ErrorItem"
411421
ProblemDetail:
412422
type: object
413423
additionalProperties: false
@@ -434,15 +444,7 @@ components:
434444
type: string
435445
description: Application-specific error code.
436446
extensions:
437-
type: object
438-
additionalProperties: false
439-
description: Additional problem metadata.
440-
properties:
441-
errors:
442-
type: array
443-
description: List of error items (field-level or domain-specific).
444-
items:
445-
$ref: "#/components/schemas/ErrorItem"
447+
$ref: "#/components/schemas/ProblemExtensions"
446448
ServiceResponse:
447449
type: object
448450
properties:

0 commit comments

Comments
 (0)