From 1a8a44286a126524e7ed03ab775c2b7390b382fd Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Tue, 7 Mar 2017 16:08:16 +0100 Subject: [PATCH] [#93] Pickup record redefinitions at REPL, etc. (@smee) --- src/taoensso/nippy.clj | 2 +- test/taoensso/nippy/tests/main.clj | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/taoensso/nippy.clj b/src/taoensso/nippy.clj index 6b10c08..96bc300 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -1097,7 +1097,7 @@ (defn- read-record [in class-name] (let [content (thaw-from-in! in)] (try - (let [class (Class/forName class-name) + (let [class (clojure.lang.RT/classForName class-name) method (.getMethod class "create" class-method-sig)] (.invoke method class (into-array Object [content]))) (catch Exception e diff --git a/test/taoensso/nippy/tests/main.clj b/test/taoensso/nippy/tests/main.clj index b1c4f93..998570e 100644 --- a/test/taoensso/nippy/tests/main.clj +++ b/test/taoensso/nippy/tests/main.clj @@ -232,6 +232,15 @@ (range 50))] (every? deref futures)))) +;;;; Redefs + +(defrecord MyFoo [] Object (toString [_] "v1")) +(str (thaw (freeze (MyFoo.)))) +(defrecord MyFoo [] Object (toString [_] "v2")) + +(deftest _redefs + (is (= (str (thaw (freeze (MyFoo.)))) "v2"))) + ;;;; Benchmarks (deftest _benchmarks