From ff4d3cfeac5acebb483f9fe59ad7002b2afb3a2d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 20 Jan 2022 16:57:20 +0100 Subject: [PATCH] :bug: Fix issue on fressian blob encoding. --- backend/src/app/util/fressian.clj | 36 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/backend/src/app/util/fressian.clj b/backend/src/app/util/fressian.clj index 08a7b5cf7..d81c92db2 100644 --- a/backend/src/app/util/fressian.clj +++ b/backend/src/app/util/fressian.clj @@ -10,16 +10,18 @@ [app.common.geom.point :as gpt] [clojure.data.fressian :as fres]) (:import - clojure.lang.Ratio - org.fressian.handlers.WriteHandler - org.fressian.handlers.ReadHandler - org.fressian.Writer - org.fressian.Reader - org.fressian.StreamingWriter app.common.geom.matrix.Matrix app.common.geom.point.Point + clojure.lang.Ratio java.io.ByteArrayInputStream - java.io.ByteArrayOutputStream)) + java.io.ByteArrayOutputStream + java.time.Instant + java.time.OffsetDateTime + org.fressian.Reader + org.fressian.StreamingWriter + org.fressian.Writer + org.fressian.handlers.ReadHandler + org.fressian.handlers.WriteHandler)) ;; --- MISC @@ -92,6 +94,20 @@ (.-e ^Matrix o) (.-f ^Matrix o)))))} + Instant + {"java/instant" + (reify WriteHandler + (write [_ w ch] + (.writeTag w "java/instant" 1) + (.writeInt w (.toEpochMilli ^Instant ch))))} + + OffsetDateTime + {"java/instant" + (reify WriteHandler + (write [_ w ch] + (.writeTag w "java/instant" 1) + (.writeInt w (.toEpochMilli ^Instant (.toInstant ^OffsetDateTime ch)))))} + Ratio {"ratio" (reify WriteHandler @@ -181,6 +197,12 @@ (read [_ rdr _ _] (char (.readObject rdr)))) + "java/instant" + (reify ReadHandler + (read [_ rdr _ _] + (Instant/ofEpochMilli (.readInt rdr)))) + + "clj/ratio" (reify ReadHandler (read [_ rdr _ _]