| 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>