in foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int64WriteSchemas.java [51:98]
public final void writeTo(OutputEx output, Object value) throws IOException {
if (value instanceof Number) {
output.writeScalarInt64(tag, tagSize, ((Number) value).longValue());
return;
}
if (value instanceof Date) {
long parsedValue = ((Date) value).getTime();
output.writeScalarInt64(tag, tagSize, parsedValue);
return;
}
if (value instanceof LocalDate) {
long parsedValue = ((LocalDate) value).getLong(ChronoField.EPOCH_DAY);
output.writeScalarInt64(tag, tagSize, parsedValue);
return;
}
if (value instanceof LocalDateTime) {
long parsedValue = ((LocalDateTime) value).toInstant(ZoneOffset.UTC).toEpochMilli();
output.writeScalarInt64(tag, tagSize, parsedValue);
return;
}
if (value instanceof String) {
long parsedValue;
if (((String) value).contains(":")) {
// from edge, ISO8601 date time, e.g. 2022-05-31T09:16:38.941Z
OffsetDateTime offsetDateTime = OffsetDateTime.parse((String) value);
parsedValue = offsetDateTime.toInstant().toEpochMilli();
} else {
parsedValue = Long.parseLong((String) value, 10);
}
output.writeScalarInt64(tag, tagSize, parsedValue);
return;
}
if (value instanceof String[]) {
if (((String[]) value).length == 0) {
return;
}
long parsedValue = Long.parseLong(((String[]) value)[0], 10);
output.writeScalarInt64(tag, tagSize, parsedValue);
return;
}
ProtoUtils.throwNotSupportWrite(protoField, value);
}