AJ, It's been a long time since I used the EventArgsInvoker. It pre-dates my time on the project and I started contributing in 2005.
Usually, I'd recommend switching to the EventInvoker, but I know that isn't a possibility for you right now. My suggestion is to create your custom invoker. Copy the EvenArgsInvoker and have it pass in the Event object using the key "event" as well. I'm even being nice and I created one for you (attached). We definitely need to look this over -- a lot of the new functionality uses the Event object directly (i.e. redirectEvent). So I think we may need to patch this for 1.9. Thanks for bring this up to the list -- it's a great edge case. .Peter > Hi AJ, > > As you discovered you will want to use the default 'EventInvoker' when > defining your listeners. If you simply omit the parameter, this is > the default, for example: > <listeners> > <listener name="myListener" type="components.path.to.myListener" /> > </listeners> > > When you do this, every call to that listener will get a reference to > the Mach-ii event object, and then you can set event arguments in your > function, in addition to the return value. For example: > > <event-handler event="myEvent" access="public"> > <notify listener="myListener" method="someMethod" > resultArg="myResult" /> > </event-handler> > > <cffunction name="someMethod" access="public" output="false" > returntype="string"> > <cfargument name="event" type="MachII.framework.Event" > required="true"> > > <cfset event.setArg('myArgument1', 'value1') /> > <cfset event.setArg('myArgument2', 'value2') /> > > <cfreturn 'valueforMyResult' /> > </cffunction> > > I hope that helps. > -- Jason > > On Apr 14, 11:14 am, AJ Ferrigno <aj.ferri...@gmail.com> wrote: >> Hi group - an admitted Mach-II newb here, >> >> I've come across something in my development that I'm not sure if it's >> a bug or a feature, so I wanted to see if I'm maybe doing it wrong. >> >> We have inherited a couple Mach-II applications where every listener >> is defined as type EventArgsInvoker. In the process of trying to >> improve our usage of Mach-II and separate code out as much as >> possible, I have found the need to set an event-arg parameter from one >> of the listeners, so it could be used by the XML after the call. It is >> basically the only way I know of returning more than one piece of >> information from the listener (the other piece is already being >> returned via the resultArg). However, I tried to do this and I quickly >> realized that EventArgsInvoker does not actually pass in the event >> object to the listener. That is specifically the job of the >> alternative EventInvoker. >> >> So my question is this: is it possible to set a new event-arg in a >> listener that is of type EventArgsInvoker? I cannot find a way to do >> this; the event variable only contains the name of the event itself, >> not the object information. >> >> If not, does anyone think it would be a problem to pass in the event >> object as well as all event-args to that type of listener? I have >> modified the framework on my local instance to do just this, and it >> seems to solve my problem. I'm just wondering if there is a specific >> reason for not passing in that event object (memory, speed, etc). I >> understand that the recommendation is to use EventInvoker instead of >> EventArgsInvoker, but it really isn't an option for our site to switch >> to that (at least in the short term), as everything is already coded >> using an argument approach. >> >> Another alternative, maybe we could define another type (or set) of >> invokers which could use a "resultStruct" idea. That way, I could >> return a struct from my listener, and the invoker would loop over that >> struct and set the appropriate values based on their names. But maybe >> that is fundamentally wrong, as a function should by definition only >> return one thing. >> >> Anyway, anyone have any thoughts? -- Peter J. Farrell pe...@mach-ii.com p...@maestropublishing.com http://blog.maestropublishing.com Identi.ca / Twitter: @maestrofjp -- To post to this group, send email to mach-ii-for-coldfusion@googlegroups.com For more options and to unsubscribe, visit this group at http://groups.google.com/group/mach-ii-for-coldfusion?hl=en SVN: http://svn.mach-ii.com/machii/ Wiki / Documentation / Tickets: http://trac.mach-ii.com/machii/