Skip to content

Commit dde3a5e

Browse files
committed
Update to Quarkus 3.8 and resteasy-reactive
1 parent 7f21f62 commit dde3a5e

File tree

23 files changed

+170
-140
lines changed

23 files changed

+170
-140
lines changed

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
steps:
2525
- uses: actions/checkout@v4
2626
- name: Set up JDK
27-
uses: actions/setup-java@v3
27+
uses: actions/setup-java@v4
2828
with:
2929
distribution: 'temurin'
3030
java-version: ${{ matrix.java }}

code-first-openapi-quarkus/pom.xml

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

1919
<!-- artifact versions -->
2020
<lombok.version>1.18.30</lombok.version>
21-
<quarkus.version>3.7.1</quarkus.version>
21+
<quarkus.version>3.8.1</quarkus.version>
2222

2323
<!-- testing artifact versions -->
2424
<hamcrest.version>2.2</hamcrest.version>
@@ -43,9 +43,17 @@
4343

4444
<dependencies>
4545
<!-- Jakarta EE and MP dependencies -->
46+
<dependency>
47+
<groupId>jakarta.interceptor</groupId>
48+
<artifactId>jakarta.interceptor-api</artifactId>
49+
</dependency>
50+
<dependency>
51+
<groupId>jakarta.validation</groupId>
52+
<artifactId>jakarta.validation-api</artifactId>
53+
</dependency>
4654
<dependency>
4755
<groupId>io.quarkus</groupId>
48-
<artifactId>quarkus-resteasy-jsonb</artifactId>
56+
<artifactId>quarkus-resteasy-reactive-jsonb</artifactId>
4957
</dependency>
5058
<dependency>
5159
<groupId>io.quarkus</groupId>
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,36 @@
11
package ch.schlau.pesche.apidocs.openapi.codefirst.rest;
22

3+
import jakarta.enterprise.context.Dependent;
4+
import jakarta.enterprise.inject.Instance;
35
import jakarta.json.bind.Jsonb;
46
import jakarta.json.bind.JsonbBuilder;
57
import jakarta.json.bind.JsonbConfig;
68

79
import ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model.PanJsonAdapter;
8-
import lombok.experimental.UtilityClass;
10+
import io.quarkus.jsonb.JsonbConfigCustomizer;
911

10-
@UtilityClass
1112
public class JsonConfiguration {
1213

13-
public static final JsonbConfig JSON_CONFIG = new JsonbConfig()
14+
public static JsonbConfig createJsonbConfig() {
15+
return new JsonbConfig()
1416
.withAdapters(new PanJsonAdapter())
1517
;
18+
}
1619

17-
public static final Jsonb JSONB = JsonbBuilder.create(JSON_CONFIG);
20+
public static Jsonb createJsonb() {
21+
return JsonbBuilder.create(createJsonbConfig());
22+
}
23+
24+
// Replaces the CDI producer for JsonbConfig built into Quarkus
25+
@Dependent
26+
JsonbConfig jsonConfig(Instance<JsonbConfigCustomizer> customizers) {
27+
JsonbConfig config = createJsonbConfig();
28+
29+
// Apply all JsonbConfigCustomizer beans (incl. Quarkus)
30+
for (JsonbConfigCustomizer customizer : customizers) {
31+
customizer.customize(config);
32+
}
33+
34+
return config;
35+
}
1836
}

code-first-openapi-quarkus/src/main/java/ch/schlau/pesche/apidocs/openapi/codefirst/rest/JsonContextResolver.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

code-first-openapi-quarkus/src/test/java/ch/schlau/pesche/apidocs/openapi/codefirst/txproc/PinCheckRequestTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,39 @@
11
package ch.schlau.pesche.apidocs.openapi.codefirst.txproc;
22

3-
import static ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration.JSONB;
43
import static org.hamcrest.CoreMatchers.is;
54
import static org.hamcrest.MatcherAssert.assertThat;
65

76
import java.util.UUID;
87

8+
import jakarta.json.bind.Jsonb;
9+
910
import org.junit.jupiter.api.Test;
1011

12+
import ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration;
1113
import ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model.Pan;
1214

1315
class PinCheckRequestTest {
1416

1517
@Test
1618
void json_roundtrip() {
1719

20+
Jsonb jsonb = JsonConfiguration.createJsonb();
21+
1822
PinCheckRequest request = new PinCheckRequest();
1923
request.setUuid(UUID.fromString("abcdabcd-1234-5678-aaaa-cccccccccccc"));
2024

2125
// JSON serialization
22-
String jsonString1 = JSONB.toJson(request);
26+
String jsonString1 = jsonb.toJson(request);
2327
assertThat(jsonString1, is("{\"uuid\":\"abcdabcd-1234-5678-aaaa-cccccccccccc\"}"));
2428

2529
// set the other properties as well
2630
request.setPan(new Pan("111222333444"));
2731
request.setPinBlock("-secret-");
28-
String jsonString2 = JSONB.toJson(request);
32+
String jsonString2 = jsonb.toJson(request);
2933
assertThat(jsonString2, is("{\"pan\":\"111222333444\",\"pinBlock\":\"-secret-\",\"uuid\":\"abcdabcd-1234-5678-aaaa-cccccccccccc\"}"));
3034

3135
// JSON deserialization
32-
PinCheckRequest roundtrip = JSONB.fromJson(jsonString2, PinCheckRequest.class);
36+
PinCheckRequest roundtrip = jsonb.fromJson(jsonString2, PinCheckRequest.class);
3337
assertThat(roundtrip.getUuid().toString(), is("abcdabcd-1234-5678-aaaa-cccccccccccc"));
3438
assertThat(roundtrip.getPan().getPan(), is("111222333444"));
3539
assertThat(roundtrip.getPinBlock(), is("-secret-"));
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package ch.schlau.pesche.apidocs.openapi.codefirst.txproc;
22

3-
import static ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration.JSONB;
43
import static org.hamcrest.CoreMatchers.is;
54
import static org.hamcrest.MatcherAssert.assertThat;
65

76
import java.util.UUID;
87

8+
import jakarta.json.bind.Jsonb;
9+
910
import org.junit.jupiter.api.Test;
1011

12+
import ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration;
1113
import ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model.EmvTags;
1214
import ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model.Pan;
1315

@@ -16,6 +18,8 @@ class PurchaseAuthRequestTest {
1618
@Test
1719
void json_roundtrip() {
1820

21+
Jsonb jsonb = JsonConfiguration.createJsonb();
22+
1923
PurchaseAuthRequest request = new PurchaseAuthRequest();
2024
request.setUuid(UUID.fromString("abcdabcd-1234-5678-aaaa-cccccccccccc"));
2125
request.setPan(new Pan("42"));
@@ -24,11 +28,11 @@ void json_roundtrip() {
2428
request.setEmvTags(emvTags);
2529

2630
// JSON serialization
27-
String jsonString = JSONB.toJson(request);
31+
String jsonString = jsonb.toJson(request);
2832
assertThat(jsonString, is("{\"emvTags\":{\"84\":\"A0000000041010\"},\"pan\":\"42\",\"uuid\":\"abcdabcd-1234-5678-aaaa-cccccccccccc\"}"));
2933

3034
// JSON deserialization
31-
PurchaseAuthRequest roundtrip = JSONB.fromJson(jsonString, PurchaseAuthRequest.class);
35+
PurchaseAuthRequest roundtrip = jsonb.fromJson(jsonString, PurchaseAuthRequest.class);
3236
assertThat(roundtrip.getUuid().toString(), is("abcdabcd-1234-5678-aaaa-cccccccccccc"));
3337
}
3438
}

code-first-openapi-quarkus/src/test/java/ch/schlau/pesche/apidocs/openapi/codefirst/txproc/model/EmvTagsTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
package ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model;
22

3-
import static ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration.JSONB;
43
import static org.hamcrest.CoreMatchers.is;
54
import static org.hamcrest.MatcherAssert.assertThat;
65

76
import jakarta.json.bind.Jsonb;
87

98
import org.junit.jupiter.api.Test;
109

10+
import ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration;
11+
1112
class EmvTagsTest {
1213

1314
@Test
1415
void json_roundtrip() {
1516

16-
Jsonb jsonb = JSONB;
17+
Jsonb jsonb = JsonConfiguration.createJsonb();
1718

1819
EmvTags emv = new EmvTags();
1920
emv.setX84("A0000000043060");

code-first-openapi-quarkus/src/test/java/ch/schlau/pesche/apidocs/openapi/codefirst/txproc/model/PanTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package ch.schlau.pesche.apidocs.openapi.codefirst.txproc.model;
22

3-
import static ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration.JSONB;
43
import static org.hamcrest.CoreMatchers.is;
54
import static org.hamcrest.CoreMatchers.nullValue;
65
import static org.hamcrest.MatcherAssert.assertThat;
@@ -9,6 +8,8 @@
98

109
import org.junit.jupiter.api.Test;
1110

11+
import ch.schlau.pesche.apidocs.openapi.codefirst.rest.JsonConfiguration;
12+
1213
class PanTest {
1314

1415
@Test
@@ -29,7 +30,7 @@ void asMaskedPan_invalid() {
2930
@Test
3031
void json_roundtrip() {
3132

32-
Jsonb jsonb = JSONB;
33+
Jsonb jsonb = JsonConfiguration.createJsonb();
3334

3435
Pan pan = new Pan("4444333322221111");
3536

code-first-swagger/pom.xml

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

1919
<!-- artifact versions -->
2020
<lombok.version>1.18.30</lombok.version>
21-
<quarkus.version>3.7.1</quarkus.version>
21+
<quarkus.version>3.8.1</quarkus.version>
2222
<swagger.version>2.2.20</swagger.version>
2323

2424
<!-- testing artifact versions -->
@@ -44,9 +44,17 @@
4444

4545
<dependencies>
4646
<!-- Jakarta EE and MP dependencies -->
47+
<dependency>
48+
<groupId>jakarta.interceptor</groupId>
49+
<artifactId>jakarta.interceptor-api</artifactId>
50+
</dependency>
51+
<dependency>
52+
<groupId>jakarta.validation</groupId>
53+
<artifactId>jakarta.validation-api</artifactId>
54+
</dependency>
4755
<dependency>
4856
<groupId>io.quarkus</groupId>
49-
<artifactId>quarkus-resteasy-jsonb</artifactId>
57+
<artifactId>quarkus-resteasy-reactive-jsonb</artifactId>
5058
</dependency>
5159
<dependency>
5260
<groupId>io.quarkus</groupId>
Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,36 @@
11
package ch.schlau.pesche.apidocs.swagger.codefirst.rest;
22

3+
import jakarta.enterprise.context.Dependent;
4+
import jakarta.enterprise.inject.Instance;
35
import jakarta.json.bind.Jsonb;
46
import jakarta.json.bind.JsonbBuilder;
57
import jakarta.json.bind.JsonbConfig;
68

79
import ch.schlau.pesche.apidocs.swagger.codefirst.txproc.model.PanJsonAdapter;
8-
import lombok.experimental.UtilityClass;
10+
import io.quarkus.jsonb.JsonbConfigCustomizer;
911

10-
@UtilityClass
1112
public class JsonConfiguration {
1213

13-
public static final JsonbConfig JSON_CONFIG = new JsonbConfig()
14+
public static JsonbConfig createJsonbConfig() {
15+
return new JsonbConfig()
1416
.withAdapters(new PanJsonAdapter())
1517
;
18+
}
1619

17-
public static final Jsonb JSONB = JsonbBuilder.create(JSON_CONFIG);
20+
public static Jsonb createJsonb() {
21+
return JsonbBuilder.create(createJsonbConfig());
22+
}
23+
24+
// Replaces the CDI producer for JsonbConfig built into Quarkus
25+
@Dependent
26+
JsonbConfig jsonConfig(Instance<JsonbConfigCustomizer> customizers) {
27+
JsonbConfig config = createJsonbConfig();
28+
29+
// Apply all JsonbConfigCustomizer beans (incl. Quarkus)
30+
for (JsonbConfigCustomizer customizer : customizers) {
31+
customizer.customize(config);
32+
}
33+
34+
return config;
35+
}
1836
}

code-first-swagger/src/main/java/ch/schlau/pesche/apidocs/swagger/codefirst/rest/JsonContextResolver.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,41 @@
11
package ch.schlau.pesche.apidocs.swagger.codefirst.txproc;
22

3-
import static ch.schlau.pesche.apidocs.swagger.codefirst.rest.JsonConfiguration.JSONB;
43
import static org.hamcrest.CoreMatchers.is;
54
import static org.hamcrest.MatcherAssert.assertThat;
65

76
import java.util.UUID;
87

8+
import jakarta.json.bind.Jsonb;
9+
910
import org.junit.jupiter.api.Test;
1011

12+
import ch.schlau.pesche.apidocs.swagger.codefirst.rest.JsonConfiguration;
1113
import ch.schlau.pesche.apidocs.swagger.codefirst.txproc.model.Pan;
1214

1315
class PinCheckRequestTest {
1416

1517
@Test
1618
void json_roundtrip() {
1719

20+
Jsonb jsonb = JsonConfiguration.createJsonb();
21+
1822
PinCheckRequest request = new PinCheckRequest();
1923
request.setUuid(UUID.fromString("abcdabcd-1234-5678-aaaa-cccccccccccc"));
2024

2125
// JSON serialization
22-
String jsonString1 = JSONB.toJson(request);
26+
String jsonString1 = jsonb.toJson(request);
2327
assertThat(jsonString1, is("{\"uuid\":\"abcdabcd-1234-5678-aaaa-cccccccccccc\"}"));
2428

2529
// set the other properties as well
2630
request.setPan(new Pan("111222333444"));
2731
request.setPinBlock("-secret-");
28-
String jsonString2 = JSONB.toJson(request);
32+
String jsonString2 = jsonb.toJson(request);
2933
assertThat(jsonString2, is("{\"pan\":\"111222333444\",\"pinBlock\":\"-secret-\",\"uuid\":\"abcdabcd-1234-5678-aaaa-cccccccccccc\"}"));
3034

3135
// JSON deserialization
32-
PinCheckRequest roundtrip = JSONB.fromJson(jsonString2, PinCheckRequest.class);
36+
PinCheckRequest roundtrip = jsonb.fromJson(jsonString2, PinCheckRequest.class);
3337
assertThat(roundtrip.getUuid().toString(), is("abcdabcd-1234-5678-aaaa-cccccccccccc"));
3438
assertThat(roundtrip.getPan().getPan(), is("111222333444"));
3539
assertThat(roundtrip.getPinBlock(), is("-secret-"));
3640
}
37-
}
41+
}

0 commit comments

Comments
 (0)