Extend Clojure reader for ObjectId and java.util.Date

This commit is contained in:
Michael S. Klishin 2012-06-27 19:51:10 +04:00
parent a21267cf41
commit 1b69e0644b
2 changed files with 26 additions and 0 deletions

View file

@ -24,6 +24,24 @@
(defrecord ClojureReaderBasedMongoDBSessionStore [^String collection-name]) (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 (extend-protocol ringstore/SessionStore
ClojureReaderBasedMongoDBSessionStore ClojureReaderBasedMongoDBSessionStore

View file

@ -52,3 +52,11 @@
sk (write-session store nil {:library "Monger"})] sk (write-session store nil {:library "Monger"})]
(is (nil? (delete-session store sk))) (is (nil? (delete-session store sk)))
(is (= {} (read-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))))