Thanks, here's the entire stack trace:
java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to
clojure.lang.IFn
members.clj:33 sikhpyar.routes.members/get-member
members.clj:50 sikhpyar.routes.members/fn
core.clj:94 compojure.core/make-route[fn]
core.clj:40 compojure.core/if-route[fn]
core.clj:25 compojure.core/if-method[fn]
core.clj:107 compojure.core/routing[fn]
core.clj:2443 clojure.core/some
core.clj:107 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:619 clojure.core/apply
core.clj:112 compojure.core/routes[fn]
core.clj:107 compojure.core/routing[fn]
core.clj:2443 clojure.core/some
core.clj:107 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:619 clojure.core/apply
core.clj:112 compojure.core/routes[fn]
middleware.clj:17
sikhpyar.middleware/template-error-page[fn]
middleware.clj:10 sikhpyar.middleware/log-request[fn]
middleware.clj:44
noir.util.middleware/wrap-request-map[fn]
keyword_params.clj:32
ring.middleware.keyword-params/wrap-keyword-params[fn]
nested_params.clj:70
ring.middleware.nested-params/wrap-nested-params[fn]
params.clj:58 ring.middleware.params/wrap-params[fn]
middleware.clj:12 hiccup.middleware/wrap-base-url[fn]
multipart_params.clj:107
ring.middleware.multipart-params/wrap-multipart-params[fn]
validation.clj:153 noir.validation/wrap-noir-validation[fn]
cookies.clj:72 noir.cookies/noir-cookies[fn]
cookies.clj:171 ring.middleware.cookies/wrap-cookies[fn]
session.clj:142 noir.session/noir-flash[fn]
flash.clj:31 ring.middleware.flash/wrap-flash[fn]
session.clj:97 noir.session/noir-session[fn]
session.clj:85 ring.middleware.session/wrap-session[fn]
Var.java:415 clojure.lang.Var.invoke
reload.clj:18 ring.middleware.reload/wrap-reload[fn]
stacktrace.clj:17
ring.middleware.stacktrace/wrap-stacktrace-log[fn]
stacktrace.clj:80
ring.middleware.stacktrace/wrap-stacktrace-web[fn]
jetty.clj:18 ring.adapter.jetty/proxy-handler[fn]
(Unknown Source)
ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle
HandlerWrapper.java:116
org.eclipse.jetty.server.handler.HandlerWrapper.handle
Server.java:363 org.eclipse.jetty.server.Server.handle
AbstractHttpConnection.java:483
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
AbstractHttpConnection.java:920
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete
AbstractHttpConnection.java:982
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete
HttpParser.java:635
org.eclipse.jetty.http.HttpParser.parseNext
HttpParser.java:235
org.eclipse.jetty.http.HttpParser.parseAvailable
AsyncHttpConnection.java:82
org.eclipse.jetty.server.AsyncHttpConnection.handle
SelectChannelEndPoint.java:628
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
SelectChannelEndPoint.java:52
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
QueuedThreadPool.java:608
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
QueuedThreadPool.java:543
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
Thread.java:744 java.lang.Thread.run
Here's the route function:
(defn get-a-member [id]
(let [id (parse-int id) member]
[member (memberdb/get-member id)]
(session/put! :member-id (member :id))
(session/put! :nexto (+ (member :id) 1))
(session/put! :username (member :username))
(session/put! :firstname (member :firstname))
(session/put! :lastname (member :lastname))
(session/put! :email (member :email))
(layout/render "member/profile2.html" {:member member})))
The route:
(GET "/member/:id" [id] (get-a-member id))
The model:
(defmulti parse-int type)
(defmethod parse-int java.lang.Integer [n] n)
(defmethod parse-int java.lang.String [s] (Integer/parseInt s))
(defn get-member [id]
(let [id (parse-int id)]
(jdbc/query db ["SELECT * FROM members WHERE id = ? LIMIT 1" id])))
I'm using parse-int to explicitly specify id as an integer.
If I use just the query with no output to layout, or sessions, etc, it does
show the output from the db.
If I put just (str id) on the route handler, it does show the number of the
id.
So for sure the url is passing the id number and the db connection is fine.
Am trying this with java.jdbc 0.3.3 and postgres 8.4-702.jdbc4 driver. I
had the version 9 before but I don't think the problem is the db driver.
Appreciate any pointers.
One other thing, if I use Korma everything works fine but if I use raw-exec
it doesn't work. I tried Korma in a separate duplicate of this project to
avoid any conflict with java.jdbc 0.3.3.
I don't mind using a dsl but I'd really like to have access to raw sql as
and when needed to take advantage of years of writing sql, which to me is a
very pleasant dsl itself to interact with a db.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.