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

Reply via email to