import javax.servlet.http.*;
import com.thoughtworks.xstream.*;
import org.prevayler.*;
-import org.prevayler.implementation.snapshot.*;
+import org.prevayler.implementation.snapshot.XmlSnapshotManager;
public class Prevalence {
+ public static abstract class PrevalentServlet extends HttpServlet {
+ protected Hashtable prevalent;
+ protected Prevayler prevayler;
+ protected 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 = (Hashtable)prevayler.prevalentSystem();
+ }
+ }
+
static final Hashtable prevaylers = new Hashtable();
public static void destroy(ServletContext cx, Prevayler prevayler) { try {
prevayler = (Prevayler)prevaylers.get(cx);
if (prevayler == null) {
PrevaylerFactory pf = new PrevaylerFactory();
- String base = cx.getRealPath("/") + "WEB-INF" + File.separatorChar + "prevalent";
+ String base = cx.getRealPath("/") + File.separatorChar + "WEB-INF" + File.separatorChar + "prevalent";
System.err.println("prevayling to " + base);
pf.configurePrevalenceBase(base);
- /*
- XmlSnapshotManager manager = new XmlSnapshotManager(new JS(), base, null); {
- protected XStream createXStream() {
- XStream xstream = new XStream();
- xstream.alias("js", JS.class);
- xstream.alias("jsdate", JSDate.class);
- return xstream;
- }
- };
+ XmlSnapshotManager manager = new XmlSnapshotManager(new Hashtable(), base);
System.err.println("configuring with " + manager);
pf.configureSnapshotManager(manager);
- */
- pf.configureSnapshotManager(new SnapshotManager(new JS.Obj(), base));
- //pf.configureClassLoader(JSTransaction.class.getClassLoader());
prevayler = pf.create();
prevaylers.put(cx, prevayler);
new SnapshotThread(cx).start();