public final void writeTo()

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);
    }