Greet all - First off, a truly wonderful framework here. I'm a huge fan of how quick effective stripes truly is.
Here's my newbish question. I've selected Apache Cayenne for my ORM framework for a number of reasons, and I'm stumped as to how to "reuse" my database context. From the cayenne docs located at http://cayenne.apache.org/doc/web-applications.html I gather that instead of creating a new database context inside each bean (which works, but as you can imagine is not a good performance pattern) I should be using the magic "cayenne voodoo which can re-use the database context attached to the HttpSession object." ** prepare yourself for a very newb statement that I'm hopeful someone out there is willing to handhold me through ** Ok - so I get that I'm supposed to get the dataContext from the Util which can pop it off session: HttpSession session = ...; DataContext context = ServletUtil.getSessionContext(session); So - I figure I already extended ActionBean and ActionBeanContext so why not just put a method in my new context to get the data context.. -snip- public class BKFActionBeanContext extends ActionBeanContext { public void setUser(User currentUser) { getRequest().getSession().setAttribute("user", currentUser); } public User getUser() { return (User) getRequest().getSession().getAttribute("user"); } public DataContext getDataContext() { return ServletUtil.getSessionContext(getRequest().getSession()); } /** Logs the user out by invalidating the session. */ public void logout() { getRequest().getSession().invalidate(); } } -snip- Ok - and lo-and-behold it WORKS (sometimes). I found that inside of things like Validate methods and Resolutions I can quite easily use getContext().getDataContext() and it has exactly what I need. BUT -- (someone smack me for this) when I attempt to use the data context while declaring a new variable for my object I find that getContext (stripes) returns null, so of course my getContext().getDataContext() throws a NPE exception. (I really should have taken classes in school since I'm sure someone can explain why that's a no-no) e.g -- this is not working -- @UrlBinding("/RegisterFirm.action") public class RegisterFirmActionBean extends BKFActionBean { @ValidateNestedProperties({ @Validate(...), }) private Firm firm = (Firm) getContext().getDataContext().newObject(Firm.class); -- end what throws a NPE -- Ok - so I've on day 2 of trying things and I'm at the point of asking for help. Help. :) Is there a better/different way to new up a "Firm" object and then set the object properties, e.g. in my Resolution do a @DefaultHandler public Resolution view() { this.firm = (Firm) getContext().getDataContext().newObject(Firm.class); return new ForwardResolution("/RegisterFirm.jsp"); } or something else all together. I would think it's desirable to have my data context on the session, but... Anyways, THANK YOU for taking some time to help me out. Dan ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Stripes-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/stripes-users
