[bknr-cvs] hans changed trunk/bknr/web/src/web/template-handler.lisp

BKNR Commits bknr at bknr.net
Fri Sep 12 13:42:55 UTC 2008


Revision: 3894
Author: hans
URL: http://bknr.net/trac/changeset/3894

Kill template-not-found condition as it was neither used nor useful
and made *BREAK-ON-SIGNALS* painful to use.

U   trunk/bknr/web/src/web/template-handler.lisp

Modified: trunk/bknr/web/src/web/template-handler.lisp
===================================================================
--- trunk/bknr/web/src/web/template-handler.lisp	2008-09-12 04:34:21 UTC (rev 3893)
+++ trunk/bknr/web/src/web/template-handler.lisp	2008-09-12 13:42:55 UTC (rev 3894)
@@ -23,14 +23,6 @@
 (defun user-error (str &rest args)
   (error 'user-error :format-control str :format-arguments args))
 
-;; template-not-found is raised when a template could not be found
-
-(define-condition template-not-found (simple-error)
-  ())
-
-(defun template-not-found (&rest path)
-  (error 'template-not-found :format-control "Template ~S not found" :format-arguments path))
-
 (defclass template-expander ()
   ((command-packages :initarg :command-packages
 		     :initform nil
@@ -239,15 +231,14 @@
                  (template-expander-catch-all expander))
         (multiple-value-setq (pathname ret-components)
           (find-template (template-expander-destination expander) default-template-components)))
-      (unless pathname
-	(template-not-found template-name))
-      (values pathname
-	      ret-components
-	      (with-output-to-string (s)
-		(dolist (component (subseq components 0 (- (length components)
-							   (length ret-components))))
-		  (write-char #\/ s)
-		  (write-string component s)))))))
+      (when pathname
+        (values pathname
+                ret-components
+                (with-output-to-string (s)
+                  (dolist (component (subseq components 0 (- (length components)
+                                                             (length ret-components))))
+                    (write-char #\/ s)
+                    (write-string component s))))))))
 
 (defun get-cached-template (pathname expander)
   (let* ((table (template-expander-cached-templates expander))
@@ -296,23 +287,22 @@
 		     env))
 	(incf i)))
     (setf env (acons :*path-arg* (first args) env))
-    (if (probe-file template-pathname)
-        ;; Wir koennten hier direkt auf *html-stream* schreiben ohne
-        ;; den Umweg ueber einen String zu gehen.  Aber: Wir moechten
-        ;; im Allgemeinen erst waehrend des Expandierens noch merken
-        ;; koennen, dass z.B. ein Fehler vorliegt oder ein Redirect
-        ;; geschickt werden muss.  Daher waere es keine gute Idee, sich
-        ;; zu diesem Zeitpunkt schon auf einen HTTP response code
-        ;; festgelegt zu haben.
-	(let ((*default-pathname-defaults* (make-pathname :host (pathname-host template-pathname)
-							  :device (pathname-device template-pathname)
-							  :directory (pathname-directory template-pathname))))
-	  (with-output-to-string (stream)
-	    (emit-template handler
-			   stream
-			   (get-cached-template template-pathname handler)
-			   env)))
-        (template-not-found template-pathname))))
+    (when (probe-file template-pathname)
+      ;; Wir koennten hier direkt auf *html-stream* schreiben ohne
+      ;; den Umweg ueber einen String zu gehen.  Aber: Wir moechten
+      ;; im Allgemeinen erst waehrend des Expandierens noch merken
+      ;; koennen, dass z.B. ein Fehler vorliegt oder ein Redirect
+      ;; geschickt werden muss.  Daher waere es keine gute Idee, sich
+      ;; zu diesem Zeitpunkt schon auf einen HTTP response code
+      ;; festgelegt zu haben.
+      (let ((*default-pathname-defaults* (make-pathname :host (pathname-host template-pathname)
+                                                        :device (pathname-device template-pathname)
+                                                        :directory (pathname-directory template-pathname))))
+        (with-output-to-string (stream)
+          (emit-template handler
+                         stream
+                         (get-cached-template template-pathname handler)
+                         env))))))
 
 (defmethod error-template-pathname (handler &optional (error-type "user-error"))
   (find-template-pathname handler error-type))
@@ -337,12 +327,6 @@
                                           (simple-condition-format-control c)
                                           (simple-condition-format-arguments c))
                            :response-code +http-ok+))
-    (template-not-found (c)
-      (send-error-response handler (apply #'format
-                                          nil
-                                          (simple-condition-format-control c)
-                                          (simple-condition-format-arguments c))
-                           :response-code +http-not-found+))
     (serious-condition (c)
       (warn "unexpected failure: ~A" c)
       (send-error-response handler (format nil "Internal Error:~%~%~A~%" c)))))
@@ -351,11 +335,8 @@
   `(invoke-with-error-handlers (lambda () , at body) ,handler))
 
 (defmethod handler-matches-p ((handler template-handler))
-  (handler-case 
-      (find-template-pathname handler (subseq (script-name*) 1))
-    (template-not-found (c)
-      (declare (ignore c))
-      nil)))
+  (or (template-expander-catch-all handler)
+      (find-template-pathname handler (subseq (script-name*) 1))))
 
 (defmethod handle ((handler template-handler))
   (with-error-handlers (handler)




More information about the Bknr-cvs mailing list