import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
-import com.thoughtworks.xstream.*;
-import org.prevayler.*;
-import org.prevayler.implementation.snapshot.*;
+//import com.thoughtworks.xstream.*;
+//import org.prevayler.*;
+//import org.prevayler.implementation.snapshot.*;
-public class Servlet extends HttpServlet {
+public class Servlet extends Prevalence.PrevalentServlet {
public static final JS METHOD = new JS.Method();
private ServletScope servletscope = null;
private String path;
- private Prevayler prevayler;
- private JS prevalent;
- private ServletContext cx = null;
-
- public void destroy() { try {
- synchronized(this.getClass()) {
- Prevayler privatePrevayler = prevayler;
- if (prevayler == null) return;
- prevayler = null;
- Prevalence.destroy(cx, prevayler);
- }
- } catch (Exception e) { e.printStackTrace(); } }
-
- public void init(ServletConfig sc) throws ServletException {
- cx = sc.getServletContext();
- prevayler = Prevalence.getPrevayler(cx);
- prevalent = (JS)prevayler.prevalentSystem();
- }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { doGet(request, response); }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
public class ServletScope extends JSSubProperties {
HttpServletRequest request;
HttpServletResponse response;
+ HttpSession session;
ServletContext cx;
public String getRealPath(String s) { return cx.getRealPath(s); }
public ServletScope(ServletRequest request, ServletResponse response, ServletContext cx) {
super();
this.request = (HttpServletRequest)request;
this.response = (HttpServletResponse)response;
+ this.session = this.request.getSession();
this.cx = cx;
}
- // FIXME: setattributes
- //#repeat params/cookies/requestHeader/attributes \
- // getParameter/getCookie/getHeader/getAttribute \
- // getParameterNames/getCookieNames/getHeaderNames/getAttributeNames \
- // request/request/request/session/response \
- // setParameter/setCookie/setHeader/setAttribute
+ // FIXME: setattributes, cookies
+ //#repeat params/requestHeader/attributes \
+ // getParameter/getHeader/getAttribute \
+ // getParameterNames/getHeaderNames/getAttributeNames \
+ // request/request/session/response \
+ // setAttribute/setAttribute/setAttribute
private JS params = new JS.Obj() {
public JS get(JS key) throws JSExn { return JSU.S(request.getParameter(JSU.toString(key)).toString()); }
- public void put(JS key, JS val) throws JSExn { request.setParameter(JSU.toString(key), JSU.toString(val)); }
+ public void put(JS key, JS val) throws JSExn { request.setAttribute(JSU.toString(key), JSU.toString(val)); }
public Enumeration keys() throws JSExn {
return new JS.Enumeration.JavaStringEnumeration(request.getParameterNames()); }
};
//#end
+ //case "prevalent": return (JS)prevayler.prevalentSystem();
public JS _get(JS key) throws JSExn {
//#switch(JSU.toString(key))
case "body":
case "arg": return null;
- case "prevalent": return (JS)prevayler.prevalentSystem();
case "request": return SUBPROPERTY;
case "request.user": return JSU.S(request.getRemoteUser());
case "request.header": return requestHeader;
case "request.ssl": return JSU.B(request.isSecure());
case "request.path": return JSU.S(request.getPathInfo());
case "response": return SUBPROPERTY;
- case "response.header": return responseHeader;
+ case "form": return SUBPROPERTY;
+ case "form.fields": return currentForm.fields();
case "session": return SUBPROPERTY;
- case "session.attr": return sessionAttributes;
case "session.created": return new JSDate(request.getSession(true).getCreationTime());
case "session.accessed": return new JSDate(request.getSession(true).getLastAccessedTime());
case "session.invalidate": return METHOD;
case "context": return SUBPROPERTY;
case "context.list": return METHOD;
case "params": return params;
- case "cookie": return cookies;
//#end
+ // cookie, responseheader needed, session.attributes
return null;
}
+ Form currentForm = null;
+
public void put(JS key, JS val) throws JSExn {
try {
//#switch(JSU.toString(key))
case "response.redirect": response.sendRedirect(JSU.toString(val));
case "response.contentType": response.setContentType(JSU.toString(val));
case "transaction":
+ /*
try { prevayler.execute(new Prevalence.JSTransaction((JS)val));
} catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); }
+ */
//#end
} catch (IOException e) { throw new JSExn(JSU.S(e.toString())); }
}