Skip to content

Commit 18d03b9

Browse files
committed
Partially revert "replace deprecated ISO8601Utils with StdDateFormat (OpenAPITools#17052)"
This partially reverts commit 76560e3, namely anything related to generators and samples using GSON instead of Jackson. Changes to Jackson-only generation and generator-online regarding RFC3339DateFormat are not being reverted.
1 parent c08afa3 commit 18d03b9

File tree

27 files changed

+144
-310
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/src/main/java/org/openapitools/client
      • rest-assured-jackson
      • retrofit2/src/main/java/org/openapitools/client
      • retrofit2-play26
      • retrofit2rx2
      • retrofit2rx3

27 files changed

+144
-310
lines changed

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

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

1818
package org.openapitools.codegen.online;
1919

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

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;
2824
import java.util.Date;
29-
import java.util.TimeZone;
3025

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

3329
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);
3830

31+
// Same as ISO8601DateFormat but serializing milliseconds.
3932
@Override
4033
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
41-
String value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
34+
String value = ISO8601Utils.format(date, true);
4235
toAppendTo.append(value);
4336
return toAppendTo;
4437
}
4538

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

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

+5-13
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;
65
import com.google.gson.Gson;
76
import com.google.gson.GsonBuilder;
87
import com.google.gson.JsonParseException;
98
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,14 +33,11 @@ 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;
3836
import java.time.format.DateTimeFormatter;
3937
import java.util.Date;
4038
import java.util.Locale;
4139
import java.util.Map;
4240
import java.util.HashMap;
43-
import java.util.TimeZone;
4441

4542
public class JSON {
4643
private Gson gson;
@@ -57,11 +54,6 @@ public class JSON {
5754
{{/jsr310}}
5855
private ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
5956

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-
6557
@SuppressWarnings("unchecked")
6658
public static GsonBuilder createGson() {
6759
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -469,7 +461,7 @@ public class JSON {
469461
if (dateFormat != null) {
470462
return new java.sql.Date(dateFormat.parse(date).getTime());
471463
}
472-
return new java.sql.Date(sdf.parse(date).getTime());
464+
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
473465
} catch (ParseException e) {
474466
throw new JsonParseException(e);
475467
}
@@ -479,7 +471,7 @@ public class JSON {
479471

480472
/**
481473
* Gson TypeAdapter for java.util.Date type
482-
* If the dateFormat is null, DateTimeFormatter will be used.
474+
* If the dateFormat is null, ISO8601Utils will be used.
483475
*/
484476
public static class DateTypeAdapter extends TypeAdapter<Date> {
485477
@@ -504,7 +496,7 @@ public class JSON {
504496
if (dateFormat != null) {
505497
value = dateFormat.format(date);
506498
} else {
507-
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
499+
value = ISO8601Utils.format(date, true);
508500
}
509501
out.value(value);
510502
}
@@ -523,7 +515,7 @@ public class JSON {
523515
if (dateFormat != null) {
524516
return dateFormat.parse(date);
525517
}
526-
return sdf.parse(date);
518+
return ISO8601Utils.parse(date, new ParsePosition(0));
527519
} catch (ParseException e) {
528520
throw new JsonParseException(e);
529521
}

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

+6-13
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;
65
import com.google.gson.Gson;
76
import com.google.gson.GsonBuilder;
87
import com.google.gson.JsonParseException;
98
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,16 +27,14 @@ 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;
3031
import java.time.LocalDate;
3132
import java.time.OffsetDateTime;
32-
import java.time.ZoneId;
33-
import java.time.ZoneOffset;
3433
import java.time.format.DateTimeFormatter;
3534
import java.util.Date;
3635
import java.util.Locale;
3736
import java.util.Map;
3837
import java.util.HashMap;
39-
import java.util.TimeZone;
4038

4139
/*
4240
* A JSON utility class
@@ -59,11 +57,6 @@ public class JSON {
5957
{{/jsr310}}
6058
private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter();
6159

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-
6760
@SuppressWarnings("unchecked")
6861
public static GsonBuilder createGson() {
6962
GsonFireBuilder fireBuilder = new GsonFireBuilder()
@@ -466,7 +459,7 @@ public class JSON {
466459
if (dateFormat != null) {
467460
return new java.sql.Date(dateFormat.parse(date).getTime());
468461
}
469-
return new java.sql.Date(sdf.parse(date).getTime());
462+
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
470463
} catch (ParseException e) {
471464
throw new JsonParseException(e);
472465
}
@@ -476,7 +469,7 @@ public class JSON {
476469

477470
/**
478471
* Gson TypeAdapter for java.util.Date type
479-
* If the dateFormat is null, DateTimeFormatter will be used.
472+
* If the dateFormat is null, ISO8601Utils will be used.
480473
*/
481474
public static class DateTypeAdapter extends TypeAdapter<Date> {
482475
@@ -501,7 +494,7 @@ public class JSON {
501494
if (dateFormat != null) {
502495
value = dateFormat.format(date);
503496
} else {
504-
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
497+
value = ISO8601Utils.format(date, true);
505498
}
506499
out.value(value);
507500
}
@@ -520,7 +513,7 @@ public class JSON {
520513
if (dateFormat != null) {
521514
return dateFormat.parse(date);
522515
}
523-
return sdf.parse(date);
516+
return ISO8601Utils.parse(date, new ParsePosition(0));
524517
} catch (ParseException e) {
525518
throw new JsonParseException(e);
526519
}

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

+5-6
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,6 @@
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>
279274
{{#jackson}}
280275
<!-- JSON processing: jackson -->
281276
<dependency>
@@ -286,6 +281,10 @@
286281
<groupId>com.fasterxml.jackson.core</groupId>
287282
<artifactId>jackson-annotations</artifactId>
288283
</dependency>
284+
<dependency>
285+
<groupId>com.fasterxml.jackson.core</groupId>
286+
<artifactId>jackson-databind</artifactId>
287+
</dependency>
289288
<dependency>
290289
<groupId>org.openapitools</groupId>
291290
<artifactId>jackson-databind-nullable</artifactId>
@@ -352,9 +351,9 @@
352351
{{#joda}}
353352
<jodatime-version>2.10.5</jodatime-version>
354353
{{/joda}}
355-
<jackson-databind-version>2.17.1</jackson-databind-version>
356354
{{#jackson}}
357355
<jackson-version>2.17.1</jackson-version>
356+
<jackson-databind-version>2.17.1</jackson-databind-version>
358357
<jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>
359358
{{/jackson}}
360359
{{#useJakartaEe}}

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

+5-13
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;
65
import com.google.gson.Gson;
76
import com.google.gson.GsonBuilder;
87
import com.google.gson.JsonParseException;
98
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,14 +32,11 @@ 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;
3735
import java.time.format.DateTimeFormatter;
3836
import java.util.Date;
3937
import java.util.Locale;
4038
import java.util.Map;
4139
import java.util.HashMap;
42-
import java.util.TimeZone;
4340

4441
public class JSON {
4542
private Gson gson;
@@ -54,11 +51,6 @@ public class JSON {
5451
private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter();
5552
{{/jsr310}}
5653

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-
6254
public static GsonBuilder createGson() {
6355
GsonFireBuilder fireBuilder = new GsonFireBuilder()
6456
{{#models}}{{#model}}{{#discriminator}} .registerTypeSelector({{classname}}.class, new TypeSelector() {
@@ -370,7 +362,7 @@ public class JSON {
370362
if (dateFormat != null) {
371363
return new java.sql.Date(dateFormat.parse(date).getTime());
372364
}
373-
return new java.sql.Date(sdf.parse(date).getTime());
365+
return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime());
374366
} catch (ParseException e) {
375367
throw new JsonParseException(e);
376368
}
@@ -380,7 +372,7 @@ public class JSON {
380372

381373
/**
382374
* Gson TypeAdapter for java.util.Date type
383-
* If the dateFormat is null, DateTimeFormatter will be used.
375+
* If the dateFormat is null, ISO8601Utils will be used.
384376
*/
385377
public static class DateTypeAdapter extends TypeAdapter<Date> {
386378
@@ -406,7 +398,7 @@ public class JSON {
406398
if (dateFormat != null) {
407399
value = dateFormat.format(date);
408400
} else {
409-
value = date.toInstant().atOffset(ZoneOffset.UTC).format(dtf);
401+
value = ISO8601Utils.format(date, true);
410402
}
411403
out.value(value);
412404
}
@@ -425,7 +417,7 @@ public class JSON {
425417
if (dateFormat != null) {
426418
return dateFormat.parse(date);
427419
}
428-
return sdf.parse(date);
420+
return ISO8601Utils.parse(date, new ParsePosition(0));
429421
} catch (ParseException e) {
430422
throw new JsonParseException(e);
431423
}

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

+13-8
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,6 @@
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>
219214
<!-- @Nullable annotation -->
220215
<dependency>
221216
<groupId>com.google.code.findbugs</groupId>
@@ -305,6 +300,11 @@
305300
<artifactId>jackson-annotations</artifactId>
306301
<version>${jackson-version}</version>
307302
</dependency>
303+
<dependency>
304+
<groupId>com.fasterxml.jackson.core</groupId>
305+
<artifactId>jackson-databind</artifactId>
306+
<version>${jackson-databind-version}</version>
307+
</dependency>
308308
{{#openApiNullable}}
309309
<dependency>
310310
<groupId>org.openapitools</groupId>
@@ -344,6 +344,11 @@
344344
<artifactId>play-ahc-ws_2.12</artifactId>
345345
<version>${play-version}</version>
346346
</dependency>
347+
<dependency>
348+
<groupId>jakarta.validation</groupId>
349+
<artifactId>jakarta.validation-api</artifactId>
350+
<version>${beanvalidation-version}</version>
351+
</dependency>
347352
{{/usePlayWS}}
348353
{{#parcelableModel}}
349354
<!-- Needed for Parcelable support-->
@@ -377,12 +382,12 @@
377382
<gson-fire-version>1.9.0</gson-fire-version>
378383
{{/gson}}
379384
<swagger-annotations-version>1.6.3</swagger-annotations-version>
380-
<jackson-databind-version>2.17.1</jackson-databind-version>
381385
{{#jackson}}
386+
<jackson-databind-version>2.17.1</jackson-databind-version>
382387
<jackson-version>2.17.1</jackson-version>
383-
{{#openApiNullable}}
388+
{{#openApiNullable}}
384389
<jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>
385-
{{/openApiNullable}}
390+
{{/openApiNullable}}
386391
<javax.ws.rs-api-version>2.1.1</javax.ws.rs-api-version>
387392
{{/jackson}}
388393
{{#usePlayWS}}

0 commit comments

Comments
 (0)