Skip to content

Commit 71452a9

Browse files
smals-mavhpvdbosch
andauthored
Implement Jackson3 support and maintain Jackson2 support (#117)
* Implement Jackson3 support and maintain Jackson2 support * Update JDK version in github actions * Add java17 module * add jackson2 dependencies to integration tests * drop 'provides' in module-info as it doesn't work for optional dependencies * remove use of deprecated jackson3 method --------- Co-authored-by: pvdb <peter.vandenbosch@smals.be>
1 parent 803978e commit 71452a9

File tree

41 files changed

+1435
-390
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1435
-390
lines changed

.github/workflows/maven_release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ jobs:
1515
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1616
with:
1717
fetch-depth: 0
18-
- name: Set up JDK 11
18+
- name: Set up JDK 17
1919
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
2020
with:
21-
java-version: 11
21+
java-version: 17
2222
distribution: 'temurin'
2323
- name: Cache and restore Maven packages on master
2424
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
@@ -59,7 +59,7 @@ jobs:
5959
- name: Set up Maven Central Repository
6060
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
6161
with:
62-
java-version: 11
62+
java-version: 17
6363
distribution: 'temurin'
6464
server-id: central
6565
server-username: MAVEN_USERNAME

.github/workflows/maven_test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ jobs:
1717
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1818
with:
1919
fetch-depth: 0
20-
- name: Set up JDK 11
20+
- name: Set up JDK 17
2121
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
2222
with:
23-
java-version: 11
23+
java-version: 17
2424
distribution: 'temurin'
2525
- name: Cache and restore Maven packages on master
2626
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3

pom.xml

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
<!-- region Dependency Versions -->
3737
<!-- Validator 8+ requires Java 11, Validator 9+ requires Java 17. -->
3838
<hibernate-validator.version>7.0.5.Final</hibernate-validator.version>
39-
<jackson-bom.version>2.21.1</jackson-bom.version>
39+
<jackson2-bom.version>2.21.1</jackson2-bom.version>
40+
<jackson3-bom.version>3.0.4</jackson3-bom.version>
4041
<javax-validation-api.version>2.0.1.Final</javax-validation-api.version>
4142
<jakarta-validation-api.version>3.1.1</jakarta-validation-api.version>
4243
<junit.version>5.14.3</junit.version>
@@ -60,10 +61,17 @@
6061
<dependency>
6162
<groupId>com.fasterxml.jackson</groupId>
6263
<artifactId>jackson-bom</artifactId>
63-
<version>${jackson-bom.version}</version>
64+
<version>${jackson2-bom.version}</version>
6465
<scope>import</scope>
6566
<type>pom</type>
6667
</dependency>
68+
<dependency>
69+
<groupId>tools.jackson</groupId>
70+
<artifactId>jackson-bom</artifactId>
71+
<version>${jackson3-bom.version}</version>
72+
<type>pom</type>
73+
<scope>import</scope>
74+
</dependency>
6775
<dependency>
6876
<groupId>org.junit</groupId>
6977
<artifactId>junit-bom</artifactId>
@@ -78,6 +86,12 @@
7886
<dependency>
7987
<groupId>com.fasterxml.jackson.core</groupId>
8088
<artifactId>jackson-databind</artifactId>
89+
<scope>provided</scope>
90+
</dependency>
91+
<dependency>
92+
<groupId>tools.jackson.core</groupId>
93+
<artifactId>jackson-databind</artifactId>
94+
<scope>provided</scope>
8195
</dependency>
8296
<dependency>
8397
<groupId>javax.validation</groupId>
@@ -166,6 +180,20 @@
166180
<multiReleaseOutput>true</multiReleaseOutput>
167181
</configuration>
168182
</execution>
183+
<execution>
184+
<id>compile-java-17</id>
185+
<phase>compile</phase>
186+
<goals>
187+
<goal>compile</goal>
188+
</goals>
189+
<configuration>
190+
<release>17</release>
191+
<compileSourceRoots>
192+
<compileSourceRoot>${project.basedir}/src/main/java17</compileSourceRoot>
193+
</compileSourceRoots>
194+
<multiReleaseOutput>true</multiReleaseOutput>
195+
</configuration>
196+
</execution>
169197
</executions>
170198
</plugin>
171199
<plugin>
@@ -233,7 +261,7 @@
233261
</execution>
234262
</executions>
235263
<configuration>
236-
<source>${java.version}</source>
264+
<source>17</source>
237265
<doclint>none</doclint>
238266
<detectJavaApiLink>false</detectJavaApiLink>
239267
<failOnWarnings>false</failOnWarnings>

src/it/jakarta-jar-classpath/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<artifactId>jakarta.validation-api</artifactId>
2626
<version>3.1.1</version>
2727
</dependency>
28+
<dependency>
29+
<groupId>com.fasterxml.jackson.core</groupId>
30+
<artifactId>jackson-databind</artifactId>
31+
<version>2.21.1</version>
32+
</dependency>
2833
</dependencies>
2934

3035
<build>

src/it/jakarta-jar-modulepath/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<artifactId>jakarta.validation-api</artifactId>
2626
<version>3.1.1</version>
2727
</dependency>
28+
<dependency>
29+
<groupId>com.fasterxml.jackson.core</groupId>
30+
<artifactId>jackson-databind</artifactId>
31+
<version>2.21.1</version>
32+
</dependency>
2833
</dependencies>
2934

3035
<build>

src/it/jakarta-jlink/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
<artifactId>jakarta.validation-api</artifactId>
2626
<version>3.1.1</version>
2727
</dependency>
28+
<dependency>
29+
<groupId>com.fasterxml.jackson.core</groupId>
30+
<artifactId>jackson-databind</artifactId>
31+
<version>2.21.1</version>
32+
</dependency>
2833
</dependencies>
2934

3035
<build>

src/main/java/org/openapitools/jackson/nullable/JsonNullableBeanPropertyWriter.java renamed to src/main/java/org/openapitools/jackson/nullable/JsonNullableJackson2BeanPropertyWriter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@
66
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
77
import com.fasterxml.jackson.databind.util.NameTransformer;
88

9-
public class JsonNullableBeanPropertyWriter extends BeanPropertyWriter
9+
public class JsonNullableJackson2BeanPropertyWriter extends BeanPropertyWriter
1010
{
1111
private static final long serialVersionUID = 1L;
1212

13-
protected JsonNullableBeanPropertyWriter(BeanPropertyWriter base) {
13+
protected JsonNullableJackson2BeanPropertyWriter(BeanPropertyWriter base) {
1414
super(base);
1515
}
1616

17-
protected JsonNullableBeanPropertyWriter(BeanPropertyWriter base, PropertyName newName) {
17+
protected JsonNullableJackson2BeanPropertyWriter(BeanPropertyWriter base, PropertyName newName) {
1818
super(base, newName);
1919
}
2020

2121
@Override
2222
protected BeanPropertyWriter _new(PropertyName newName) {
23-
return new JsonNullableBeanPropertyWriter(this, newName);
23+
return new JsonNullableJackson2BeanPropertyWriter(this, newName);
2424
}
2525

2626
@Override
2727
public BeanPropertyWriter unwrappingWriter(NameTransformer unwrapper) {
28-
return new UnwrappingJsonNullableBeanPropertyWriter(this, unwrapper);
28+
return new UnwrappingJsonNullableJackson2BeanPropertyWriter(this, unwrapper);
2929
}
3030

3131
@Override

src/main/java/org/openapitools/jackson/nullable/JsonNullableBeanSerializerModifier.java renamed to src/main/java/org/openapitools/jackson/nullable/JsonNullableJackson2BeanSerializerModifier.java

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

99
import java.util.List;
1010

11-
public class JsonNullableBeanSerializerModifier extends BeanSerializerModifier
11+
public class JsonNullableJackson2BeanSerializerModifier extends BeanSerializerModifier
1212
{
1313
@Override
1414
public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
@@ -19,7 +19,7 @@ public List<BeanPropertyWriter> changeProperties(SerializationConfig config,
1919
final BeanPropertyWriter writer = beanProperties.get(i);
2020
JavaType type = writer.getType();
2121
if (type.isTypeOrSubTypeOf(JsonNullable.class)) {
22-
beanProperties.set(i, new JsonNullableBeanPropertyWriter(writer));
22+
beanProperties.set(i, new JsonNullableJackson2BeanPropertyWriter(writer));
2323
}
2424
}
2525
return beanProperties;

src/main/java/org/openapitools/jackson/nullable/JsonNullableDeserializer.java renamed to src/main/java/org/openapitools/jackson/nullable/JsonNullableJackson2Deserializer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import java.io.IOException;
1616

17-
public class JsonNullableDeserializer extends ReferenceTypeDeserializer<JsonNullable<Object>> {
17+
public class JsonNullableJackson2Deserializer extends ReferenceTypeDeserializer<JsonNullable<Object>> {
1818

1919
private static final long serialVersionUID = 1L;
2020

@@ -25,8 +25,8 @@ public class JsonNullableDeserializer extends ReferenceTypeDeserializer<JsonNull
2525
/* Life-cycle
2626
/**********************************************************
2727
*/
28-
public JsonNullableDeserializer(JavaType fullType, ValueInstantiator inst,
29-
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
28+
public JsonNullableJackson2Deserializer(JavaType fullType, ValueInstantiator inst,
29+
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
3030
super(fullType, inst, typeDeser, deser);
3131
if (fullType instanceof ReferenceType && ((ReferenceType) fullType).getReferencedType() != null) {
3232
this.isStringDeserializer = ((ReferenceType) fullType).getReferencedType().isTypeOrSubTypeOf(String.class);
@@ -52,8 +52,8 @@ public JsonNullable<Object> deserialize(JsonParser p, DeserializationContext ctx
5252
}
5353

5454
@Override
55-
public JsonNullableDeserializer withResolved(TypeDeserializer typeDeser, JsonDeserializer<?> valueDeser) {
56-
return new JsonNullableDeserializer(_fullType, _valueInstantiator,
55+
public JsonNullableJackson2Deserializer withResolved(TypeDeserializer typeDeser, JsonDeserializer<?> valueDeser) {
56+
return new JsonNullableJackson2Deserializer(_fullType, _valueInstantiator,
5757
typeDeser, valueDeser);
5858
}
5959

src/main/java/org/openapitools/jackson/nullable/JsonNullableDeserializers.java renamed to src/main/java/org/openapitools/jackson/nullable/JsonNullableJackson2Deserializers.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
88
import com.fasterxml.jackson.databind.type.ReferenceType;
99

10-
public class JsonNullableDeserializers extends Deserializers.Base {
10+
public class JsonNullableJackson2Deserializers extends Deserializers.Base {
1111

1212
@Override
1313
public JsonDeserializer<?> findReferenceDeserializer(ReferenceType refType,
1414
DeserializationConfig config, BeanDescription beanDesc,
1515
TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer) {
16-
return (refType.hasRawClass(JsonNullable.class)) ? new JsonNullableDeserializer(refType, null, contentTypeDeserializer,contentDeserializer) : null;
16+
return (refType.hasRawClass(JsonNullable.class)) ? new JsonNullableJackson2Deserializer(refType, null, contentTypeDeserializer,contentDeserializer) : null;
1717
}
1818
}

0 commit comments

Comments
 (0)