Make mongo-options take a map instead of pseudo-kwards, extract mongo-options-builder

This commit is contained in:
Michael Klishin 2014-06-15 17:39:32 +04:00
parent 59427e29bb
commit f846cd0a51
2 changed files with 19 additions and 8 deletions

View file

@ -88,10 +88,11 @@
([^String hostname ^Long port]
(ServerAddress. hostname port)))
(defn mongo-options
[& { :keys [connections-per-host threads-allowed-to-block-for-connection-multiplier
(defn ^MongoClientOptions$Builder mongo-options-builder
[{:keys [connections-per-host threads-allowed-to-block-for-connection-multiplier
max-wait-time connect-timeout socket-timeout socket-keep-alive auto-connect-retry max-auto-connect-retry-time
description write-concern cursor-finalizer-enabled] :or [auto-connect-retry true] }]
description write-concern cursor-finalizer-enabled read-preference
required-replica-set-name] :or [auto-connect-retry true]}]
(let [mob (MongoClientOptions$Builder.)]
(when connections-per-host
(.connectionsPerHost mob connections-per-host))
@ -107,14 +108,24 @@
(.socketKeepAlive mob socket-keep-alive))
(when auto-connect-retry
(.autoConnectRetry mob auto-connect-retry))
;; deprecated
(when max-auto-connect-retry-time
(.maxAutoConnectRetryTime mob max-auto-connect-retry-time))
(when read-preference
(.readPreference mob read-preference))
(when description
(.description mob description))
(when write-concern
(.writeConcern mob write-concern))
(when cursor-finalizer-enabled
(.cursorFinalizerEnabled mob cursor-finalizer-enabled))
(when required-replica-set-name
(.requiredReplicaSetName mob required-replica-set-name))
mob))
(defn ^MongoClientOptions mongo-options
[opts]
(let [mob (mongo-options-builder opts)]
(.build mob)))
(defn disconnect

View file

@ -32,13 +32,13 @@
(is (= port (.getPort sa)))))
(deftest use-existing-mongo-connection
(let [^MongoClientOptions opts (mongo-options :threads-allowed-to-block-for-connection-multiplier 300)
(let [^MongoClientOptions opts (mongo-options {:threads-allowed-to-block-for-connection-multiplier 300})
connection (MongoClient. "127.0.0.1" opts)
db (mg/get-db connection "monger-test")]
(mg/disconnect connection)))
(deftest connect-to-mongo-with-extra-options
(let [^MongoClientOptions opts (mongo-options :threads-allowed-to-block-for-connection-multiplier 300)
(let [^MongoClientOptions opts (mongo-options {:threads-allowed-to-block-for-connection-multiplier 300})
^ServerAddress sa (server-address "127.0.0.1" 27017)
conn (mg/connect sa opts)]
(mg/disconnect conn)))