ListenerManager

Package: MachII.framework
Manages registered Listeners for the framework.
Method Summary
public void init(string configXML, AppManager appManager)
package void addListener(string name, Listener listener)
public void configure()
public AppManager getAppManager()
public Listener getListener(string listenerName)
public boolean isListenerDefined(string listenerName)
public void setAppManager(AppManager appManager)
Method Detail
addListener

package void addListener( string name, Listener listener )

Parameters:
string name
Listener listener

Code:

	<cffunction name="addListener" access="package" returntype="void" output="true">
		<cfargument name="name" type="string" required="true">
		<cfargument name="listener" type="MachII.framework.Listener" required="true">
		
		<cfset variables.listeners[arguments.name] = arguments.listener />
	</cffunction> 

configure

public void configure( )

Parameters:

Code:

	<cffunction name="configure" access="public" returntype="void">
		<cfset var key = 0 />
		<cfloop collection="#variables.listeners#" item="key">
			<cfset getListener(key).configure() />
		</cfloop>
	</cffunction> 

getAppManager

public AppManager getAppManager( )

Parameters:

Code:

	<cffunction name="getAppManager" access="public" returntype="MachII.framework.AppManager" output="false">
		<cfreturn variables.appManager />
	</cffunction> 

getListener

public Listener getListener( string listenerName )

Parameters:
string listenerName

Code:

	<cffunction name="getListener" access="public" returntype="MachII.framework.Listener" output="true">
		<cfargument name="listenerName" type="string" required="true">
		
		<cfif isListenerDefined(arguments.listenerName)>
			<cfreturn variables.listeners[arguments.listenerName] />
		<cfelse>
			<cfthrow type="ListenerNotDefined" message="Listener with name #arguments.listenerName# is not defined." errorcode="1010" />
		</cfif>
	</cffunction> 

init

public void init( string configXML, AppManager appManager )

Parameters:
string configXML
AppManager appManager

Code:

	<cffunction name="init" access="public" returntype="void" output="false">
		<cfargument name="configXML" type="string" required="true" />
		<cfargument name="appManager" type="MachII.framework.AppManager" required="true" />
		
		<cfset var listenerNodes = "" />
		<cfset var listenerParams = "" />
		<cfset var i = 0 />
		<cfset var name = 0 />
		<cfset var type = 0 />
		<cfset var paramNodes = 0 />
		<cfset var j = 0 />
		<cfset var paramName = 0 />
		<cfset var paramValue = 0 />
		<cfset var invokerNodes = 0 />
		<cfset var invokerType = 0 />
		<cfset var invoker = 0 />
		<cfset var listener = 0 />
		
		<cfset setAppManager(arguments.appManager) />

		
		<cfset listenerNodes = XMLSearch(configXML,"//listeners/listener") />
		<cfloop from="1" to="#ArrayLen(listenerNodes)#" index="i">
			<cfset name = listenerNodes[i].xmlAttributes['name'] />
			<cfset type = listenerNodes[i].xmlAttributes['type'] />
		
			
			<cfset listenerParams = StructNew() />
			<cfset paramNodes = XMLSearch(listenerNodes[i], "./parameters/parameter") />
			<cfloop from="1" to="#ArrayLen(paramNodes)#" index="j">
				<cfset paramName = paramNodes[j].xmlAttributes['name'] />
				<cfset paramValue = paramNodes[j].xmlAttributes['value'] />
				<cfset listenerParams[paramName] = paramValue />
			</cfloop>
		
			
			<cfset invokerNodes = XMLSearch(listenerNodes[i], "./invoker") />
			<cfset invokerType = invokerNodes[1].xmlAttributes['type'] />
			
			<cfset invoker = CreateObject('component', invokerType) />
			<cfset invoker.init() />
			
			
			<cfset listener = CreateObject('component', type) />
			<cfset listener.init(arguments.appManager, listenerParams) />
			<cfset listener.setInvoker(invoker) />
			<cfset addListener(name, listener) />
		</cfloop> 
	</cffunction> 

isListenerDefined

public boolean isListenerDefined( string listenerName )

Parameters:
string listenerName

Code:

	<cffunction name="isListenerDefined" access="public" returntype="boolean" output="false">
		<cfargument name="listenerName" type="string" required="true" />
		<cfreturn StructKeyExists(variables.listeners, arguments.listenerName) />
	</cffunction> 

setAppManager

public void setAppManager( AppManager appManager )

Parameters:
AppManager appManager

Code:

	<cffunction name="setAppManager" access="public" returntype="void" output="false">
		<cfargument name="appManager" type="MachII.framework.AppManager" required="true" />
		<cfset variables.appManager = arguments.appManager />
	</cffunction>