From 8e4cc072e35bf1590d536fcaf47e51ce1663f2c0 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Mon, 29 Jul 2013 15:11:20 +0700 Subject: [PATCH] Move Reader fallback out of Freezable protocol to make protocol extensible --- src/taoensso/nippy.clj | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/taoensso/nippy.clj b/src/taoensso/nippy.clj index 5e2abab..2e5d3a6 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -83,7 +83,11 @@ (when-let [m# (meta x#)] (write-id s# ~id-meta) (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! "Low-level API. Serializes arg (any Clojure data type) to a DataOutputStream." @@ -154,9 +158,6 @@ (write-biginteger s (.numerator 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)) (defn- wrap-header [data-ba metadata]