Skip to content

Commit 0c2e88e

Browse files
fix resttemplate and webclient
1 parent 2d4f60f commit 0c2e88e

File tree

17 files changed

+360
-47
lines changed

17 files changed

+360
-47
lines changed

bin/configs/java-resttemplate-springBoot4-jackson3.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ additionalProperties:
99
containerDefaultToNull: "true"
1010
useJakartaEe: true
1111
useSpringBoot4: true
12-
useJackson3: true
13-
openApiNullable: false

bin/configs/java-webclient-springBoot4-jackson3.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ additionalProperties:
88
hideGenerationTimestamp: "true"
99
containerDefaultToNull: "true"
1010
useSpringBoot4: true
11-
useJackson3: true
12-
openApiNullable: false
11+

samples/client/petstore/java/resttemplate-springBoot4-jackson2/src/main/java/org/openapitools/client/RFC3339DateFormat.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212

1313
package org.openapitools.client;
1414

15-
import com.fasterxml.jackson.databind.util.StdDateFormat;
16-
1715
import java.text.DateFormat;
1816
import java.text.FieldPosition;
1917
import java.text.ParsePosition;
2018
import java.util.Date;
2119
import java.text.DecimalFormat;
2220
import java.util.GregorianCalendar;
2321
import java.util.TimeZone;
22+
import com.fasterxml.jackson.databind.util.StdDateFormat;
2423

2524
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.21.0-SNAPSHOT")
2625
public class RFC3339DateFormat extends DateFormat {

samples/client/petstore/java/resttemplate-springBoot4-jackson3/.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ src/main/java/org/openapitools/client/ApiClient.java
2222
src/main/java/org/openapitools/client/BaseApi.java
2323
src/main/java/org/openapitools/client/JavaTimeFormatter.java
2424
src/main/java/org/openapitools/client/RFC3339DateFormat.java
25+
src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
26+
src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
2527
src/main/java/org/openapitools/client/ServerConfiguration.java
2628
src/main/java/org/openapitools/client/ServerVariable.java
2729
src/main/java/org/openapitools/client/api/PetApi.java

samples/client/petstore/java/resttemplate-springBoot4-jackson3/build.gradle

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,9 @@ if(hasProperty('target') && target == 'android') {
9797
}
9898

9999
ext {
100-
jackson_version = "3.1.0"
100+
jackson_version = "2.21.1"
101101
jackson_annotations_version = "2.21"
102+
jackson_databind_nullable_version = "0.2.9"
102103
spring_web_version = "7.0.5"
103104
jakarta_annotation_version = "3.0.0"
104105
bean_validation_version = "3.1.1"
@@ -110,10 +111,12 @@ dependencies {
110111
implementation "com.google.code.findbugs:jsr305:3.0.2"
111112
implementation "org.springframework:spring-web:$spring_web_version"
112113
implementation "org.springframework:spring-context:$spring_web_version"
113-
implementation "tools.jackson.core:jackson-core:$jackson_version"
114+
implementation "com.fasterxml.jackson.core:jackson-core:$jackson_version"
114115
implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_annotations_version"
115-
implementation "tools.jackson.core:jackson-databind:$jackson_version"
116-
implementation "tools.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$jackson_version"
116+
implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_version"
117+
implementation "com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$jackson_version"
118+
implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version"
119+
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"
117120
implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
118121
testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
119122
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"

samples/client/petstore/java/resttemplate-springBoot4-jackson3/pom.xml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231

232232
<!-- JSON processing: jackson -->
233233
<dependency>
234-
<groupId>tools.jackson.core</groupId>
234+
<groupId>com.fasterxml.jackson.core</groupId>
235235
<artifactId>jackson-core</artifactId>
236236
<version>${jackson-version}</version>
237237
</dependency>
@@ -241,16 +241,26 @@
241241
<version>${jackson-annotations-version}</version>
242242
</dependency>
243243
<dependency>
244-
<groupId>tools.jackson.core</groupId>
244+
<groupId>com.fasterxml.jackson.core</groupId>
245245
<artifactId>jackson-databind</artifactId>
246246
<version>${jackson-version}</version>
247247
</dependency>
248248
<dependency>
249-
<groupId>tools.jackson.jakarta.rs</groupId>
249+
<groupId>com.fasterxml.jackson.jakarta.rs</groupId>
250250
<artifactId>jackson-jakarta-rs-json-provider</artifactId>
251251
<version>${jackson-version}</version>
252252
</dependency>
253+
<dependency>
254+
<groupId>org.openapitools</groupId>
255+
<artifactId>jackson-databind-nullable</artifactId>
256+
<version>${jackson-databind-nullable-version}</version>
257+
</dependency>
253258

259+
<dependency>
260+
<groupId>com.fasterxml.jackson.datatype</groupId>
261+
<artifactId>jackson-datatype-jsr310</artifactId>
262+
<version>${jackson-version}</version>
263+
</dependency>
254264
<dependency>
255265
<groupId>jakarta.annotation</groupId>
256266
<artifactId>jakarta.annotation-api</artifactId>
@@ -270,10 +280,11 @@
270280
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
271281

272282
<spring-web-version>7.0.5</spring-web-version>
273-
<jackson-version>3.1.0</jackson-version>
283+
<jackson-version>2.21.1</jackson-version>
274284
<jakarta-annotation-version>3.0.0</jakarta-annotation-version>
275285

276286
<jackson-annotations-version>2.21</jackson-annotations-version>
287+
<jackson-databind-nullable-version>0.2.9</jackson-databind-nullable-version>
277288
<junit-version>5.10.2</junit-version>
278289
</properties>
279290
</project>

samples/client/petstore/java/resttemplate-springBoot4-jackson3/src/main/java/org/openapitools/client/ApiClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.web.client.RestTemplate;
4242
import org.springframework.web.util.UriComponentsBuilder;
4343
import org.springframework.web.util.DefaultUriBuilderFactory;
44+
import org.openapitools.jackson.nullable.JsonNullableModule;
4445

4546

4647
import java.io.BufferedReader;

samples/client/petstore/java/resttemplate-springBoot4-jackson3/src/main/java/org/openapitools/client/RFC3339DateFormat.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212

1313
package org.openapitools.client;
1414

15-
import tools.jackson.databind.util.StdDateFormat;
16-
1715
import java.text.DateFormat;
1816
import java.text.FieldPosition;
1917
import java.text.ParsePosition;
2018
import java.util.Date;
2119
import java.text.DecimalFormat;
2220
import java.util.GregorianCalendar;
2321
import java.util.TimeZone;
22+
import com.fasterxml.jackson.databind.util.StdDateFormat;
2423

2524
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.21.0-SNAPSHOT")
2625
public class RFC3339DateFormat extends DateFormat {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
* OpenAPI Petstore
3+
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
4+
*
5+
* The version of the OpenAPI document: 1.0.0
6+
*
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9+
* https://openapi-generator.tech
10+
* Do not edit the class manually.
11+
*/
12+
13+
package org.openapitools.client;
14+
15+
import java.io.IOException;
16+
import java.time.Instant;
17+
import java.time.OffsetDateTime;
18+
import java.time.ZoneId;
19+
import java.time.ZonedDateTime;
20+
import java.time.format.DateTimeFormatter;
21+
import java.time.temporal.Temporal;
22+
import java.time.temporal.TemporalAccessor;
23+
import java.util.function.BiFunction;
24+
import java.util.function.Function;
25+
26+
import com.fasterxml.jackson.core.JsonParser;
27+
import com.fasterxml.jackson.databind.DeserializationContext;
28+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeFeature;
29+
import com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer;
30+
31+
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.21.0-SNAPSHOT")
32+
public class RFC3339InstantDeserializer<T extends Temporal> extends InstantDeserializer<T> {
33+
private static final long serialVersionUID = 1L;
34+
private final static boolean DEFAULT_NORMALIZE_ZONE_ID = JavaTimeFeature.NORMALIZE_DESERIALIZED_ZONE_ID.enabledByDefault();
35+
private final static boolean DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
36+
= JavaTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS.enabledByDefault();
37+
38+
public static final RFC3339InstantDeserializer<Instant> INSTANT = new RFC3339InstantDeserializer<>(
39+
Instant.class, DateTimeFormatter.ISO_INSTANT,
40+
Instant::from,
41+
a -> Instant.ofEpochMilli( a.value ),
42+
a -> Instant.ofEpochSecond( a.integer, a.fraction ),
43+
null,
44+
true, // yes, replace zero offset with Z
45+
DEFAULT_NORMALIZE_ZONE_ID,
46+
DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
47+
);
48+
49+
public static final RFC3339InstantDeserializer<OffsetDateTime> OFFSET_DATE_TIME = new RFC3339InstantDeserializer<>(
50+
OffsetDateTime.class, DateTimeFormatter.ISO_OFFSET_DATE_TIME,
51+
OffsetDateTime::from,
52+
a -> OffsetDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
53+
a -> OffsetDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
54+
(d, z) -> ( d.isEqual( OffsetDateTime.MIN ) || d.isEqual( OffsetDateTime.MAX ) ?
55+
d :
56+
d.withOffsetSameInstant( z.getRules().getOffset( d.toLocalDateTime() ) ) ),
57+
true, // yes, replace zero offset with Z
58+
DEFAULT_NORMALIZE_ZONE_ID,
59+
DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
60+
);
61+
62+
public static final RFC3339InstantDeserializer<ZonedDateTime> ZONED_DATE_TIME = new RFC3339InstantDeserializer<>(
63+
ZonedDateTime.class, DateTimeFormatter.ISO_ZONED_DATE_TIME,
64+
ZonedDateTime::from,
65+
a -> ZonedDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
66+
a -> ZonedDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
67+
ZonedDateTime::withZoneSameInstant,
68+
false, // keep zero offset and Z separate since zones explicitly supported
69+
DEFAULT_NORMALIZE_ZONE_ID,
70+
DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
71+
);
72+
73+
protected RFC3339InstantDeserializer(
74+
Class<T> supportedType,
75+
DateTimeFormatter formatter,
76+
Function<TemporalAccessor, T> parsedToValue,
77+
Function<FromIntegerArguments, T> fromMilliseconds,
78+
Function<FromDecimalArguments, T> fromNanoseconds,
79+
BiFunction<T, ZoneId, T> adjust,
80+
boolean replaceZeroOffsetAsZ,
81+
boolean normalizeZoneId,
82+
boolean readNumericStringsAsTimestamp) {
83+
super(
84+
supportedType,
85+
formatter,
86+
parsedToValue,
87+
fromMilliseconds,
88+
fromNanoseconds,
89+
adjust,
90+
replaceZeroOffsetAsZ,
91+
normalizeZoneId,
92+
readNumericStringsAsTimestamp
93+
);
94+
}
95+
96+
@Override
97+
protected T _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws IOException {
98+
return super._fromString(p, ctxt, string0.replace( ' ', 'T' ));
99+
}
100+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* OpenAPI Petstore
3+
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
4+
*
5+
* The version of the OpenAPI document: 1.0.0
6+
*
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9+
* https://openapi-generator.tech
10+
* Do not edit the class manually.
11+
*/
12+
13+
package org.openapitools.client;
14+
15+
import java.time.Instant;
16+
import java.time.OffsetDateTime;
17+
import java.time.ZonedDateTime;
18+
19+
import com.fasterxml.jackson.databind.module.SimpleModule;
20+
import com.fasterxml.jackson.databind.Module.SetupContext;
21+
22+
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.21.0-SNAPSHOT")
23+
public class RFC3339JavaTimeModule extends SimpleModule {
24+
private static final long serialVersionUID = 1L;
25+
26+
public RFC3339JavaTimeModule() {
27+
super("RFC3339JavaTimeModule");
28+
}
29+
30+
@Override
31+
public void setupModule(SetupContext context) {
32+
super.setupModule(context);
33+
34+
addDeserializer(Instant.class, RFC3339InstantDeserializer.INSTANT);
35+
addDeserializer(OffsetDateTime.class, RFC3339InstantDeserializer.OFFSET_DATE_TIME);
36+
addDeserializer(ZonedDateTime.class, RFC3339InstantDeserializer.ZONED_DATE_TIME);
37+
}
38+
39+
}

0 commit comments

Comments
 (0)