I'm using Postal (https://github.com/drewr/postal) and found something I don't know how to fix.
I have my application working fine if I have a var with my smtp properties created as follows: (def smtp-original {:host "foo.com" :port 2525 :user "me" :pass "pwd" }) Since I want to release my project for others I thought to modify it to read the smtp values from a Properties file. I used the routine from Dave Ray's answer on StackOverFlow (http://stackoverflow.com/a/ 7781443/406220). ;; Load smtp information out of a file from http://stackoverflow.com/a/7781443/406220 (defn load-props [file-name] (with-open [^java.io.Reader reader (clojure.java.io/reader file- name)] (let [props (java.util.Properties.)] (.load props reader) (into {} (for [[k v] props] [(keyword k) (read-string v)]))))) This works well in that it returns a Map that looks just like the smtp- original when reading the following file. host=foo.com port=2525 user=me pass=pwd The trouble is when I run my app and it calls into Postal I get a java.lang.ClassCastException. I notice that the smtp-original created with a def is a clojure.lang.PersistentHashMap while the return from load-props is a clojure.lang.PersistentArrayMap. I looked into Postal but don't see why this matters. So, I guess I have a few questions. Can I convert the PersistentArrayMap to a PersistentHashMap? Is this the right way to go? Is load-props doing something unusual? It seems fine. Does anyone understand the internals of Postal? Why would it not work with the PersistentArrayMap? Any ideas or pointers would be greatly appreciated. I'm looking to understand what is going on. Thanks -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en