From 8b22e9eef120bc6f782d9f1092f9ca0d71be1b50 Mon Sep 17 00:00:00 2001 From: "Michael S. Klishin" Date: Thu, 13 Oct 2011 23:47:36 +0400 Subject: [PATCH] Extend JodaTime integration This is not perfect since it currently ignores output writer paramter and assumes clojure.data.json but it is a significantly better choice than forcing every clojure.data.json user to use JodaTime. --- src/monger/joda_time.clj | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/monger/joda_time.clj b/src/monger/joda_time.clj index ceae374..7f0749f 100644 --- a/src/monger/joda_time.clj +++ b/src/monger/joda_time.clj @@ -1,6 +1,7 @@ (ns monger.joda-time (:import (org.joda.time DateTime DateTimeZone)) - (:use [monger.conversion])) + (:use [monger.conversion]) + (:require [clojure.data.json :as json])) ;; ;; API @@ -10,3 +11,16 @@ org.joda.time.DateTime (to-db-object [^org.joda.time.DateTime input] (to-db-object (.toDate input)))) + +(extend-protocol ConvertFromDBObject + java.util.Date + (from-db-object [^java.util.Date input keywordize] + (org.joda.time.DateTime. input))) + + +(extend-protocol json/Write-JSON + org.joda.time.DateTime + (write-json [^org.joda.time.DateTime object out escape-unicode?] + ;; TODO: use .printTo(Writer) here instead of ignoring + ;; out parameter. MK. + (.print (org.joda.time.format.ISODateTimeFormat/dateTime) object)))