Noir-blog - NullPointerException in edit if validation fails

15 views
Skip to first unread message

clojure-newbie

unread,
Sep 21, 2011, 2:06:26 AM9/21/11
to clj-...@googlegroups.com
Just playing with Noir-blog to see an example of editing, and it looks like something's broken.

If you replace the following in admin.clj:

(defpage [:post "/blog/admin/post/edit/:id"] {:keys [id] :as post}
         (if (posts/edit! post)
           (resp/redirect "/blog/admin")
           (render (str "/blog/admin/post/edit/" id) post)))

with:

(defpage [:post "/blog/admin/post/edit/:id"] {:keys [id] :as post}
         (if false
           (resp/redirect "/blog/admin")
           (render (str "/blog/admin/post/edit/" id) post)))

so that the final line is always called (posts/edit! does not perform any validation, so normally the final (render...) statement would never be called) you get this error:

java.lang.NullPointerException
at noir.core$render.doInvoke(core.clj:58)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at noir_blog.views.admin$POST__blog__admin__post__edit___GT_id.invoke(admin.clj:108)
at noir_blog.views.admin$eval146$fn__147.invoke(admin.clj:105)
at compojure.core$if_route$fn__374.invoke(core.clj:39)
at compojure.core$if_method$fn__367.invoke(core.clj:24)
at compojure.core$routing$fn__389.invoke(core.clj:98)
at clojure.core$some.invoke(core.clj:2053)
at compojure.core$routing.doInvoke(core.clj:98)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invoke(core.clj:542)
at compojure.core$routes$fn__393.invoke(core.clj:103)
at noir.server$init_routes$fn__183.invoke(server.clj:47)
at ring.middleware.keyword_params$wrap_keyword_params$fn__68.invoke(keyword_params.clj:21)
at ring.middleware.nested_params$wrap_nested_params$fn__105.invoke(nested_params.clj:64)
at ring.middleware.params$wrap_params$fn__45.invoke(params.clj:76)
at ring.middleware.multipart_params$wrap_multipart_params$fn__123.invoke(multipart_params.clj:80)
at ring.middleware.session$wrap_session$fn__275.invoke(session.clj:40)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.session$noir_session$fn__144.invoke(session.clj:13)
at ring.middleware.session$wrap_session$fn__275.invoke(session.clj:40)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.cookies$noir_cookies$fn__91.invoke(cookies.clj:34)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.validation$wrap_noir_validation$fn__173.invoke(validation.clj:86)
at noir.statuses$wrap_status_pages$fn__106.invoke(statuses.clj:23)
at ring.middleware.file_info$wrap_file_info$fn__310.invoke(file_info.clj:40)
at ring.middleware.reload_modified$wrap_reload_modified$fn__119.invoke(reload_modified.clj:15)
at noir.exception$wrap_exceptions$fn__137.invoke(exception.clj:58)
at noir.options$wrap_options$fn__100.invoke(options.clj:22)
at ring.adapter.jetty$proxy_handler$fn__474.invoke(jetty.clj:16)
at ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle(Unknown Source)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Persisting  5  keys.
java.lang.NullPointerException
at noir.core$render.doInvoke(core.clj:58)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at noir_blog.views.admin$POST__blog__admin__post__edit___GT_id.invoke(admin.clj:108)
at noir_blog.views.admin$eval339$fn__340.invoke(admin.clj:105)
at compojure.core$if_route$fn__374.invoke(core.clj:39)
at compojure.core$if_method$fn__367.invoke(core.clj:24)
at compojure.core$routing$fn__389.invoke(core.clj:98)
at clojure.core$some.invoke(core.clj:2053)
at compojure.core$routing.doInvoke(core.clj:98)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invoke(core.clj:542)
at compojure.core$routes$fn__393.invoke(core.clj:103)
at noir.server$init_routes$fn__183.invoke(server.clj:47)
at ring.middleware.keyword_params$wrap_keyword_params$fn__68.invoke(keyword_params.clj:21)
at ring.middleware.nested_params$wrap_nested_params$fn__105.invoke(nested_params.clj:64)
at ring.middleware.params$wrap_params$fn__45.invoke(params.clj:76)
at ring.middleware.multipart_params$wrap_multipart_params$fn__123.invoke(multipart_params.clj:80)
at ring.middleware.session$wrap_session$fn__275.invoke(session.clj:40)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.session$noir_session$fn__144.invoke(session.clj:13)
at ring.middleware.session$wrap_session$fn__275.invoke(session.clj:40)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.cookies$noir_cookies$fn__91.invoke(cookies.clj:34)
at ring.middleware.cookies$wrap_cookies$fn__214.invoke(cookies.clj:132)
at noir.validation$wrap_noir_validation$fn__173.invoke(validation.clj:86)
at noir.statuses$wrap_status_pages$fn__106.invoke(statuses.clj:23)
at ring.middleware.file_info$wrap_file_info$fn__310.invoke(file_info.clj:40)
at ring.middleware.reload_modified$wrap_reload_modified$fn__119.invoke(reload_modified.clj:15)
at noir.exception$wrap_exceptions$fn__137.invoke(exception.clj:58)
at noir.options$wrap_options$fn__100.invoke(options.clj:22)
at ring.adapter.jetty$proxy_handler$fn__474.invoke(jetty.clj:16)
at ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle(Unknown Source)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)



Chris Granger

unread,
Sep 21, 2011, 2:31:14 AM9/21/11
to clj-...@googlegroups.com
fixed.

Cheers,
Chris.
Reply all
Reply to author
Forward
0 new messages