On Tue, 15 Mar 2005 17:34:13 -0600, Joe Germuska <[EMAIL PROTECTED]> wrote: > I wrote: > >Yes... I'm sorry that that discussion has stalled. Although I don't > >even know if that's an incremental step towards a POJO action -- > >it's practically all you need, plus a little more smarts in the > >CreateAction command. I'll go post a ping. > > OK, so I actually started looking at using POJOs for Actions, and > it's a bit trickier than I'd thought, but I may want to use it on a > current project, so if people want to talk about it, there's a chance > I'll get it into Struts 1.3 sooner than later...
I'm not sure I see the reasoning / benefit of POJOs as Actions. The implication is that some method that wasn't designed to be invoked as a command / action can do something useful without knowing about the request, mapping, form bean, etc. (If it has to know about those things, then it might as well be a Command or an Action anyway. It's certainly not a POJO at that point.) That seems so unlikely as to be not worthwhile supporting. > I like the general idea of saying that the "type" property can be an > Action, a Command, or a pojo. Perhaps there's no point in using > Command when you can use a pojo too? Actually, this type of overloading already leads to hard-to-track-down problems in other parts of Struts. For example, we overload the 'path' attribute of <forward>s so that it can be a path or a tile. If, for some reason, your Tiles definitions don't get loaded at startup time, the first time Struts tries to use a <forward> with a tile value, the user gets a weird error about illegal path syntax. In short, I'd discourage overloading attributes for multiple purposes, because it will make it hard to determine what goes wrong when there's a problem. -- Martin Cooper > My thought is that CreateAction would just check the type instance > and if it wasn't an instance of Action, it would wrap it in a new > class, ActionWrapper, which would take an instance and a method and > then do the invocation in its execute method. > > Postulating something like ActionContextFactory.getCurrentInstance(), > the ActionWrapper would look something like this: > > public class ActionWrapper extends Action { > public ActionWrapper(Object instance, String method) { > this.instance = instance; > this.method = method; > } > public ActionForward execute(m,f,r,r) { > Object pojo = getInstance(); > // perform reflection and invocation > return (ActionForward) > ActionContextFactory.getCurrentInstance().getForwardConfig(); > } > } > > Does that seem like a workable approach? > > Along the way I was also entertaining thoughts of getting > ActionCommand in here, but then I kept thinking "why again didn't we > change Action to have an 'execute(ActionContext)' method"? But I > guess if there's a way to execute POJOs then I have a ready way to > get the current ActionContext, which is the real item of interest -- > especially if we are using a custom implementation of ActionContext > with properties that reflect our application's request/session-scoped > properties. > > Joe > > -- > Joe Germuska > [EMAIL PROTECTED] > http://blog.germuska.com > "Narrow minds are weapons made for mass destruction" -The Ex > > --------------------------------------------------------------------- > 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]