Skip to content

Commit ed04407

Browse files
feat: Replace Date with OffsetDateTime (box/box-codegen#826) (#1419)
1 parent b7c6993 commit ed04407

File tree

111 files changed

+962
-942
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+962
-942
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "86773db", "specHash": "a05e5d7", "version": "0.1.0" }
1+
{ "engineHash": "dcdff3f", "specHash": "a05e5d7", "version": "0.1.0" }

src/main/java/com/box/sdkgen/internal/utils/DateTimeUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@
1010
import com.fasterxml.jackson.databind.JsonSerializer;
1111
import com.fasterxml.jackson.databind.SerializerProvider;
1212
import java.io.IOException;
13-
import java.util.Date;
13+
import java.time.OffsetDateTime;
1414

1515
public class DateTimeUtils {
1616

17-
public static class DateTimeSerializer extends JsonSerializer<Date> {
17+
public static class DateTimeSerializer extends JsonSerializer<OffsetDateTime> {
1818
@Override
19-
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
19+
public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
2020
throws IOException {
2121
String formattedDate = dateTimeToString(value);
2222
gen.writeString(formattedDate);
2323
}
2424
}
2525

26-
public static class DateTimeDeserializer extends JsonDeserializer<Date> {
26+
public static class DateTimeDeserializer extends JsonDeserializer<OffsetDateTime> {
2727
@Override
28-
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
28+
public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
2929
String dateString = p.getValueAsString();
30-
Date d = dateTimeFromString(dateString);
30+
OffsetDateTime d = dateTimeFromString(dateString);
3131
if (d == null) {
3232
throw new IOException("Invalid date time format: " + dateString);
3333
}

src/main/java/com/box/sdkgen/internal/utils/DateUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@
1010
import com.fasterxml.jackson.databind.JsonSerializer;
1111
import com.fasterxml.jackson.databind.SerializerProvider;
1212
import java.io.IOException;
13-
import java.util.Date;
13+
import java.time.OffsetDateTime;
1414

1515
public class DateUtils {
16-
public static class DateSerializer extends JsonSerializer<Date> {
16+
public static class DateSerializer extends JsonSerializer<OffsetDateTime> {
1717
@Override
18-
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
18+
public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
1919
throws IOException {
2020
String formattedDate = dateToString(value);
2121
gen.writeString(formattedDate);
2222
}
2323
}
2424

25-
public static class DateDeserializer extends JsonDeserializer<Date> {
25+
public static class DateDeserializer extends JsonDeserializer<OffsetDateTime> {
2626
@Override
27-
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
27+
public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
2828
String dateString = p.getValueAsString();
29-
Date d = dateFromString(dateString);
29+
OffsetDateTime d = dateFromString(dateString);
3030
if (d == null) {
3131
throw new IOException("Invalid date format: " + dateString);
3232
}

src/main/java/com/box/sdkgen/internal/utils/UtilsManager.java

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,19 @@
2020
import java.nio.file.Files;
2121
import java.nio.file.Paths;
2222
import java.security.MessageDigest;
23-
import java.text.SimpleDateFormat;
23+
import java.time.OffsetDateTime;
24+
import java.time.ZoneOffset;
25+
import java.time.format.DateTimeFormatter;
26+
import java.time.format.DateTimeParseException;
2427
import java.util.Arrays;
2528
import java.util.Base64;
26-
import java.util.Date;
2729
import java.util.HashMap;
2830
import java.util.Iterator;
2931
import java.util.List;
3032
import java.util.Locale;
3133
import java.util.Map;
3234
import java.util.Objects;
3335
import java.util.Set;
34-
import java.util.TimeZone;
3536
import java.util.UUID;
3637
import java.util.function.BiFunction;
3738
import java.util.stream.Collectors;
@@ -44,13 +45,15 @@
4445

4546
public class UtilsManager {
4647
private static final int BUFFER_SIZE = 8192;
47-
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
48-
private static final SimpleDateFormat DATE_TIME_FORMAT =
49-
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
50-
private static final SimpleDateFormat DATE_TIME_FORMAT_WITH_MILLIS =
51-
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
52-
private static final SimpleDateFormat DATE_TIME_FORMAT_WITH_MICROS =
53-
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX");
48+
49+
private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT =
50+
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
51+
private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT_WITH_MILLIS =
52+
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
53+
private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT_WITH_MICROS =
54+
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX");
55+
private static final DateTimeFormatter OFFSET_DATE_FORMAT =
56+
DateTimeFormatter.ofPattern("yyyy-MM-dd");
5457

5558
public static <K, V> Map<K, V> mapOf(Entry<K, V>... entries) {
5659
return Arrays.stream(entries)
@@ -377,37 +380,54 @@ public static Map<String, String> sanitizeMap(
377380
: entry.getValue()));
378381
}
379382

380-
public static Date dateTimeFromString(String dateString) {
381-
SimpleDateFormat[] formats = {
382-
DATE_TIME_FORMAT, DATE_TIME_FORMAT_WITH_MILLIS, DATE_TIME_FORMAT_WITH_MICROS
383+
public static OffsetDateTime dateTimeFromString(String dateString) {
384+
DateTimeFormatter[] formatters = {
385+
OFFSET_DATE_TIME_FORMAT,
386+
OFFSET_DATE_TIME_FORMAT_WITH_MILLIS,
387+
OFFSET_DATE_TIME_FORMAT_WITH_MICROS
383388
};
384389

385-
for (SimpleDateFormat format : formats) {
390+
for (DateTimeFormatter formatter : formatters) {
386391
try {
387-
return format.parse(dateString);
388-
} catch (java.text.ParseException e) {
392+
return OffsetDateTime.parse(dateString, formatter);
393+
} catch (DateTimeParseException e) {
389394
// Ignore and try the next format
390395
}
391396
}
392397
return null;
393398
}
394399

395-
public static String dateTimeToString(Date dateTime) {
396-
DATE_TIME_FORMAT_WITH_MILLIS.setTimeZone(TimeZone.getTimeZone("UTC"));
397-
return DATE_TIME_FORMAT_WITH_MILLIS.format(dateTime);
400+
public static String dateTimeToString(OffsetDateTime dateTime) {
401+
return dateTime.format(OFFSET_DATE_TIME_FORMAT_WITH_MILLIS);
398402
}
399403

400-
public static Date dateFromString(String dateString) {
404+
public static OffsetDateTime dateFromString(String dateString) {
401405
try {
402-
return DATE_FORMAT.parse(dateString);
403-
} catch (java.text.ParseException e) {
406+
// For date-only strings, parse as date and convert to OffsetDateTime at start of day UTC
407+
if (dateString.matches("\\d{4}-\\d{2}-\\d{2}")) {
408+
return OffsetDateTime.parse(dateString + "T00:00:00Z");
409+
}
410+
// Otherwise try to parse as full OffsetDateTime
411+
DateTimeFormatter[] formatters = {
412+
OFFSET_DATE_TIME_FORMAT,
413+
OFFSET_DATE_TIME_FORMAT_WITH_MILLIS,
414+
OFFSET_DATE_TIME_FORMAT_WITH_MICROS
415+
};
416+
for (DateTimeFormatter formatter : formatters) {
417+
try {
418+
return OffsetDateTime.parse(dateString, formatter);
419+
} catch (DateTimeParseException e) {
420+
// Ignore and try the next format
421+
}
422+
}
423+
return null;
424+
} catch (DateTimeParseException e) {
404425
return null;
405426
}
406427
}
407428

408-
public static String dateToString(Date date) {
409-
DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
410-
return DATE_FORMAT.format(date);
429+
public static String dateToString(OffsetDateTime date) {
430+
return date.format(OFFSET_DATE_FORMAT);
411431
}
412432

413433
public static String escapeUnicode(String value) {
@@ -441,12 +461,12 @@ public static String escapeUnicode(String value) {
441461
return result.toString();
442462
}
443463

444-
public static Date epochSecondsToDateTime(long seconds) {
445-
return new Date(seconds * 1000);
464+
public static OffsetDateTime epochSecondsToDateTime(long seconds) {
465+
return OffsetDateTime.ofInstant(java.time.Instant.ofEpochSecond(seconds), ZoneOffset.UTC);
446466
}
447467

448-
public static long dateTimeToEpochSeconds(Date dateTime) {
449-
return dateTime.getTime() / 1000;
468+
public static long dateTimeToEpochSeconds(OffsetDateTime dateTime) {
469+
return dateTime.toEpochSecond();
450470
}
451471

452472
public static boolean compareSignatures(String expectedSignature, String receivedSignature) {
@@ -486,7 +506,6 @@ public static String computeWebhookSignature(
486506
byte[] hmacDigest = mac.doFinal();
487507
return Base64.getEncoder().encodeToString(hmacDigest);
488508
} catch (Exception e) {
489-
System.err.println("Error computing webhook signature: " + e.getMessage());
490509
return null;
491510
}
492511
}

src/main/java/com/box/sdkgen/managers/events/GetEventStreamQueryParams.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.fasterxml.jackson.databind.JsonSerializer;
1111
import com.fasterxml.jackson.databind.SerializerProvider;
1212
import java.io.IOException;
13+
import java.time.OffsetDateTime;
1314
import java.util.ArrayList;
14-
import java.util.Date;
1515
import java.util.List;
1616

1717
public class GetEventStreamQueryParams {
@@ -24,9 +24,9 @@ public class GetEventStreamQueryParams {
2424

2525
public List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> eventType;
2626

27-
public Date createdAfter;
27+
public OffsetDateTime createdAfter;
2828

29-
public Date createdBefore;
29+
public OffsetDateTime createdBefore;
3030

3131
public GetEventStreamQueryParams() {}
3232

@@ -55,11 +55,11 @@ public List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> getEventType()
5555
return eventType;
5656
}
5757

58-
public Date getCreatedAfter() {
58+
public OffsetDateTime getCreatedAfter() {
5959
return createdAfter;
6060
}
6161

62-
public Date getCreatedBefore() {
62+
public OffsetDateTime getCreatedBefore() {
6363
return createdBefore;
6464
}
6565

@@ -73,9 +73,9 @@ public static class Builder {
7373

7474
protected List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> eventType;
7575

76-
protected Date createdAfter;
76+
protected OffsetDateTime createdAfter;
7777

78-
protected Date createdBefore;
78+
protected OffsetDateTime createdBefore;
7979

8080
public Builder streamType(GetEventStreamQueryParamsStreamTypeField streamType) {
8181
this.streamType = new EnumWrapper<GetEventStreamQueryParamsStreamTypeField>(streamType);
@@ -104,12 +104,12 @@ public Builder eventType(List<? extends Valuable> eventType) {
104104
return this;
105105
}
106106

107-
public Builder createdAfter(Date createdAfter) {
107+
public Builder createdAfter(OffsetDateTime createdAfter) {
108108
this.createdAfter = createdAfter;
109109
return this;
110110
}
111111

112-
public Builder createdBefore(Date createdBefore) {
112+
public Builder createdBefore(OffsetDateTime createdBefore) {
113113
this.createdBefore = createdBefore;
114114
return this;
115115
}

src/main/java/com/box/sdkgen/managers/events/GetEventsQueryParams.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.fasterxml.jackson.databind.JsonSerializer;
1111
import com.fasterxml.jackson.databind.SerializerProvider;
1212
import java.io.IOException;
13+
import java.time.OffsetDateTime;
1314
import java.util.ArrayList;
14-
import java.util.Date;
1515
import java.util.List;
1616

1717
public class GetEventsQueryParams {
@@ -24,9 +24,9 @@ public class GetEventsQueryParams {
2424

2525
public List<EnumWrapper<GetEventsQueryParamsEventTypeField>> eventType;
2626

27-
public Date createdAfter;
27+
public OffsetDateTime createdAfter;
2828

29-
public Date createdBefore;
29+
public OffsetDateTime createdBefore;
3030

3131
public GetEventsQueryParams() {}
3232

@@ -55,11 +55,11 @@ public List<EnumWrapper<GetEventsQueryParamsEventTypeField>> getEventType() {
5555
return eventType;
5656
}
5757

58-
public Date getCreatedAfter() {
58+
public OffsetDateTime getCreatedAfter() {
5959
return createdAfter;
6060
}
6161

62-
public Date getCreatedBefore() {
62+
public OffsetDateTime getCreatedBefore() {
6363
return createdBefore;
6464
}
6565

@@ -73,9 +73,9 @@ public static class Builder {
7373

7474
protected List<EnumWrapper<GetEventsQueryParamsEventTypeField>> eventType;
7575

76-
protected Date createdAfter;
76+
protected OffsetDateTime createdAfter;
7777

78-
protected Date createdBefore;
78+
protected OffsetDateTime createdBefore;
7979

8080
public Builder streamType(GetEventsQueryParamsStreamTypeField streamType) {
8181
this.streamType = new EnumWrapper<GetEventsQueryParamsStreamTypeField>(streamType);
@@ -103,12 +103,12 @@ public Builder eventType(List<? extends Valuable> eventType) {
103103
return this;
104104
}
105105

106-
public Builder createdAfter(Date createdAfter) {
106+
public Builder createdAfter(OffsetDateTime createdAfter) {
107107
this.createdAfter = createdAfter;
108108
return this;
109109
}
110110

111-
public Builder createdBefore(Date createdBefore) {
111+
public Builder createdBefore(OffsetDateTime createdBefore) {
112112
this.createdBefore = createdBefore;
113113
return this;
114114
}

src/main/java/com/box/sdkgen/managers/files/UpdateFileByIdRequestBody.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.fasterxml.jackson.annotation.JsonProperty;
99
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
1010
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
11-
import java.util.Date;
11+
import java.time.OffsetDateTime;
1212
import java.util.List;
1313
import java.util.Objects;
1414

@@ -30,7 +30,7 @@ public class UpdateFileByIdRequestBody extends SerializableObject {
3030
@JsonProperty("disposition_at")
3131
@JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
3232
@JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
33-
protected Date dispositionAt;
33+
protected OffsetDateTime dispositionAt;
3434

3535
protected UpdateFileByIdRequestBodyPermissionsField permissions;
3636

@@ -76,7 +76,7 @@ public UpdateFileByIdRequestBodyLockField getLock() {
7676
return lock;
7777
}
7878

79-
public Date getDispositionAt() {
79+
public OffsetDateTime getDispositionAt() {
8080
return dispositionAt;
8181
}
8282

@@ -171,7 +171,7 @@ public static class Builder extends NullableFieldTracker {
171171

172172
protected UpdateFileByIdRequestBodyLockField lock;
173173

174-
protected Date dispositionAt;
174+
protected OffsetDateTime dispositionAt;
175175

176176
protected UpdateFileByIdRequestBodyPermissionsField permissions;
177177

@@ -206,7 +206,7 @@ public Builder lock(UpdateFileByIdRequestBodyLockField lock) {
206206
return this;
207207
}
208208

209-
public Builder dispositionAt(Date dispositionAt) {
209+
public Builder dispositionAt(OffsetDateTime dispositionAt) {
210210
this.dispositionAt = dispositionAt;
211211
return this;
212212
}

0 commit comments

Comments
 (0)