Skip to content

Commit 5327138

Browse files
[JavaJaxRS] [CXF] Add Support for Jackson3 (#23767)
* [REQ] [JavaJaxRS] [CXF] Add Support for Jackson3 #23616 * [REQ] [JavaJaxRS] [CXF] Add Support for Jackson3 #23616 * [REQ] [JavaJaxRS] [CXF] Add Support for Jackson3 #23616 * [REQ] [JavaJaxRS] [CXF] Add Support for Jackson3 #23616 * update docs, samples * clean up pom.xml --------- Co-authored-by: florianwermelskirchen <fwermelskirchen@eitco.de>
1 parent 399fdde commit 5327138

14 files changed

Lines changed: 65 additions & 38 deletions

File tree

bin/configs/jaxrs-cxf-client-jackson.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/cxf
55
additionalProperties:
66
artifactId: jaxrs-cxf-jackson-petstore-client
77
jackson: "true"
8+
useJackson3: "true"
9+
useJakartaEe: "true"

docs/generators/jaxrs-cxf-client.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
7676
|useBeanValidation|Use BeanValidation API annotations| |false|
7777
|useGenericResponse|Use generic response| |false|
7878
|useGzipFeatureForTests|Use Gzip Feature for tests| |false|
79+
|useJackson3|Use Jackson 3 instead of Jackson 2.| |false|
7980
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
8081
|useLoggingFeatureForTests|Use Logging Feature for tests| |false|
8182
|useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false|

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaCXFClientCodegen.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen
5151

5252
public static final String USE_ABSTRACTION_FOR_FILES = "useAbstractionForFiles";
5353

54+
public static final String USE_JACKSON_3 = "useJackson3";
55+
public static final String JACKSON2_PACKAGE = "com.fasterxml.jackson";
56+
public static final String JACKSON3_PACKAGE = "tools.jackson";
57+
public static final String JACKSON_PACKAGE = "jacksonPackage";
58+
5459
@Getter protected boolean useGenericResponse = false;
5560

5661
@Getter protected boolean useGzipFeatureForTests = false;
@@ -59,6 +64,8 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen
5964

6065
@Setter protected boolean useAbstractionForFiles = false;
6166

67+
@Getter @Setter protected boolean useJackson3 = false;
68+
6269
public JavaCXFClientCodegen() {
6370
super();
6471

@@ -97,6 +104,8 @@ public JavaCXFClientCodegen() {
97104
cliOptions.add(CliOption.newBoolean(USE_LOGGING_FEATURE_FOR_TESTS, "Use Logging Feature for tests"));
98105
cliOptions.add(CliOption.newBoolean(USE_GENERIC_RESPONSE, "Use generic response"));
99106
cliOptions.add(CliOption.newBoolean(USE_ABSTRACTION_FOR_FILES, "Use alternative types instead of java.io.File to allow passing bytes without a file on disk."));
107+
cliOptions.add(CliOption.newBoolean(USE_JACKSON_3, "Use Jackson 3 instead of Jackson 2.", this.useJackson3));
108+
100109
}
101110

102111
@Override
@@ -107,7 +116,13 @@ public void processOpts() {
107116
convertPropertyToBooleanAndWriteBack(USE_LOGGING_FEATURE_FOR_TESTS, this::setUseLoggingFeatureForTests);
108117
convertPropertyToBooleanAndWriteBack(JACKSON, this::setJackson);
109118
convertPropertyToBooleanAndWriteBack(USE_ABSTRACTION_FOR_FILES, this::setUseAbstractionForFiles);
119+
convertPropertyToBooleanAndWriteBack(USE_JACKSON_3, this::setUseJackson3);
110120

121+
if (this.useJackson3) {
122+
this.applyJackson3Package();
123+
} else {
124+
this.applyJackson2Package();
125+
}
111126
supportingFiles.clear(); // Don't need extra files provided by AbstractJAX-RS & Java Codegen
112127

113128
supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")
@@ -206,4 +221,12 @@ public void setUseGenericResponse(boolean useGenericResponse) {
206221
this.useGenericResponse = useGenericResponse;
207222
}
208223

224+
225+
protected void applyJackson2Package() {
226+
writePropertyBack(JACKSON_PACKAGE, JACKSON2_PACKAGE);
227+
}
228+
229+
protected void applyJackson3Package() {
230+
writePropertyBack(JACKSON_PACKAGE, JACKSON3_PACKAGE);
231+
}
209232
}

modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/api_test.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,17 @@ import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
2424
import org.apache.cxf.interceptor.LoggingOutInterceptor;
2525
{{/useLoggingFeature}}
2626

27+
{{#useJackson3}}
28+
import {{jacksonPackage}}.jakarta.rs.json.JacksonJsonProvider;
29+
{{/useJackson3}}
30+
{{^useJackson3}}
31+
{{#useJakartaEe}}
32+
import {{jacksonPackage}}.jakarta.rs.json.JacksonJsonProvider;
33+
{{/useJakartaEe}}
34+
{{^useJakartaEe}}
2735
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
36+
{{/useJakartaEe}}
37+
{{/useJackson3}}
2838

2939
import java.util.ArrayList;
3040
import java.util.HashMap;

modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/pom.mustache

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
<dependencyManagement>
103103
<dependencies>
104104
<dependency>
105-
<groupId>com.fasterxml.jackson</groupId>
105+
<groupId>{{jacksonPackage}}</groupId>
106106
<artifactId>jackson-bom</artifactId>
107107
<version>${jackson-jaxrs-version}</version>
108108
<type>pom</type>
@@ -196,25 +196,27 @@ for this project used jakarta.validation-api -->
196196
</dependency>
197197
{{^useJakartaEe}}
198198
<dependency>
199-
<groupId>com.fasterxml.jackson.jaxrs</groupId>
199+
<groupId>{{jacksonPackage}}.jaxrs</groupId>
200200
<artifactId>jackson-jaxrs-json-provider</artifactId>
201201
<version>${jackson-jaxrs-version}</version>
202202
<scope>compile</scope>
203203
</dependency>
204204
{{/useJakartaEe}}
205205
{{#useJakartaEe}}
206206
<dependency>
207-
<groupId>com.fasterxml.jackson.jakarta.rs</groupId>
207+
<groupId>{{jacksonPackage}}.jakarta.rs</groupId>
208208
<artifactId>jackson-jakarta-rs-json-provider</artifactId>
209209
<version>${jackson-jaxrs-version}</version>
210210
<scope>compile</scope>
211211
</dependency>
212212
{{/useJakartaEe}}
213+
{{^useJackson3}}
213214
<dependency>
214215
<groupId>com.fasterxml.jackson.datatype</groupId>
215216
<artifactId>jackson-datatype-jsr310</artifactId>
216217
<version>${jackson-jaxrs-version}</version>
217218
</dependency>
219+
{{/useJackson3}}
218220
{{#useBeanValidationFeature}}
219221
<dependency>
220222
<groupId>org.hibernate</groupId>
@@ -244,9 +246,6 @@ for this project used jakarta.validation-api -->
244246
</repository>
245247
</repositories>
246248
<properties>
247-
<java.version>1.8</java.version>
248-
<maven.compiler.source>${java.version}</maven.compiler.source>
249-
<maven.compiler.target>${java.version}</maven.compiler.target>
250249
{{#swagger1AnnotationLibrary}}
251250
<swagger-core-version>1.6.6</swagger-core-version>
252251
{{/swagger1AnnotationLibrary}}
@@ -259,8 +258,14 @@ for this project used jakarta.validation-api -->
259258
{{#useBeanValidation}}
260259
<beanvalidation-version>2.0.2</beanvalidation-version>
261260
{{/useBeanValidation}}
261+
{{#useJackson3}}
262+
<cxf-version>4.2.0</cxf-version>
263+
<jackson-jaxrs-version>3.1.2</jackson-jaxrs-version>
264+
{{/useJackson3}}
265+
{{^useJackson3}}
262266
<cxf-version>3.5.9</cxf-version>
263267
<jackson-jaxrs-version>2.17.1</jackson-jaxrs-version>
268+
{{/useJackson3}}
264269
{{#useJakartaEe}}
265270
<jakarta-annotation-version>2.1.1</jakarta-annotation-version>
266271
{{/useJakartaEe}}

samples/client/petstore/jaxrs-cxf-client-jackson/pom.xml

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<dependencyManagement>
8585
<dependencies>
8686
<dependency>
87-
<groupId>com.fasterxml.jackson</groupId>
87+
<groupId>tools.jackson</groupId>
8888
<artifactId>jackson-bom</artifactId>
8989
<version>${jackson-jaxrs-version}</version>
9090
<type>pom</type>
@@ -159,16 +159,11 @@ for this project used jakarta.validation-api -->
159159
<scope>compile</scope>
160160
</dependency>
161161
<dependency>
162-
<groupId>com.fasterxml.jackson.jaxrs</groupId>
163-
<artifactId>jackson-jaxrs-json-provider</artifactId>
162+
<groupId>tools.jackson.jakarta.rs</groupId>
163+
<artifactId>jackson-jakarta-rs-json-provider</artifactId>
164164
<version>${jackson-jaxrs-version}</version>
165165
<scope>compile</scope>
166166
</dependency>
167-
<dependency>
168-
<groupId>com.fasterxml.jackson.datatype</groupId>
169-
<artifactId>jackson-datatype-jsr310</artifactId>
170-
<version>${jackson-jaxrs-version}</version>
171-
</dependency>
172167
<dependency>
173168
<groupId>jakarta.annotation</groupId>
174169
<artifactId>jakarta.annotation-api</artifactId>
@@ -191,16 +186,13 @@ for this project used jakarta.validation-api -->
191186
</repository>
192187
</repositories>
193188
<properties>
194-
<java.version>1.8</java.version>
195-
<maven.compiler.source>${java.version}</maven.compiler.source>
196-
<maven.compiler.target>${java.version}</maven.compiler.target>
197189
<swagger-core-version>1.6.6</swagger-core-version>
198190
<jetty-version>9.2.9.v20150224</jetty-version>
199191
<junit-version>4.13.2</junit-version>
200192
<logback-version>1.5.25</logback-version>
201-
<cxf-version>3.5.9</cxf-version>
202-
<jackson-jaxrs-version>2.17.1</jackson-jaxrs-version>
203-
<jakarta-annotation-version>1.3.5</jakarta-annotation-version>
193+
<cxf-version>4.2.0</cxf-version>
194+
<jackson-jaxrs-version>3.1.2</jackson-jaxrs-version>
195+
<jakarta-annotation-version>2.1.1</jakarta-annotation-version>
204196
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
205197
</properties>
206198
</project>

samples/client/petstore/jaxrs-cxf-client-jackson/src/gen/java/org/openapitools/api/PetApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import java.util.List;
88
import java.util.Map;
9-
import javax.ws.rs.*;
9+
import jakarta.ws.rs.*;
1010
import org.apache.cxf.jaxrs.ext.multipart.*;
1111

1212
import io.swagger.annotations.Api;

samples/client/petstore/jaxrs-cxf-client-jackson/src/gen/java/org/openapitools/api/StoreApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.List;
66
import java.util.Map;
7-
import javax.ws.rs.*;
7+
import jakarta.ws.rs.*;
88
import org.apache.cxf.jaxrs.ext.multipart.*;
99

1010
import io.swagger.annotations.Api;

samples/client/petstore/jaxrs-cxf-client-jackson/src/gen/java/org/openapitools/api/UserApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import java.util.List;
77
import java.util.Map;
8-
import javax.ws.rs.*;
8+
import jakarta.ws.rs.*;
99
import org.apache.cxf.jaxrs.ext.multipart.*;
1010

1111
import io.swagger.annotations.Api;

samples/client/petstore/jaxrs-cxf-client-jackson/src/test/java/org/openapitools/api/PetApiTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/**
1+
/*
22
* OpenAPI Petstore
33
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
44
*
@@ -20,13 +20,13 @@
2020
import org.junit.Before;
2121
import static org.junit.Assert.*;
2222

23-
import javax.ws.rs.core.Response;
23+
import jakarta.ws.rs.core.Response;
2424
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
2525
import org.apache.cxf.jaxrs.client.ClientConfiguration;
2626
import org.apache.cxf.jaxrs.client.WebClient;
2727

2828

29-
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
29+
import tools.jackson.jakarta.rs.json.JacksonJsonProvider;
3030

3131
import java.util.ArrayList;
3232
import java.util.HashMap;

0 commit comments

Comments
 (0)