Sorted out the resource access problem on Tomcat.

This commit is contained in:
Simon Brooke 2014-07-24 10:16:08 +01:00
parent 03cf9b79e0
commit a0f59ac2dd
9 changed files with 22 additions and 12 deletions

View file

@ -5,6 +5,7 @@
[mw-engine.natural-rules :as rules] [mw-engine.natural-rules :as rules]
[mw-parser.bulk :as compiler] [mw-parser.bulk :as compiler]
[hiccup.core :refer [html]] [hiccup.core :refer [html]]
[noir.io :as io]
[noir.session :as session])) [noir.session :as session]))
@ -41,12 +42,14 @@
(let [world (or (session/get :world) (let [world (or (session/get :world)
(engine/transform-world (engine/transform-world
(heightmap/apply-heightmap (heightmap/apply-heightmap
"resources/public/img/heightmaps/small_hill.png" (io/get-resource "/img/heightmaps/small_hill.png")
;; "resources/public/img/heightmaps/great_britain_and_ireland_small.png" ;; "resources/public/img/heightmaps/great_britain_and_ireland_small.png"
) )
rules/init-rules)) rules/init-rules))
rules (or (session/get :rules) rules (or (session/get :rules)
(do (session/put! :rules (compiler/compile-file "resources/rulesets/basic.txt")) (do (session/put! :rules
(compiler/compile-file
(io/get-resource "/rulesets/basic.txt")))
(session/get :rules))) (session/get :rules)))
generation (+ (or (session/get :generation) 0) 1) generation (+ (or (session/get :generation) 0) 1)
w2 (engine/transform-world world rules) w2 (engine/transform-world world rules)

View file

@ -1,5 +1,6 @@
(ns mw-ui.routes.params (ns mw-ui.routes.params
(:use clojure.walk (:use clojure.walk
clojure.java.io
compojure.core) compojure.core)
(:require [hiccup.core :refer [html]] (:require [hiccup.core :refer [html]]
[mw-engine.heightmap :as heightmap] [mw-engine.heightmap :as heightmap]
@ -7,13 +8,14 @@
[mw-ui.layout :as layout] [mw-ui.layout :as layout]
[mw-ui.util :as util] [mw-ui.util :as util]
[mw-ui.render-world :as world] [mw-ui.render-world :as world]
[noir.io :as io]
[noir.session :as session])) [noir.session :as session]))
(defn- send-params [] (defn- send-params []
{:title "Choose your world" {:title "Choose your world"
:heightmaps (util/list-resources "resources/public/img/heightmaps" #"([0-9a-z-_]+).png") :heightmaps (util/list-resources "/img/heightmaps" #"([0-9a-z-_]+).png")
:pause (or (session/get :pause) 5) :pause (or (session/get :pause) 5)
:rulesets (util/list-resources "resources/rulesets" #"([0-9a-z-_]+).txt") :rulesets (util/list-resources "/rulesets" #"([0-9a-z-_]+).txt")
}) })
(defn params-page (defn params-page
@ -28,15 +30,15 @@
map (:heightmap params) map (:heightmap params)
pause (:pause params) pause (:pause params)
rulefile (:ruleset params) rulefile (:ruleset params)
rulepath (str "resources/rulesets/" rulefile ".txt")] rulepath (str "/rulesets/" rulefile ".txt")]
(if (not (= map "")) (if (not (= map ""))
(session/put! :world (session/put! :world
(heightmap/apply-heightmap (heightmap/apply-heightmap
(str "resources/public/img/heightmaps/" map ".png")))) (io/get-resource (str "/img/heightmaps/" map ".png")))))
(if (not (= rulefile "")) (if (not (= rulefile ""))
(do (do
(session/put! :rule-text (slurp rulepath)) (session/put! :rule-text (io/slurp-resource rulepath))
(session/put! :rules (compiler/compile-file rulepath)))) (session/put! :rules (compiler/compile-file (io/get-resource rulepath)))))
(if (not (= pause "")) (if (not (= pause ""))
(session/put! :pause pause)) (session/put! :pause pause))
(layout/render "params.html" (layout/render "params.html"

View file

@ -6,6 +6,7 @@
[mw-ui.layout :as layout] [mw-ui.layout :as layout]
[mw-ui.util :as util] [mw-ui.util :as util]
[mw-ui.render-world :as world] [mw-ui.render-world :as world]
[noir.io :as io]
[noir.session :as session])) [noir.session :as session]))
(defn process-rules-request (defn process-rules-request
@ -21,7 +22,7 @@
" rules") }) " rules") })
true {:rule-text (or true {:rule-text (or
(session/get :rule-text) (session/get :rule-text)
(slurp "resources/rulesets/basic.txt")) (io/slurp-resource "/rulesets/basic.txt"))
:message "No rules found in request; loading defaults"}) :message "No rules found in request; loading defaults"})
(catch Exception e (catch Exception e
{:rule-text src {:rule-text src

View file

@ -1,5 +1,6 @@
(ns mw-ui.util (ns mw-ui.util
(:require [noir.io :as io] (:require [noir.io :as io]
[noir.session :as session]
[markdown.core :as md])) [markdown.core :as md]))
(defn md->html (defn md->html
@ -11,7 +12,10 @@
(defn list-resources [directory pattern] (defn list-resources [directory pattern]
"List resource files matching `pattern` in `directory`." "List resource files matching `pattern` in `directory`."
(sort (let
(filter #(not (nil? %)) [path (str (io/resource-path) directory)]
(session/put! :list-resources-path path)
(sort
(filter #(not (nil? %))
(map #(first (rest (re-matches pattern (.getName %)))) (map #(first (rest (re-matches pattern (.getName %))))
(file-seq (clojure.java.io/file directory)))))) (file-seq (clojure.java.io/file path)))))))