Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 7b6f759

Browse files
committed
fourth drop of clojure-portlet (refactor to more idiomatic clojure)
1 parent fb2bc95 commit 7b6f759

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

src/main/clojure/au/com/permeance/clojure/clojure_portlet.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
processClojureRender [javax.portlet.RenderRequest javax.portlet.RenderResponse] void]])
1313

1414
(defn -processClojureAction [portlet request response]
15-
(set-render-parameter response "message" "An action occurred"))
15+
(set-render-parameters response {:message "An action occurred"}))
1616

1717
(defn -processClojureRender [portlet request response]
18-
(set-render-attribute request "message"
19-
(or (get-request-paramater request "message") "Nothing happened"))
20-
(dispatch portlet "/view.jsp" request response))
18+
(let [param (first (:message (get-request-parameters request)))
19+
message (or param "Nothing happened")]
20+
(dispatch portlet "/view.jsp" {:message message} request response)))

src/main/clojure/au/com/permeance/clojure/portlet.clj

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,26 @@
11
(ns au.com.permeance.clojure.portlet)
22

3-
(defn set-render-parameter [response name value]
4-
(. response setRenderParameter name value))
3+
(defn- do-with-map [f m]
4+
(doseq [kv m]
5+
(let [k (name (key kv))
6+
v (val kv)]
7+
(f k v))))
58

6-
(defn set-render-attribute [request name value]
7-
(. request setAttribute name value))
9+
(defn- set-render-attributes [request attributes]
10+
(do-with-map #(. request setAttribute %1 %2) attributes))
811

9-
(defn get-request-paramater [request name]
10-
(. request getParameter name))
12+
(defn dispatch
13+
([portlet path request response]
14+
(let [dispatcher (.. portlet (getPortletContext) (getRequestDispatcher path))]
15+
(. dispatcher include request response)))
16+
([portlet path attributes request response]
17+
(set-render-attributes request attributes)
18+
(dispatch portlet path request response)))
19+
20+
(defn get-request-parameters [request]
21+
(let [parameters (. request getParameterMap)]
22+
(into {} (for [[k v] parameters] [(keyword k) v]))))
23+
24+
(defn set-render-parameters [response parameters]
25+
(do-with-map #(. response setRenderParameter %1 %2) parameters))
1126

12-
(defn dispatch [portlet path request response]
13-
(let [dispatcher (.. portlet (getPortletContext) (getRequestDispatcher path))]
14-
(. dispatcher include request response)))

0 commit comments

Comments
 (0)