From 1b69e0644b58a0e07ab7a175387ed9d09946b59c Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Wed, 27 Jun 2012 19:51:10 +0400 Subject: [PATCH] Extend Clojure reader for ObjectId and java.util.Date --- src/clojure/monger/ring/session_store.clj | 18 ++++++++++++++++++ test/monger/test/ring/session_store_test.clj | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/src/clojure/monger/ring/session_store.clj b/src/clojure/monger/ring/session_store.clj index 80e1008..8cde953 100644 --- a/src/clojure/monger/ring/session_store.clj +++ b/src/clojure/monger/ring/session_store.clj @@ -24,6 +24,24 @@ (defrecord ClojureReaderBasedMongoDBSessionStore [^String collection-name]) +(defmethod print-dup java.util.Date + [d out] + (.write out + (str "#=" + `(java.util.Date. ~(.getYear d) + ~(.getMonth d) + ~(.getDate d) + ~(.getHours d) + ~(.getMinutes d) + ~(.getSeconds d))))) + +(defmethod print-dup org.bson.types.ObjectId + [oid out] + (.write out + (str "#=" + `(org.bson.types.ObjectId. ~(str oid))))) + + (extend-protocol ringstore/SessionStore ClojureReaderBasedMongoDBSessionStore diff --git a/test/monger/test/ring/session_store_test.clj b/test/monger/test/ring/session_store_test.clj index 799d50d..ac87a32 100644 --- a/test/monger/test/ring/session_store_test.clj +++ b/test/monger/test/ring/session_store_test.clj @@ -52,3 +52,11 @@ sk (write-session store nil {:library "Monger"})] (is (nil? (delete-session store sk))) (is (= {} (read-session store sk))))) + + +(deftest test-reader-extensions + (let [d (java.util.Date.) + oid (org.bson.types.ObjectId.)] + (binding [*print-dup* true] + (pr-str d) + (pr-str oid))))