Skip to content

Commit 72888a0

Browse files
committed
chore(release): prepare 0.6.3
- Fix incorrect package reference in CustomerControllerAdvice - Add missing integration tests for CustomerController - Strengthen coverage with unit & integration tests (CustomerService, ClientAdapter) - Add JaCoCo setup for unit/integration test reporting - Integrate Codecov reporting into CI workflow
1 parent 541e983 commit 72888a0

File tree

13 files changed

+565
-24
lines changed

13 files changed

+565
-24
lines changed

.github/workflows/build.yml

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ on:
77

88
permissions:
99
contents: read
10+
pull-requests: write
1011

1112
jobs:
1213
build:
1314
runs-on: ubuntu-latest
15+
1416
steps:
1517
- name: Checkout repository
1618
uses: actions/checkout@v4
@@ -20,19 +22,17 @@ jobs:
2022
with:
2123
java-version: '21'
2224
distribution: 'temurin'
25+
cache: maven
2326

24-
- name: Build customer-service
25-
run: mvn -B clean verify
27+
- name: Build customer-service (tests + coverage)
28+
run: mvn -B -q -ntp clean verify
2629
working-directory: customer-service
2730

28-
- name: Build customer-service-client
29-
run: mvn -B clean verify
31+
32+
- name: Build customer-service-client (tests + coverage)
33+
run: mvn -B -q -ntp clean verify
3034
working-directory: customer-service-client
3135

32-
- name: List generated sources and spec
33-
run: |
34-
ls -R customer-service-client/target/generated-sources/openapi/src/gen/java || true
35-
ls -l customer-service-client/target/classes/customer-api-docs.yaml || true
3636

3737
- name: Upload generated client sources
3838
uses: actions/upload-artifact@v4
@@ -48,4 +48,26 @@ jobs:
4848
name: customer-api-docs
4949
path: customer-service-client/target/classes/customer-api-docs.yaml
5050
if-no-files-found: warn
51-
retention-days: 7
51+
retention-days: 7
52+
53+
- name: Upload coverage (customer-service)
54+
uses: codecov/codecov-action@v4
55+
with:
56+
token: ${{ secrets.CODECOV_TOKEN }}
57+
files: |
58+
customer-service/target/site/jacoco/jacoco.xml
59+
customer-service/target/site/jacoco-it/jacoco.xml
60+
flags: customer-service
61+
name: customer-service
62+
fail_ci_if_error: false
63+
64+
- name: Upload coverage (customer-service-client)
65+
uses: codecov/codecov-action@v4
66+
with:
67+
token: ${{ secrets.CODECOV_TOKEN }}
68+
files: |
69+
customer-service-client/target/site/jacoco/jacoco.xml
70+
customer-service-client/target/site/jacoco-it/jacoco.xml
71+
flags: customer-service-client
72+
name: customer-service-client
73+
fail_ci_if_error: false

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ You don’t need to write a single line of code — the generator does the work.
131131
## 🛠 Tech Stack & Features
132132

133133
* 🚀 **Java 21** — modern language features
134-
* 🍃 **Spring Boot 3.4.9** — microservice foundation
134+
* 🍃 **Spring Boot 3.4.10** — microservice foundation
135135
* 📖 **Springdoc OpenAPI** — API documentation
136136
* 🔧 **OpenAPI Generator 7.x** — client code generation
137137
* 🧩 **Custom Mustache templates** — generics-aware wrappers
@@ -145,8 +145,10 @@ You don’t need to write a single line of code — the generator does the work.
145145
The long-term goal is to publish the core pieces as standalone modules, so that any project using
146146
a generic response type like `ServiceResponse<T>` can enable the same behavior with **just one dependency**:
147147

148-
- `io.github.bsayli:openapi-generics-autoreg`**server-side**: automatically registers wrapper schemas in the OpenAPI spec.
149-
- `io.github.bsayli:openapi-generics-templates`**client-side**: plugs into OpenAPI Generator for thin, type-safe wrappers.
148+
- `io.github.bsayli:openapi-generics-autoreg`**server-side**: automatically registers wrapper schemas in the OpenAPI
149+
spec.
150+
- `io.github.bsayli:openapi-generics-templates`**client-side**: plugs into OpenAPI Generator for thin, type-safe
151+
wrappers.
150152

151153
This will let teams adopt **generics-aware OpenAPI support** without copying customizers or Mustache templates —
152154
just by adding a Maven/Gradle dependency.

codecov.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
coverage:
2+
status:
3+
project:
4+
default:
5+
target: auto
6+
threshold: 1%
7+
patch:
8+
default:
9+
target: 70%
10+
11+
comment:
12+
layout: "reach, diff, flags, files"
13+
behavior: default
14+
15+
ignore:
16+
- "**/generated/**"
17+
- "**/openapi/**"

customer-service-client/pom.xml

Lines changed: 74 additions & 5 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.6.2</version>
9+
<version>0.6.3</version>
1010
<name>customer-service-client</name>
1111
<description>Generated client (RestClient) using generics-aware OpenAPI templates</description>
1212
<packaging>jar</packaging>
@@ -18,17 +18,21 @@
1818

1919
<spring-boot.version>3.4.10</spring-boot.version>
2020
<openapi.generator.version>7.15.0</openapi.generator.version>
21-
<maven.compiler.plugin.version>3.13.0</maven.compiler.plugin.version>
22-
<build.helper.plugin.version>3.6.0</build.helper.plugin.version>
23-
<maven.resources.plugin.version>3.3.1</maven.resources.plugin.version>
24-
<maven.dependency.plugin.version>3.8.1</maven.dependency.plugin.version>
2521

2622
<jakarta.validation.version>3.1.1</jakarta.validation.version>
2723
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
2824
<mockwebserver.version>5.1.0</mockwebserver.version>
2925
<httpclient5.version>5.5</httpclient5.version>
3026
<junit-jupiter.version>5.13.4</junit-jupiter.version>
3127

28+
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
29+
<maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version>
30+
<jacoco-maven-plugin.version>0.8.13</jacoco-maven-plugin.version>
31+
<maven.compiler.plugin.version>3.13.0</maven.compiler.plugin.version>
32+
<build.helper.plugin.version>3.6.0</build.helper.plugin.version>
33+
<maven.resources.plugin.version>3.3.1</maven.resources.plugin.version>
34+
<maven.dependency.plugin.version>3.8.1</maven.dependency.plugin.version>
35+
3236
<openapi.templates.upstream>${project.build.directory}/upstream-templates</openapi.templates.upstream>
3337
<openapi.templates.effective>${project.build.directory}/effective-templates</openapi.templates.effective>
3438
</properties>
@@ -243,6 +247,71 @@
243247
<encoding>${project.build.sourceEncoding}</encoding>
244248
</configuration>
245249
</plugin>
250+
251+
<plugin>
252+
<groupId>org.apache.maven.plugins</groupId>
253+
<artifactId>maven-surefire-plugin</artifactId>
254+
<version>${maven-surefire-plugin.version}</version>
255+
<configuration>
256+
<useModulePath>false</useModulePath>
257+
</configuration>
258+
</plugin>
259+
260+
<plugin>
261+
<groupId>org.apache.maven.plugins</groupId>
262+
<artifactId>maven-failsafe-plugin</artifactId>
263+
<version>${maven-failsafe-plugin.version}</version>
264+
<executions>
265+
<execution>
266+
<goals>
267+
<goal>integration-test</goal>
268+
<goal>verify</goal>
269+
</goals>
270+
<configuration>
271+
<includes>
272+
<include>**/*IT.java</include>
273+
</includes>
274+
<useModulePath>false</useModulePath>
275+
</configuration>
276+
</execution>
277+
</executions>
278+
</plugin>
279+
280+
<plugin>
281+
<groupId>org.jacoco</groupId>
282+
<artifactId>jacoco-maven-plugin</artifactId>
283+
<version>${jacoco-maven-plugin.version}</version>
284+
<executions>
285+
<execution>
286+
<id>prepare-agent</id>
287+
<goals>
288+
<goal>prepare-agent</goal>
289+
</goals>
290+
</execution>
291+
292+
<execution>
293+
<id>prepare-agent-integration</id>
294+
<goals>
295+
<goal>prepare-agent-integration</goal>
296+
</goals>
297+
</execution>
298+
299+
<execution>
300+
<id>report</id>
301+
<phase>verify</phase>
302+
<goals>
303+
<goal>report</goal>
304+
</goals>
305+
</execution>
306+
<execution>
307+
<id>report-integration</id>
308+
<phase>verify</phase>
309+
<goals>
310+
<goal>report-integration</goal>
311+
</goals>
312+
</execution>
313+
</executions>
314+
</plugin>
246315
</plugins>
247316
</build>
248317
</project>

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

Lines changed: 1 addition & 1 deletion
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.6.2
5+
version: 0.6.3
66
servers:
77
- url: http://localhost:8084/customer-service
88
description: Local service URL

customer-service-client/src/test/java/io/github/bsayli/openapi/client/adapter/CustomerClientIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ void getCustomers_shouldReturn200_andMappedBody() {
128128
assertEquals(200, resp.getStatus());
129129
assertEquals("LISTED", resp.getMessage());
130130
assertNotNull(resp.getData());
131+
assertNotNull(resp.getData().getCustomers());
131132
assertEquals(2, resp.getData().getCustomers().size());
132133
}
133134

0 commit comments

Comments
 (0)