X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjava%2Forg%2Fibex%2Fxt%2FServlet.java;h=53eb197f0dd6aa97e9e86ca430ed50e8cd77bd80;hb=aa4748b4f5c375bedcfac257b684a59906c6f03a;hp=7402dd21509515cd60c86e2e46102b7f1989507b;hpb=6649e6f6761b25310be908ef2101a1efadc537ff;p=org.ibex.xt-crawshaw.git diff --git a/src/java/org/ibex/xt/Servlet.java b/src/java/org/ibex/xt/Servlet.java index 7402dd2..53eb197 100644 --- a/src/java/org/ibex/xt/Servlet.java +++ b/src/java/org/ibex/xt/Servlet.java @@ -13,7 +13,6 @@ import org.prevayler.*; public class Servlet extends HttpServlet { - private String path; private Prevayler prevayler; private JS prevalent; private ServletContext cx = null; @@ -35,12 +34,30 @@ public class Servlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { doGet(request, response); } public void doGet(HttpServletRequest rq, HttpServletResponse rs) throws IOException { - String path = cx.getRealPath(rq.getServletPath()); + String src = rq.getServletPath(); Servlet.Scope scope = new Servlet.Scope(cx, rq, rs, prevayler); - rs.getWriter().write("beginning output..."); - try { Template.wrap(Template.parse(path, scope), scope).out(rs.getWriter()); } - catch (Exception e) { e.printStackTrace(); System.out.println("e = "+e); } - rs.getWriter().write("...output ends."); + try { + while (src != null) { + try { + StringWriter w = new StringWriter(); + Template t = Template.parse(cx.getRealPath(src), scope); + Template.wrap(t, scope).out(w); + rs.getWriter().write(w.toString()); + src = null; + } catch (Template.RedirectSignal r) { + src = r.getTarget(); + } + } + } catch (Template.Signal s) { + } catch (JSElement.Exn e) { + PrintWriter w = new PrintWriter(rs.getWriter()); + w.print("\n"+src+": "); + w.println(e.getMessage()); + System.out.println(e); + } catch (Exception e) { + System.out.println("Unexpected Exception:"); + e.printStackTrace(); + } } public static class Scope extends Template.Scope {