                               attribute-order)]
     (case (count human-id-values)
       1 (first human-id-values)
-      2 (str/join " and " human-id-values)
+      2 (string/join " and " human-id-values)
       ;; else
-      (str (str/join ", " (drop-last human-id-values)) ", and " (last human-id-values)))))
+      (str (string/join ", " (drop-last human-id-values)) ", and " (last human-id-values)))))
 
 (defn science-keyword-not-matches-kms-keywords
   "Create the invalid science keyword message"

(ns cmr.ingest.services.messages
  (:require [cmr.common.util :as util]
            [cmr.common.validations.core :as vc]
            [clojure.string :as str]))

(defn parent-collection-does-not-exist
  [provider-id granule-ur collection-ref]

        coll-ref-humanized-fields (for [[field value] collection-ref-fields]
                                    (format "%s [%s]" (vc/humanize-field field) value))]
    (format "Collection with %s referenced in granule [%s] provider [%s] does not exist."
            (string/join ", " coll-ref-humanized-fields)
            granule-ur provider-id)))

(defn invalid-multipart-params
  [expected-params actual-params]
  (format "Unexpected multipart parameters: [%s]. Expected the multipart parameters [%s]."
          (string/join ", " actual-params)
          (string/join ", " expected-params)))

(defn invalid-revision-id
  [revision-id]
