     (cons [method (parse-route route) resource]
           *resources*)))
 
+(def *default-resource*
+  (pseudo-servlet 
+    (str "Path: " full-path)))
+
 (defn find-resource
   "Find the first resource that matches the HttpServletRequest"
   [#^HttpServletRequest request response]

  '(method    (. request (getMethod))
    full-path (. request (getPathInfo))
    param    #(. request (getParameter %))
    header   #(. request (getHeader %))))

(defmacro pseudo-servlet
  "Create a pseudo-servlet from a resource. It's not quite a real
  servlet because it's a function, rather than an HttpServlet object."
  [resource]
  `(fn ~'[route context request response]
     (let ~(apply vector *resource-bindings*)
       (update-response ~'context ~'response (do ~@resource)))))

                    (if (= meth method)
                      (if-let route-params (match-route route path)
                        (partial resource route-params) nil)))]
    (or
      (some matches? *resources*)
      (partial *default-resource* {}))))

(defmacro GET "Creates a GET resource."
  [route & body]
  `(add-resource "GET" ~route (pseudo-servlet ~@body)))

(defmacro PUT "Creates a PUT resource."
  [route & body]
  `(add-resource "POST" ~route (pseudo-servlet ~@body)))

(defmacro POST "Creates a POST resource."
  [route & body]
  `(add-resource "PUT" ~route (pseudo-servlet ~@body)))

(defmacro DELETE "Creates a DELETE resource."
  [route & body]
  `(add-resource "DELETE" ~route (pseudo-servlet ~@body)))

(def #^{:doc 
  "A servlet that handles all requests into Compojure. Suitable for
