Skip to content

Commit 76560e3

Browse files
authored
replace deprecated ISO8601Utils with StdDateFormat (#17052)
1 parent be19c35 commit 76560e3

File tree

29 files changed

+320
-137
lines changed
  • modules
  • samples/client
    • echo_api/java/okhttp-gson/src/main/java/org/openapitools/client
    • others/java
      • okhttp-gson-oneOf/src/main/java/org/openapitools/client
      • okhttp-gson-streaming/src/main/java/org/openapitools/client
    • petstore/java
      • okhttp-gson
      • okhttp-gson-3.1/src/main/java/org/openapitools/client
      • okhttp-gson-awsv4signature/src/main/java/org/openapitools/client
      • okhttp-gson-dynamicOperations/src/main/java/org/openapitools/client
      • okhttp-gson-group-parameter/src/main/java/org/openapitools/client
      • okhttp-gson-nullable-required/src/main/java/org/openapitools/client
      • okhttp-gson-parcelableModel/src/main/java/org/openapitools/client
      • okhttp-gson-swagger1/src/main/java/org/openapitools/client
      • okhttp-gson-swagger2/src/main/java/org/openapitools/client
      • rest-assured
      • rest-assured-jackson
      • retrofit2
      • retrofit2-play26
      • retrofit2rx2
      • retrofit2rx3

29 files changed

+320
-137
lines changed

modules/openapi-generator-online/src/main/java/org/openapitools/codegen/online/RFC3339DateFormat.java

+19-7
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,35 @@
1717

1818
package org.openapitools.codegen.online;
1919

20-
import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
21-
import com.fasterxml.jackson.databind.util.ISO8601Utils;
20+
import com.fasterxml.jackson.databind.util.StdDateFormat;
2221

22+
import java.text.DateFormat;
2323
import java.text.FieldPosition;
24+
import java.text.ParsePosition;
25+
import java.time.ZoneId;
26+
import java.time.ZoneOffset;
27+
import java.time.format.DateTimeFormatter;
2428
import java.util.Date;
29+
import java.util.TimeZone;
2530

26-
27-
public class RFC3339DateFormat extends ISO8601DateFormat {
31+
public class RFC3339DateFormat extends DateFormat {
2832

2933
private static final long serialVersionUID = 1L;
34+
private static final DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
35+
private static final StdDateFormat sdf = new StdDateFormat()
36+
.withTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
37+
.withColonInTimeZone(true);
3038

31-
// Same as ISO8601DateFormat but serializing milliseconds.
3239
@Override
3340
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
34-
String value = ISO8601Utils.format(date, true);
41+
String value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
3542
toAppendTo.append(value);
3643
return toAppendTo;
3744
}
3845

39-
}
46+
@Override
47+
public Date parse(String source, ParsePosition pos) {
48+
return sdf.parse(source, pos);
49+
}
50+
51+
}

modules/openapi-generator/src/main/resources/Java/JSON.mustache

+13-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
package {{invokerPackage}};
44

5+
import com.fasterxml.jackson.databind.util.StdDateFormat;
56
import com.google.gson.Gson;
67
import com.google.gson.GsonBuilder;
78
import com.google.gson.JsonParseException;
89
import com.google.gson.TypeAdapter;
9-
import com.google.gson.internal.bind.util.ISO8601Utils;
1010
import com.google.gson.stream.JsonReader;
1111
import com.google.gson.stream.JsonWriter;
1212
import com.google.gson.JsonElement;
@@ -33,11 +33,14 @@ import java.text.ParseException;
3333
import java.text.ParsePosition;
3434
import java.time.LocalDate;
3535
import java.time.OffsetDateTime;
36+
import java.time.ZoneOffset;
37+
import java.time.ZoneId;
3638
import java.time.format.DateTimeFormatter;
3739
import java.util.Date;
3840
import java.util.Locale;
3941
import java.util.Map;
4042
import java.util.HashMap;
43+
import java.util.TimeZone;
4144

4245
public class JSON {
4346
private Gson gson;
@@ -54,6 +57,11 @@ public class JSON {
5457
{{/jsr310}}
5558
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5659

60+
private static final StdDateFormat sdf = new StdDateFormat()
61+
.withTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
62+
.withColonInTimeZone(true);
63+
private static final DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
64+
5765
@SuppressWarnings("unchecked")
5866
public static GsonBuilder createGson() {
5967
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -461,7 +469,7 @@ public class JSON {
461469
if (dateFormat != null) {
462470
return new java.sql.Date(dateFormat.parse(date).getTime());
463471
}
464-
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
472+
return new java.sql.Date(sdf.parse(date).getTime());
465473
} catch (ParseException e) {
466474
throw new JsonParseException(e);
467475
}
@@ -471,7 +479,7 @@ public class JSON {
471479

472480
/**
473481
* Gson TypeAdapter for java.util.Date type
474-
* If the dateFormat is null, ISO8601Utils will be used.
482+
* If the dateFormat is null, DateTimeFormatter will be used.
475483
*/
476484
public static class DateTypeAdapter extends TypeAdapter<Date> {
477485
@@ -496,7 +504,7 @@ public class JSON {
496504
if (dateFormat != null) {
497505
value = dateFormat.format(date);
498506
} else {
499-
value = ISO8601Utils.format(date, true);
507+
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
500508
}
501509
out.value(value);
502510
}
@@ -515,7 +523,7 @@ public class JSON {
515523
if (dateFormat != null) {
516524
return dateFormat.parse(date);
517525
}
518-
return ISO8601Utils.parse(date, new ParsePosition(0));
526+
return sdf.parse(date);
519527
} catch (ParseException e) {
520528
throw new JsonParseException(e);
521529
}

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache

+13-6
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
package {{invokerPackage}};
44

5+
import com.fasterxml.jackson.databind.util.StdDateFormat;
56
import com.google.gson.Gson;
67
import com.google.gson.GsonBuilder;
78
import com.google.gson.JsonParseException;
89
import com.google.gson.TypeAdapter;
9-
import com.google.gson.internal.bind.util.ISO8601Utils;
1010
import com.google.gson.stream.JsonReader;
1111
import com.google.gson.stream.JsonWriter;
1212
import com.google.gson.JsonElement;
@@ -27,14 +27,16 @@ import java.io.StringReader;
2727
import java.lang.reflect.Type;
2828
import java.text.DateFormat;
2929
import java.text.ParseException;
30-
import java.text.ParsePosition;
3130
import java.time.LocalDate;
3231
import java.time.OffsetDateTime;
32+
import java.time.ZoneId;
33+
import java.time.ZoneOffset;
3334
import java.time.format.DateTimeFormatter;
3435
import java.util.Date;
3536
import java.util.Locale;
3637
import java.util.Map;
3738
import java.util.HashMap;
39+
import java.util.TimeZone;
3840

3941
/*
4042
* A JSON utility class
@@ -57,6 +59,11 @@ public class JSON {
5759
{{/jsr310}}
5860
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5961

62+
private static final StdDateFormat sdf = new StdDateFormat()
63+
.withTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
64+
.withColonInTimeZone(true);
65+
private static final DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
66+
6067
@SuppressWarnings("unchecked")
6168
public static GsonBuilder createGson() {
6269
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -459,7 +466,7 @@ public class JSON {
459466
if (dateFormat != null) {
460467
return new java.sql.Date(dateFormat.parse(date).getTime());
461468
}
462-
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
469+
return new java.sql.Date(sdf.parse(date).getTime());
463470
} catch (ParseException e) {
464471
throw new JsonParseException(e);
465472
}
@@ -469,7 +476,7 @@ public class JSON {
469476

470477
/**
471478
* Gson TypeAdapter for java.util.Date type
472-
* If the dateFormat is null, ISO8601Utils will be used.
479+
* If the dateFormat is null, DateTimeFormatter will be used.
473480
*/
474481
public static class DateTypeAdapter extends TypeAdapter<Date> {
475482
@@ -494,7 +501,7 @@ public class JSON {
494501
if (dateFormat != null) {
495502
value = dateFormat.format(date);
496503
} else {
497-
value = ISO8601Utils.format(date, true);
504+
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
498505
}
499506
out.value(value);
500507
}
@@ -513,7 +520,7 @@ public class JSON {
513520
if (dateFormat != null) {
514521
return dateFormat.parse(date);
515522
}
516-
return ISO8601Utils.parse(date, new ParsePosition(0));
523+
return sdf.parse(date);
517524
} catch (ParseException e) {
518525
throw new JsonParseException(e);
519526
}

modules/openapi-generator/src/main/resources/Java/libraries/rest-assured/pom.mustache

+6-5
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,11 @@
271271
<version>${gson-fire-version}</version>
272272
</dependency>
273273
{{/gson}}
274+
<dependency>
275+
<groupId>com.fasterxml.jackson.core</groupId>
276+
<artifactId>jackson-databind</artifactId>
277+
<version>${jackson-databind-version}</version>
278+
</dependency>
274279
{{#jackson}}
275280
<!-- JSON processing: jackson -->
276281
<dependency>
@@ -281,10 +286,6 @@
281286
<groupId>com.fasterxml.jackson.core</groupId>
282287
<artifactId>jackson-annotations</artifactId>
283288
</dependency>
284-
<dependency>
285-
<groupId>com.fasterxml.jackson.core</groupId>
286-
<artifactId>jackson-databind</artifactId>
287-
</dependency>
288289
<dependency>
289290
<groupId>org.openapitools</groupId>
290291
<artifactId>jackson-databind-nullable</artifactId>
@@ -351,9 +352,9 @@
351352
{{#joda}}
352353
<jodatime-version>2.10.5</jodatime-version>
353354
{{/joda}}
355+
<jackson-databind-version>2.15.2</jackson-databind-version>
354356
{{#jackson}}
355357
<jackson-version>2.15.2</jackson-version>
356-
<jackson-databind-version>2.15.2</jackson-databind-version>
357358
<jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>
358359
{{/jackson}}
359360
{{#useJakartaEe}}

modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/JSON.mustache

+13-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
package {{invokerPackage}};
44

5+
import com.fasterxml.jackson.databind.util.StdDateFormat;
56
import com.google.gson.Gson;
67
import com.google.gson.GsonBuilder;
78
import com.google.gson.JsonParseException;
89
import com.google.gson.TypeAdapter;
9-
import com.google.gson.internal.bind.util.ISO8601Utils;
1010
import com.google.gson.stream.JsonReader;
1111
import com.google.gson.stream.JsonWriter;
1212
import com.google.gson.JsonElement;
@@ -32,11 +32,14 @@ import java.text.ParseException;
3232
import java.text.ParsePosition;
3333
import java.time.LocalDate;
3434
import java.time.OffsetDateTime;
35+
import java.time.ZoneOffset;
36+
import java.time.ZoneId;
3537
import java.time.format.DateTimeFormatter;
3638
import java.util.Date;
3739
import java.util.Locale;
3840
import java.util.Map;
3941
import java.util.HashMap;
42+
import java.util.TimeZone;
4043

4144
public class JSON {
4245
private Gson gson;
@@ -51,6 +54,11 @@ public class JSON {
5154
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5255
{{/jsr310}}
5356

57+
private static final StdDateFormat sdf = new StdDateFormat()
58+
.withTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()))
59+
.withColonInTimeZone(true);
60+
private static final DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
61+
5462
public static GsonBuilder createGson() {
5563
GsonFireBuilder fireBuilder = new GsonFireBuilder()
5664
{{#models}}{{#model}}{{#discriminator}} .registerTypeSelector({{classname}}.class, new TypeSelector() {
@@ -362,7 +370,7 @@ public class JSON {
362370
if (dateFormat != null) {
363371
return new java.sql.Date(dateFormat.parse(date).getTime());
364372
}
365-
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
373+
return new java.sql.Date(sdf.parse(date).getTime());
366374
} catch (ParseException e) {
367375
throw new JsonParseException(e);
368376
}
@@ -372,7 +380,7 @@ public class JSON {
372380

373381
/**
374382
* Gson TypeAdapter for java.util.Date type
375-
* If the dateFormat is null, ISO8601Utils will be used.
383+
* If the dateFormat is null, DateTimeFormatter will be used.
376384
*/
377385
public static class DateTypeAdapter extends TypeAdapter<Date> {
378386
@@ -398,7 +406,7 @@ public class JSON {
398406
if (dateFormat != null) {
399407
value = dateFormat.format(date);
400408
} else {
401-
value = ISO8601Utils.format(date, true);
409+
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
402410
}
403411
out.value(value);
404412
}
@@ -417,7 +425,7 @@ public class JSON {
417425
if (dateFormat != null) {
418426
return dateFormat.parse(date);
419427
}
420-
return ISO8601Utils.parse(date, new ParsePosition(0));
428+
return sdf.parse(date);
421429
} catch (ParseException e) {
422430
throw new JsonParseException(e);
423431
}

modules/openapi-generator/src/main/resources/Java/libraries/retrofit2/pom.mustache

+6-6
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,11 @@
211211
<artifactId>swagger-annotations</artifactId>
212212
<version>${swagger-annotations-version}</version>
213213
</dependency>
214+
<dependency>
215+
<groupId>com.fasterxml.jackson.core</groupId>
216+
<artifactId>jackson-databind</artifactId>
217+
<version>${jackson-databind-version}</version>
218+
</dependency>
214219
<!-- @Nullable annotation -->
215220
<dependency>
216221
<groupId>com.google.code.findbugs</groupId>
@@ -296,11 +301,6 @@
296301
<artifactId>jackson-annotations</artifactId>
297302
<version>${jackson-version}</version>
298303
</dependency>
299-
<dependency>
300-
<groupId>com.fasterxml.jackson.core</groupId>
301-
<artifactId>jackson-databind</artifactId>
302-
<version>${jackson-databind-version}</version>
303-
</dependency>
304304
{{#openApiNullable}}
305305
<dependency>
306306
<groupId>org.openapitools</groupId>
@@ -362,9 +362,9 @@
362362
<maven.compiler.target>${java.version}</maven.compiler.target>
363363
<gson-fire-version>1.9.0</gson-fire-version>
364364
<swagger-annotations-version>1.6.3</swagger-annotations-version>
365+
<jackson-databind-version>2.15.2</jackson-databind-version>
365366
{{#usePlayWS}}
366367
<jackson-version>2.15.2</jackson-version>
367-
<jackson-databind-version>2.15.2</jackson-databind-version>
368368
<play-version>2.6.7</play-version>
369369
{{#openApiNullable}}
370370
<jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>

0 commit comments

Comments
 (0)