Move Reader fallback out of Freezable protocol to make protocol extensible
This commit is contained in:
parent
69611657c7
commit
8e4cc072e3
1 changed files with 5 additions and 4 deletions
|
|
@ -83,7 +83,11 @@
|
||||||
(when-let [m# (meta x#)]
|
(when-let [m# (meta x#)]
|
||||||
(write-id s# ~id-meta)
|
(write-id s# ~id-meta)
|
||||||
(freeze-to-stream* m# s#))
|
(freeze-to-stream* m# s#))
|
||||||
(freeze-to-stream* x# s#)))
|
(try (freeze-to-stream* x# s#)
|
||||||
|
(catch java.lang.IllegalArgumentException _#
|
||||||
|
;; Use Clojure reader as final fallback (after custom extensions)
|
||||||
|
(write-id s# id-reader)
|
||||||
|
(write-bytes s# (.getBytes (pr-str x#) "UTF-8"))))))
|
||||||
|
|
||||||
(defn freeze-to-stream!
|
(defn freeze-to-stream!
|
||||||
"Low-level API. Serializes arg (any Clojure data type) to a DataOutputStream."
|
"Low-level API. Serializes arg (any Clojure data type) to a DataOutputStream."
|
||||||
|
|
@ -154,9 +158,6 @@
|
||||||
(write-biginteger s (.numerator x))
|
(write-biginteger s (.numerator x))
|
||||||
(write-biginteger s (.denominator x)))
|
(write-biginteger s (.denominator x)))
|
||||||
|
|
||||||
;; Use Clojure's own reader as final fallback
|
|
||||||
(freezer Object id-reader (write-bytes s (.getBytes (pr-str x) "UTF-8")))
|
|
||||||
|
|
||||||
(def ^:private head-meta-id (reduce-kv #(assoc %1 %3 %2) {} head-meta))
|
(def ^:private head-meta-id (reduce-kv #(assoc %1 %3 %2) {} head-meta))
|
||||||
|
|
||||||
(defn- wrap-header [data-ba metadata]
|
(defn- wrap-header [data-ba metadata]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue