Skip to content

Commit 8387c15

Browse files
[REQ] [JavaJaxRS] [CXF] Add Support for Jackson3 #23616
1 parent 3cf3c64 commit 8387c15

11 files changed

Lines changed: 64 additions & 26 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"

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 & 3 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>
@@ -259,8 +261,14 @@ for this project used jakarta.validation-api -->
259261
{{#useBeanValidation}}
260262
<beanvalidation-version>2.0.2</beanvalidation-version>
261263
{{/useBeanValidation}}
264+
{{#useJackson3}}
265+
<cxf-version>4.2.0</cxf-version>
266+
<jackson-jaxrs-version>3.1.2</jackson-jaxrs-version>
267+
{{/useJackson3}}
268+
{{^useJackson3}}
262269
<cxf-version>3.5.9</cxf-version>
263270
<jackson-jaxrs-version>2.17.1</jackson-jaxrs-version>
271+
{{/useJackson3}}
264272
{{#useJakartaEe}}
265273
<jakarta-annotation-version>2.1.1</jakarta-annotation-version>
266274
{{/useJakartaEe}}

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

Lines changed: 6 additions & 11 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>
@@ -198,9 +193,9 @@ for this project used jakarta.validation-api -->
198193
<jetty-version>9.2.9.v20150224</jetty-version>
199194
<junit-version>4.13.2</junit-version>
200195
<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>
196+
<cxf-version>4.2.0</cxf-version>
197+
<jackson-jaxrs-version>3.1.2</jackson-jaxrs-version>
198+
<jakarta-annotation-version>2.1.1</jakarta-annotation-version>
204199
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
205200
</properties>
206201
</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;

samples/client/petstore/jaxrs-cxf-client-jackson/src/test/java/org/openapitools/api/StoreApiTest.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
*
@@ -18,13 +18,13 @@
1818
import org.junit.Before;
1919
import static org.junit.Assert.*;
2020

21-
import javax.ws.rs.core.Response;
21+
import jakarta.ws.rs.core.Response;
2222
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
2323
import org.apache.cxf.jaxrs.client.ClientConfiguration;
2424
import org.apache.cxf.jaxrs.client.WebClient;
2525

2626

27-
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
27+
import tools.jackson.jakarta.rs.json.JacksonJsonProvider;
2828

2929
import java.util.ArrayList;
3030
import java.util.HashMap;

0 commit comments

Comments
 (0)