Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codegen.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "engineHash": "fa469c0", "specHash": "ae77fe0", "version": "0.8.1" }
{ "engineHash": "dcdff3f", "specHash": "ae77fe0", "version": "0.8.1" }
12 changes: 6 additions & 6 deletions src/main/java/com/box/sdkgen/internal/utils/DateTimeUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,24 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.Date;
import java.time.OffsetDateTime;

public class DateTimeUtils {

public static class DateTimeSerializer extends JsonSerializer<Date> {
public static class DateTimeSerializer extends JsonSerializer<OffsetDateTime> {
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
String formattedDate = dateTimeToString(value);
gen.writeString(formattedDate);
}
}

public static class DateTimeDeserializer extends JsonDeserializer<Date> {
public static class DateTimeDeserializer extends JsonDeserializer<OffsetDateTime> {
@Override
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
String dateString = p.getValueAsString();
Date d = dateTimeFromString(dateString);
OffsetDateTime d = dateTimeFromString(dateString);
if (d == null) {
throw new IOException("Invalid date time format: " + dateString);
}
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/com/box/sdkgen/internal/utils/DateUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.Date;
import java.time.OffsetDateTime;

public class DateUtils {
public static class DateSerializer extends JsonSerializer<Date> {
public static class DateSerializer extends JsonSerializer<OffsetDateTime> {
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
public void serialize(OffsetDateTime value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
String formattedDate = dateToString(value);
gen.writeString(formattedDate);
}
}

public static class DateDeserializer extends JsonDeserializer<Date> {
public static class DateDeserializer extends JsonDeserializer<OffsetDateTime> {
@Override
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
public OffsetDateTime deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
String dateString = p.getValueAsString();
Date d = dateFromString(dateString);
OffsetDateTime d = dateFromString(dateString);
if (d == null) {
throw new IOException("Invalid date format: " + dateString);
}
Expand Down
79 changes: 49 additions & 30 deletions src/main/java/com/box/sdkgen/internal/utils/UtilsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,19 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Arrays;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
Expand All @@ -44,13 +45,15 @@

public class UtilsManager {
private static final int BUFFER_SIZE = 8192;
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat DATE_TIME_FORMAT =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
private static final SimpleDateFormat DATE_TIME_FORMAT_WITH_MILLIS =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
private static final SimpleDateFormat DATE_TIME_FORMAT_WITH_MICROS =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX");

private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT_WITH_MILLIS =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
private static final DateTimeFormatter OFFSET_DATE_TIME_FORMAT_WITH_MICROS =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX");
private static final DateTimeFormatter OFFSET_DATE_FORMAT =
DateTimeFormatter.ofPattern("yyyy-MM-dd");

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

public static Date dateTimeFromString(String dateString) {
SimpleDateFormat[] formats = {
DATE_TIME_FORMAT, DATE_TIME_FORMAT_WITH_MILLIS, DATE_TIME_FORMAT_WITH_MICROS
public static OffsetDateTime dateTimeFromString(String dateString) {
DateTimeFormatter[] formatters = {
OFFSET_DATE_TIME_FORMAT,
OFFSET_DATE_TIME_FORMAT_WITH_MILLIS,
OFFSET_DATE_TIME_FORMAT_WITH_MICROS
};

for (SimpleDateFormat format : formats) {
for (DateTimeFormatter formatter : formatters) {
try {
return format.parse(dateString);
} catch (java.text.ParseException e) {
return OffsetDateTime.parse(dateString, formatter);
} catch (DateTimeParseException e) {
// Ignore and try the next format
}
}
return null;
}

public static String dateTimeToString(Date dateTime) {
DATE_TIME_FORMAT_WITH_MILLIS.setTimeZone(TimeZone.getTimeZone("UTC"));
return DATE_TIME_FORMAT_WITH_MILLIS.format(dateTime);
public static String dateTimeToString(OffsetDateTime dateTime) {
return dateTime.format(OFFSET_DATE_TIME_FORMAT_WITH_MILLIS);
}

public static Date dateFromString(String dateString) {
public static OffsetDateTime dateFromString(String dateString) {
try {
return DATE_FORMAT.parse(dateString);
} catch (java.text.ParseException e) {
// For date-only strings, parse as date and convert to OffsetDateTime at start of day UTC
if (dateString.matches("\\d{4}-\\d{2}-\\d{2}")) {
return OffsetDateTime.parse(dateString + "T00:00:00Z");
}
// Otherwise try to parse as full OffsetDateTime
DateTimeFormatter[] formatters = {
OFFSET_DATE_TIME_FORMAT,
OFFSET_DATE_TIME_FORMAT_WITH_MILLIS,
OFFSET_DATE_TIME_FORMAT_WITH_MICROS
};
for (DateTimeFormatter formatter : formatters) {
try {
return OffsetDateTime.parse(dateString, formatter);
} catch (DateTimeParseException e) {
// Ignore and try the next format
}
}
return null;
} catch (DateTimeParseException e) {
return null;
}
}

public static String dateToString(Date date) {
DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
return DATE_FORMAT.format(date);
public static String dateToString(OffsetDateTime date) {
return date.format(OFFSET_DATE_FORMAT);
}

public static String escapeUnicode(String value) {
Expand Down Expand Up @@ -441,12 +461,12 @@ public static String escapeUnicode(String value) {
return result.toString();
}

public static Date epochSecondsToDateTime(long seconds) {
return new Date(seconds * 1000);
public static OffsetDateTime epochSecondsToDateTime(long seconds) {
return OffsetDateTime.ofInstant(java.time.Instant.ofEpochSecond(seconds), ZoneOffset.UTC);
}

public static long dateTimeToEpochSeconds(Date dateTime) {
return dateTime.getTime() / 1000;
public static long dateTimeToEpochSeconds(OffsetDateTime dateTime) {
return dateTime.toEpochSecond();
}

public static boolean compareSignatures(String expectedSignature, String receivedSignature) {
Expand Down Expand Up @@ -486,7 +506,6 @@ public static String computeWebhookSignature(
byte[] hmacDigest = mac.doFinal();
return Base64.getEncoder().encodeToString(hmacDigest);
} catch (Exception e) {
System.err.println("Error computing webhook signature: " + e.getMessage());
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class GetEventStreamQueryParams {
Expand All @@ -24,9 +24,9 @@ public class GetEventStreamQueryParams {

public List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> eventType;

public Date createdAfter;
public OffsetDateTime createdAfter;

public Date createdBefore;
public OffsetDateTime createdBefore;

public GetEventStreamQueryParams() {}

Expand Down Expand Up @@ -55,11 +55,11 @@ public List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> getEventType()
return eventType;
}

public Date getCreatedAfter() {
public OffsetDateTime getCreatedAfter() {
return createdAfter;
}

public Date getCreatedBefore() {
public OffsetDateTime getCreatedBefore() {
return createdBefore;
}

Expand All @@ -73,9 +73,9 @@ public static class Builder {

protected List<EnumWrapper<GetEventStreamQueryParamsEventTypeField>> eventType;

protected Date createdAfter;
protected OffsetDateTime createdAfter;

protected Date createdBefore;
protected OffsetDateTime createdBefore;

public Builder streamType(GetEventStreamQueryParamsStreamTypeField streamType) {
this.streamType = new EnumWrapper<GetEventStreamQueryParamsStreamTypeField>(streamType);
Expand Down Expand Up @@ -104,12 +104,12 @@ public Builder eventType(List<? extends Valuable> eventType) {
return this;
}

public Builder createdAfter(Date createdAfter) {
public Builder createdAfter(OffsetDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}

public Builder createdBefore(Date createdBefore) {
public Builder createdBefore(OffsetDateTime createdBefore) {
this.createdBefore = createdBefore;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class GetEventsQueryParams {
Expand All @@ -24,9 +24,9 @@ public class GetEventsQueryParams {

public List<EnumWrapper<GetEventsQueryParamsEventTypeField>> eventType;

public Date createdAfter;
public OffsetDateTime createdAfter;

public Date createdBefore;
public OffsetDateTime createdBefore;

public GetEventsQueryParams() {}

Expand Down Expand Up @@ -55,11 +55,11 @@ public List<EnumWrapper<GetEventsQueryParamsEventTypeField>> getEventType() {
return eventType;
}

public Date getCreatedAfter() {
public OffsetDateTime getCreatedAfter() {
return createdAfter;
}

public Date getCreatedBefore() {
public OffsetDateTime getCreatedBefore() {
return createdBefore;
}

Expand All @@ -73,9 +73,9 @@ public static class Builder {

protected List<EnumWrapper<GetEventsQueryParamsEventTypeField>> eventType;

protected Date createdAfter;
protected OffsetDateTime createdAfter;

protected Date createdBefore;
protected OffsetDateTime createdBefore;

public Builder streamType(GetEventsQueryParamsStreamTypeField streamType) {
this.streamType = new EnumWrapper<GetEventsQueryParamsStreamTypeField>(streamType);
Expand Down Expand Up @@ -103,12 +103,12 @@ public Builder eventType(List<? extends Valuable> eventType) {
return this;
}

public Builder createdAfter(Date createdAfter) {
public Builder createdAfter(OffsetDateTime createdAfter) {
this.createdAfter = createdAfter;
return this;
}

public Builder createdBefore(Date createdBefore) {
public Builder createdBefore(OffsetDateTime createdBefore) {
this.createdBefore = createdBefore;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Date;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Objects;

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

protected UpdateFileByIdRequestBodyPermissionsField permissions;

Expand Down Expand Up @@ -76,7 +76,7 @@ public UpdateFileByIdRequestBodyLockField getLock() {
return lock;
}

public Date getDispositionAt() {
public OffsetDateTime getDispositionAt() {
return dispositionAt;
}

Expand Down Expand Up @@ -171,7 +171,7 @@ public static class Builder extends NullableFieldTracker {

protected UpdateFileByIdRequestBodyLockField lock;

protected Date dispositionAt;
protected OffsetDateTime dispositionAt;

protected UpdateFileByIdRequestBodyPermissionsField permissions;

Expand Down Expand Up @@ -206,7 +206,7 @@ public Builder lock(UpdateFileByIdRequestBodyLockField lock) {
return this;
}

public Builder dispositionAt(Date dispositionAt) {
public Builder dispositionAt(OffsetDateTime dispositionAt) {
this.dispositionAt = dispositionAt;
return this;
}
Expand Down
Loading
Loading