add redirect tag support
[org.ibex.xt-crawshaw.git] / src / java / org / ibex / xt / Servlet.java
index 53eb197..c05101a 100644 (file)
@@ -5,7 +5,6 @@ import java.util.*;
 import javax.servlet.*;
 import javax.servlet.http.*;
 
-import org.ibex.util.*;
 import org.ibex.util.Collections;
 import org.ibex.js.*;
 
@@ -36,24 +35,33 @@ public class Servlet extends HttpServlet {
     public void doGet(HttpServletRequest rq, HttpServletResponse rs) throws IOException {
         String src = rq.getServletPath();
         Servlet.Scope scope = new Servlet.Scope(cx, rq, rs, prevayler);
+        PrintWriter w = new PrintWriter(rs.getWriter());
         try {
             while (src != null) {
                 try {
-                    StringWriter w = new StringWriter();
+                    StringWriter buffer = new StringWriter();
                     Template t = Template.parse(cx.getRealPath(src), scope);
-                    Template.wrap(t, scope).out(w);
-                    rs.getWriter().write(w.toString());
+                    Template.wrap(t, scope).out(buffer);
+                    w.write(buffer.toString());
                     src = null;
                 } catch (Template.RedirectSignal r) {
                     src = r.getTarget();
                 }
             }
         } catch (Template.Signal s) {
+            // exit silently
         } catch (JSElement.Exn e) {
-            PrintWriter w = new PrintWriter(rs.getWriter());
             w.print("\n"+src+": ");
             w.println(e.getMessage());
             System.out.println(e);
+        } catch (FileNotFoundException e) {
+            w.print("\nfile not found: ");
+            w.println(e.getMessage());
+            System.out.println(e);
+        } catch (IOException e) {
+            w.print("\nio error: ");
+            w.println(e.getMessage());
+            e.printStackTrace();
         } catch (Exception e) {
             System.out.println("Unexpected Exception:");
             e.printStackTrace();