EventArgsInvoker

Package: MachII.framework.invokers
Inherits from: framework.ListenerInvoker
ListenerInvoker that invokes a Listener's method passing the Event's args as an argument collection.
Method Summary
public EventArgsInvoker init()

Used by the framework for initialization. Do not override.

public void invokeListener(Event event, Listener listener, string method, [string resultKey=""], [string resultArg=""])

Invokes the Listener.

Method Detail
init

public EventArgsInvoker init( )

Used by the framework for initialization. Do not override.

Parameters:

Code:

	<cffunction name="init" access="public" returntype="EventArgsInvoker" output="false"
		hint="Used by the framework for initialization. Do not override.">
		<cfreturn this />
	</cffunction> 

invokeListener

public void invokeListener( Event event, Listener listener, string method, [string resultKey=""], [string resultArg=""] )

Invokes the Listener.

Parameters:
Event event
Listener listener
string method
[string resultKey=""]
[string resultArg=""]

Code:

	<cffunction name="invokeListener" access="public" returntype="void"
		hint="Invokes the Listener.">
		<cfargument name="event" type="MachII.framework.Event" required="true"
			hint="The Event triggering the invocation." />
		<cfargument name="listener" type="MachII.framework.Listener" required="true"
			hint="The Listener to invoke." />
		<cfargument name="method" type="string" required="true"
			hint="The name of the Listener's method to invoke." />
		<cfargument name="resultKey" type="string" required="false" default=""
			hint="The variable to set the result in." />
		<cfargument name="resultArg" type="string" required="false" default=""
			hint="The eventArg to set the result in." />
		
		<cfset var resultValue = "" />
		
		<cftry>
			<cfinvoke 
				component="#arguments.listener#" 
				method="#arguments.method#" 
				argumentcollection="#arguments.event.getArgs()#" 
				returnvariable="resultValue" />
			
			
			<cfif arguments.resultKey NEQ ''>
				<cfset "#arguments.resultKey#" = resultValue />
			</cfif>
			
			<cfif arguments.resultArg NEQ ''>
				<cfset arguments.event.setArg(arguments.resultArg, resultValue) />
			</cfif>

			<cfcatch type="expression">
				<cfif FindNoCase("RESULTVALUE", cfcatch.Message)>
					<cfthrow type="MachII.framework.VoidReturnType"
							message="A ResultArg/Key has been specified on a notify command method that is returning void. This can also happen if your listener method returns a Java null."
							detail="Listener: '#getMetadata(listener).name#' Method: '#arguments.method#'" />
				<cfelse>
					<cfrethrow />
				</cfif>
			</cfcatch>			
			<cfcatch type="Any">
				<cfrethrow />
			</cfcatch>
		</cftry>
	</cffunction>