「Clojure と slim3」の夏がやってくる (其の弐)
(其の壱) で
これで、コントローラーの Clojure 化を無事果たすことができました。
次は、サービスの Clojure 化に挑戦してみたいと思います。
と申し上げたのですが、maven が生成する初期プロジェクトのコントローラーとサービスの Clojure 化を目指すことに変更しました。
取りあえず、出来上がった IndexController.clj は下記の通りです。
IndexController.clj
(ns com.example.controller.IndexController (:gen-class :extends org.slim3.controller.Controller :exposes {response {:get getResponce, :set setResponce}} :exposes-methods {forward forwardS, requestScope requestScopeS}) (:import com.example.meta.Slim3ModelMeta, com.example.model.Slim3Model, java.util.Date, org.slim3.datastore.Datastore)) (defn -run "Docstring for -run." [this] (let [res (.. this getResponce)] (.println (.. res getWriter) "Hello, World!") (let [model (Slim3Model.)] (.setProp1 model (.. (Date.) toString)) (Datastore/put model)) (doseq [x (.. (Datastore/query (Slim3ModelMeta/get)) asList)] (.println (.. res getWriter) (.. x getProp1))) (.flushBuffer res)))
Java の IndexController 同様、"Hello World!" を出力した後、put した Slim3Model の query 結果から順次 prop1 の内容を出力します。
さて、次は、今度こそ、サービスの Clojure 化に挑戦してみたいと思います。