> -----Ursprüngliche Nachricht-----
> Von: Frank W. Zammetti [mailto:[EMAIL PROTECTED] 
> Gesendet: Samstag, 10. September 2005 18:47
> An: Struts Users Mailing List
> Betreff: Re: AW: Who decides?
> 
> Leon Rosenberg wrote:
> > I think they 'de facto' are stateless singletons? I mean the 
> > controller only creates one instance, and you shouldn't 
> create another 
> > :-)
> 
> That is how it currently works, and Craig has in the past 
> explained the decision.  It made perfect sense 4+ years ago 
> when he first wrote Struts, on the basis of performance.  
> Modern JVMs make those concerns no longer true though.
> 
> If an Action was created per request, you could do some 
> things that you can't do now, like non-static class members.  
> This would not be a huge change to the Struts codebase (at 
> least, that was my conclusion when I thought about it some 
> months ago and looked at the code), but would open up a lot 
> of nice possibilities.


Hmm, ok, than I must have misunderstood him. Nevertheless, aren't we talking
about a virutal three-liner here, which works with existing code as well?

Interface ActionCommand{
 public ActionMapping execute(...);
}

Interface ActionCommandFactory(){
  public ActionCommand createCommand();
}

And then a basic action:
CommandEnabledAction extends Action{
  execute(...){
     ActionCommandFactory factory = lookupFactory(...);
        return factory.createCommand().execute();
  }
}

Now implement an extension to the config to specify a factory, and you are
done, aren't you?


Regards
Leon

> 
> One could go even further and quite easily add the ability to 
> specify scope for an Action, so you could put them in session 
> if you wanted. 
> Then, combining your ActionForms and your Actions would be 
> trivially easy... and hey, that starts to look a lot more 
> like JSF/Shale, doesn't it?!? ;)
> 
> >>* Totally dependent on Servlet API objects, making (a) unit tests 
> >>hard, and (b) implementations on portlet difficult
> > 
> > 
> > I think it's the nature of a http framework?
> 
> Not to speak for Craig, but if I understood this point 
> correctly, the idea is that right now there are a number of 
> places where request/response/session are passed around 
> directly and accessed directly.  A layer of abstraction 
> between those places and those underlying objects would make 
> unit testing easier.  I can't speak on the portlet point, but 
> I take his word for it.
> 
> In 1.3, at least as far as the request processor chain 
> commands go, you get a single Context object (ActionContext I 
> think?)  If your Actions also recieved that object only, and 
> there were methods that you called instead of directly 
> accessing request/response/session, you'd have that abstraction.
> 
> As per my previous post, you could do all of this with the 
> current Struts code base... well, the single Context thing 
> would be a little more difficult because you couldn't replace 
> what an Action looks like now without breaking backwards 
> compatibility, but probably it can be done *in adddition* to 
> how it is now.
> 
> > Regards
> > Leon
> 
> Frank
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to