   info URI."
   ([db-info]
    (create-session* db-info))
+
   ([db-info {:keys [default-request-options logger user-object
                     transaction-mode transaction-timeout]
              :as config-options}]

  [{:keys [uri user password content-base]} & [content-source]]
  (let [cs (if (instance? ContentSource content-source)
             content-source
             (ContentSourceFactory/newContentSource (URI. uri)))]
    (cond
      (and (nil? content-base)
           (or (nil? user)

                    :logger logger :user-object user-object
                    :transaction-mode transaction-mode
                    :transaction-timeout transaction-timeout}))

  ([db-info content-source {:keys [default-request-options logger user-object
                                   transaction-mode transaction-timeout]
                            :as config-options}]
   (validate-session-config-options config-options)
   (configure-session (create-session* db-info content-source) config-options)))

(defn create-default-session
  ;; TODO docstring
  ([content-source]
   (create-default-session content-source nil))
  ([content-source {:keys [default-request-options logger user-object
                           transaction-mode transaction-timeout]
                    :as config-options}]
   (validate-session-config-options config-options)
   (configure-session (create-session* {} content-source) config-options)))

;; TODO require privilege
;; (defn session-cb-metadata
