From 5852a5fe1409108f5e0d4c626bb836b0d586fb76 Mon Sep 17 00:00:00 2001 From: Tulio Abner de Lima Date: Thu, 4 Apr 2024 10:09:20 -0300 Subject: [PATCH] feat: supporting 3-arity clojure.data.json/write in newer versions Starting at 2.0.0, clojure.data.json implements the additional parameter `options` in `write` and other functions. The multi-arity was used in protocol extension to support older and newer versions. --- project.clj | 2 +- src/clojure/monger/json.clj | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/project.clj b/project.clj index cf0f1bb..f6b6b08 100644 --- a/project.clj +++ b/project.clj @@ -36,7 +36,7 @@ :dev {:resource-paths ["test/resources"] :dependencies [[clj-time "0.15.1" :exclusions [org.clojure/clojure]] [cheshire "5.8.1" :exclusions [org.clojure/clojure]] - [org.clojure/data.json "0.2.6" :exclusions [org.clojure/clojure]] + [org.clojure/data.json "2.5.0" :exclusions [org.clojure/clojure]] [org.clojure/tools.cli "0.4.1" :exclusions [org.clojure/clojure]] [org.clojure/core.cache "0.7.1" :exclusions [org.clojure/clojure]] [ring/ring-core "1.7.1" :exclusions [org.clojure/clojure]] diff --git a/src/clojure/monger/json.clj b/src/clojure/monger/json.clj index ceaba68..d6c7db6 100644 --- a/src/clojure/monger/json.clj +++ b/src/clojure/monger/json.clj @@ -70,13 +70,19 @@ (try (extend-protocol clojure.data.json/JSONWriter ObjectId - (-write [^ObjectId object out] - (clojure.data.json/write (.toString object) out))) + (-write + ([^ObjectId object out] + (clojure.data.json/write (.toString object) out)) + ([^ObjectId object out options] + (clojure.data.json/write (.toString object) out options)))) (extend-protocol clojure.data.json/JSONWriter BSONTimestamp - (-write [^BSONTimestamp object out] - (clojure.data.json/write {:time (.getTime object) :inc (.getInc object)} out))) + (-write + ([^BSONTimestamp object out] + (clojure.data.json/write {:time (.getTime object) :inc (.getInc object)} out)) + ([^BSONTimestamp object out options] + (clojure.data.json/write {:time (.getTime object) :inc (.getInc object)} out options)))) (catch Throwable _ false))