David E Jones wrote: > On Jan 15, 2010, at 2:12 PM, Adam Heath wrote: > >> Adrian Crum wrote: >>> Adam Heath wrote: >>>> Adam Heath wrote: >>>>> T result = Controller.runWith(data, new Callable<T>() { >>>>> public T call() throws Exception { >>>>> // code >>>>> return null; >>>>> } >>>>> }); >>>> I've actually attempted this, and while I think the implementation of >>>> this pattern is simple, actually *using* it in higher-level code ends >>>> up making things rather verbose. >>> I just added your idea to the branch, and it *is* simple. Let's say we >>> want to make incoming requests a security-aware artifact: >>> >>> org.ofbiz.webapp.control.ControlServlet >>> >>> public void doGet(HttpServletRequest request, HttpServletResponse >>> response) throws ServletException, IOException { >>> try { >>> ThreadContext.runExecutionArtifact(new RequestArtifact(request, >>> response)); >>> } catch (Throwable t) { >>> // Do something with t >>> } >>> } >> If you were *really* hot stuff, you'd use APT, annotations, and >> directly modify the code at compile time. >> >> @ThreadContext(RequestArtifact.class) >> public void doGet(HttpServletRequest request, HttpServletResponse >> response) { >> if (request.getAttribute()) { >> // ... >> } >> } > > Yes, please... let's make this as obfuscated and impossible to maintain as > possible. > > This may be a community driven project, but job security should still be our > #1 priority. On the other hand, I think it was Adam who said that after a > couple of years he couldn't even follow his own code in parts of the Entity > Engine (yes, stuff I've been tempted to rewrite since it's so tedious to > trace through, though I think the ShoppingCart and related objects are still > worse!).
Yeah, that was me, and it is the caching stuff. I agree about the shopping cart and order read header too. In all honesty, I would use dynamic ecas to do the caching stuff now.