EventInvoker

Package: MachII.framework.invokers
Inherits from: framework.ListenerInvoker
ListenerInvoker that invokes a Listener's method passing the Event as the sole argument.
Method Summary
public EventInvoker 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 EventInvoker init( )

Used by the framework for initialization. Do not override.

Parameters:

Code:

	<cffunction name="init" access="public" returntype="EventInvoker" 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#" 
				event="#arguments.event#" 
				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>