RequestHandler

Package: MachII.framework
Handles request to event conversion for the framework.
Method Summary
public void init(AppManager appManager)

Initializes the RequestHandler.

private AppManager getAppManager()
private string getEventName(struct eventArgs)
private struct getRequestEventArgs()
public void handleEventRequest(string eventName, struct eventArgs)
public void handleRequest()
private void setAppManager(AppManager appManager)
Method Detail
getAppManager

private AppManager getAppManager( )

Parameters:

Code:

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

getEventName

private string getEventName( struct eventArgs )

Parameters:
struct eventArgs

Code:

	<cffunction name="getEventName" access="private" returntype="string" output="false">
		<cfargument name="eventArgs" type="struct" required="true" />
	
		<cfset var eventParam = getAppManager().getPropertyManager().getProperty('eventParameter') />
		<cfset var eventName = "" />
		
		<cfif StructKeyExists(arguments.eventArgs, eventParam)>
			<cfset eventName = arguments.eventArgs[eventParam] />
		<cfelse>
			<cfset eventName = getAppManager().getPropertyManager().getProperty('defaultEvent') />
		</cfif>
		
		<cfreturn eventName />
	</cffunction> 

getRequestEventArgs

private struct getRequestEventArgs( )

Parameters:

Code:

	<cffunction name="getRequestEventArgs" access="private" returntype="struct" output="false">
		<cfset var eventArgs = StructNew() />
		<cfset var paramPrecedence = getAppManager().getPropertyManager().getProperty('parameterPrecedence') />
		<cfset var overwriteFormParams = (paramPrecedence EQ 'url') />
		
		<cfset StructAppend(eventArgs, form) />
		<cfset StructAppend(eventArgs, url, overwriteFormParams) />
		
		<cfreturn eventArgs />
	</cffunction> 

handleEventRequest

public void handleEventRequest( string eventName, struct eventArgs )

Parameters:
string eventName
struct eventArgs

Code:

	<cffunction name="handleEventRequest" access="public" returntype="void" output="true">
		<cfargument name="eventName" type="string" required="true" />
		<cfargument name="eventArgs" type="struct" required="true" default="#StructNew()#" />
		
		<cfset var exception = "" />
		<cfset var eventContext = getAppManager().createEventContext() />
		<cfset request.eventContext = eventContext />
		
		<cftry>
			<cfif NOT getAppManager().getEventManager().isEventDefined(arguments.eventName)>
				<cfthrow message="Event-handler for event #arguments.eventName# is not defined." />
			</cfif>
			
			<cfif getAppManager().getEventManager().isEventPublic(arguments.eventName)>
				<cfset eventContext.announceEvent(arguments.eventName, arguments.eventArgs) />
			<cfelse>
				<cfthrow message="Event-handler for event #arguments.eventName# is not accessible." />
			</cfif>
			
			
			<cfcatch type="any">
				<cfset exception = CreateObject('component', 'MachII.util.Exception') />
				<cfset exception.init(cfcatch.type, cfcatch.message, cfcatch.errorCode, cfcatch.detail, cfcatch.extendedInfo, cfcatch.tagContext) />
				<cfset eventContext.handleException(exception, true) />
			</cfcatch>
		</cftry>
		
		
		<cfset eventContext.processEvents() />
	</cffunction> 

handleRequest

public void handleRequest( )

Parameters:

Code:

	<cffunction name="handleRequest" access="public" returntype="void" output="true">
		
		<cfset var eventArgs = getRequestEventArgs() />
		
		<cfset var eventName = getEventName(eventArgs) />
		<cfset handleEventRequest(eventName, eventArgs) />
	</cffunction> 

init

public void init( AppManager appManager )

Initializes the RequestHandler.

Parameters:
AppManager appManager

Code:

	<cffunction name="init" access="public" returntype="void" output="false"
		hint="Initializes the RequestHandler.">
		<cfargument name="appManager" type="MachII.framework.AppManager" required="true" />
		<cfset setAppManager(arguments.appManager) />
	</cffunction> 

setAppManager

private void setAppManager( AppManager appManager )

Parameters:
AppManager appManager

Code:

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