| Package: MachII.framework |
| Base Mach-II component. |
<!--- License: Copyright 2008 GreatBizTools, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Copyright: GreatBizTools, LLC $Id: BaseComponent.cfc 709 2008-03-26 22:06:16Z peterfarrell $ Created version: 1.0.10 Updated version: 1.5.0 Notes: The BaseComponent extended by Listener, EventFilter and Plugin components and gives quick access to things such as announcing a new event or getting/setting properties. - Implemented accessors to access the PropertyManager instead of direct name space calling. (pfarrell) - Deprecated hasParameter(). Duplicate method isParameterDefined is more inline with the rest of the framework. (pfarrell) ---> |
| Method Summary | |
|---|---|
| public void |
init(AppManager appManager, [struct parameters="#StructNew()#"])
Used by the framework for initialization. Do not override. |
| public void |
announceEvent(string eventName, [struct eventArgs="#StructNew()#"])
Announces a new event to the framework. |
| public void |
announceEventInModule(string moduleName, string eventName, [struct eventArgs="#StructNew()#"])
Announces a new event to the framework. |
| private any |
bindValue(string parameterName, any parameterValue)
Binds placeholders to any passed value. |
| public string |
buildUrl(string eventName, [any urlParameters=""], [string urlBase])
Builds a framework specific url with module name. |
| public string |
buildUrlToModule(string moduleName, string eventName, [any urlParameters=""], [string urlBase])
Builds a framework specific url. |
| public void |
configure()
Override to provide custom configuration logic. Called after init(). |
| public AppManager |
getAppManager()
Gets the components AppManager instance. |
| public string |
getComponentNameForLogging()
Gets the component name for logging. |
| public Log |
getLog()
Gets the log. |
| public any |
getParameter(string name, [any defaultValue=""])
Gets a configuration parameter value, or a default value if not defined. |
| public struct |
getParameters()
Gets the full set of configuration parameters for the component. |
| public any |
getProperty(string propertyName, [any defaultValue=""])
Gets the specified property - this is just a shortcut for getPropertyManager().getProperty() |
| public PropertyManager |
getPropertyManager()
Gets the components PropertyManager instance. |
| public boolean |
hasParameter(string name)
DEPRECATED - use isParameterDefined() instead. Checks to see whether or not a configuration parameter is defined. |
| public boolean |
isParameterDefined(string name)
Checks to see whether or not a configuration parameter is defined. |
| private void |
setAppManager(AppManager appManager)
Sets the components AppManager instance. |
| public void |
setLog(LogFactory logFactory)
Uses the log factory to create a log. |
| public void |
setParameter(string name, any value)
Sets a configuration parameter. |
| public void |
setParameters(struct parameters)
Sets the full set of configuration parameters for the component. |
| public any |
setProperty(string propertyName, any propertyValue)
Sets the specified property - this is just a shortcut for getPropertyManager().setProperty() |
| Method Detail |
|---|
| announceEvent |
|---|
public void announceEvent( string eventName, [struct eventArgs="#StructNew()#"] )
Announces a new event to the framework.
Parameters:
| string eventName |
| [struct eventArgs="#StructNew()#"] |
Code:
<cffunction name="announceEvent" access="public" returntype="void" output="false" hint="Announces a new event to the framework."> <cfargument name="eventName" type="string" required="true" hint="The name of the event to announce." /> <cfargument name="eventArgs" type="struct" required="false" default="#StructNew()#" hint="A struct of arguments to set as the event's args." /> <cfset var appKey = getAppManager().getAppLoader().getAppKey() /> <cfif StructKeyExists(request, "_MachIIRequestHandler_" & appKey)> <cfset request["_MachIIRequestHandler_" & appKey].getEventContext().announceEvent(arguments.eventName, arguments.eventArgs) /> <cfelse> <cfthrow message="The required RequestHandler is necessary to announce events is not set in 'request['_MachIIRequestHandler_#appKey#']'." /> </cfif> </cffunction>
| announceEventInModule |
|---|
public void announceEventInModule( string moduleName, string eventName, [struct eventArgs="#StructNew()#"] )
Announces a new event to the framework.
Parameters:
| string moduleName |
| string eventName |
| [struct eventArgs="#StructNew()#"] |
Code:
<cffunction name="announceEventInModule" access="public" returntype="void" output="false" hint="Announces a new event to the framework."> <cfargument name="moduleName" type="string" required="true" hint="The name of the module in which event exists." /> <cfargument name="eventName" type="string" required="true" hint="The name of the event to announce." /> <cfargument name="eventArgs" type="struct" required="false" default="#StructNew()#" hint="A struct of arguments to set as the event's args." /> <cfset var appKey = getAppManager().getAppLoader().getAppKey() /> <cfif StructKeyExists(request, "_MachIIRequestHandler_" & appKey)> <cfset request["_MachIIRequestHandler_" & appKey].getEventContext().announceEvent(arguments.eventName, arguments.eventArgs, arguments.moduleName) /> <cfelse> <cfthrow message="The required RequestHandler is necessary to announce events is not set in 'request['_MachIIRequestHandler_#appKey#']'." /> </cfif> </cffunction>
| bindValue |
|---|
private any bindValue( string parameterName, any parameterValue )
Binds placeholders to any passed value.
Parameters:
| string parameterName |
| any parameterValue |
Code:
<cffunction name="bindValue" access="private" returntype="any" output="false"
hint="Binds placeholders to any passed value.">
<cfargument name="parameterName" type="string" required="true"
hint="The name of the parameter to bind." />
<cfargument name="parameterValue" type="any" required="true"
hint="The current value of the parameter." />
<cfset var propertyName = "" />
<cfset var value = arguments.parameterValue />
<cfif IsSimpleValue(arguments.parameterValue) AND REFindNoCase("\${(.)*?}", arguments.parameterValue)>
<cfset propertyName = Mid(arguments.parameterValue, 3, Len(arguments.parameterValue) -3) />
<cfif getPropertyManager().isPropertyDefined(propertyName)
OR (IsObject(getAppManager().getParent()) AND getAppManager().getParent().getPropertyManager().isPropertyDefined(propertyName))>
<cfset value = getProperty(propertyName) />
<cfelse>
<cfthrow type="MachII.framework.ProperyNotDefinedToBindToParameter"
message="The required property is not defined to bind to a parameter named '#arguments.parameterName#'." />
</cfif>
</cfif>
<cfreturn value />
</cffunction>
| buildUrl |
|---|
public string buildUrl( string eventName, [any urlParameters=""], [string urlBase] )
Builds a framework specific url with module name.
Parameters:
| string eventName |
| [any urlParameters=""] |
| [string urlBase] |
Code:
<cffunction name="buildUrl" access="public" returntype="string" output="false" hint="Builds a framework specific url with module name."> <cfargument name="eventName" type="string" required="true" hint="Name of the event to build the url with." /> <cfargument name="urlParameters" type="any" required="false" default="" hint="Name/value pairs (urlArg1=value1|urlArg2=value2) to build the url with or a struct of data." /> <cfargument name="urlBase" type="string" required="false" hint="Base of the url. Defaults to the value of the urlBase property." /> <cfset var appKey = getAppManager().getAppLoader().getAppKey() /> <cfset arguments.moduleName = request["_MachIIRequestHandler_" & appKey].getEventContext().getAppManager().getModuleName() /> <cfreturn getAppManager().getRequestManager().buildUrl(argumentcollection=arguments) /> </cffunction>
| buildUrlToModule |
|---|
public string buildUrlToModule( string moduleName, string eventName, [any urlParameters=""], [string urlBase] )
Builds a framework specific url.
Parameters:
| string moduleName |
| string eventName |
| [any urlParameters=""] |
| [string urlBase] |
Code:
<cffunction name="buildUrlToModule" access="public" returntype="string" output="false" hint="Builds a framework specific url."> <cfargument name="moduleName" type="string" required="true" hint="Name of the module to build the url with. Defaults to base module if empty string." /> <cfargument name="eventName" type="string" required="true" hint="Name of the event to build the url with." /> <cfargument name="urlParameters" type="any" required="false" default="" hint="Name/value pairs (urlArg1=value1|urlArg2=value2) to build the url with or a struct of data." /> <cfargument name="urlBase" type="string" required="false" hint="Base of the url. Defaults to the value of the urlBase property." /> <cfreturn getAppManager().getRequestManager().buildUrl(argumentcollection=arguments) /> </cffunction>
| configure |
|---|
public void configure( )
Override to provide custom configuration logic. Called after init().
Parameters:
Code:
<cffunction name="configure" access="public" returntype="void" output="false" hint="Override to provide custom configuration logic. Called after init()."> </cffunction>
| getAppManager |
|---|
public AppManager getAppManager( )
Gets the components AppManager instance.
Parameters:
Code:
<cffunction name="getAppManager" access="public" returntype="MachII.framework.AppManager" output="false" hint="Gets the components AppManager instance."> <cfreturn variables.appManager /> </cffunction>
| getComponentNameForLogging |
|---|
public string getComponentNameForLogging( )
Gets the component name for logging.
Parameters:
Code:
<cffunction name="getComponentNameForLogging" access="public" returntype="string" output="false" hint="Gets the component name for logging."> <cfreturn ListLast(getMetaData(this).name, ".") /> </cffunction>
| getLog |
|---|
public Log getLog( )
Gets the log.
Parameters:
Code:
<cffunction name="getLog" access="public" returntype="MachII.logging.Log" output="false" hint="Gets the log."> <cfreturn variables.log /> </cffunction>
| getParameter |
|---|
public any getParameter( string name, [any defaultValue=""] )
Gets a configuration parameter value, or a default value if not defined.
Parameters:
| string name |
| [any defaultValue=""] |
Code:
<cffunction name="getParameter" access="public" returntype="any" output="false" hint="Gets a configuration parameter value, or a default value if not defined."> <cfargument name="name" type="string" required="true" hint="The parameter name." /> <cfargument name="defaultValue" type="any" required="false" default="" hint="The default value to return if the parameter is not defined. Defaults to a blank string." /> <cfif isParameterDefined(arguments.name)> <cfreturn bindValue(arguments.name, variables.parameters[arguments.name]) /> <cfelse> <cfreturn arguments.defaultValue /> </cfif> </cffunction>
| getParameters |
|---|
public struct getParameters( )
Gets the full set of configuration parameters for the component.
Parameters:
Code:
<cffunction name="getParameters" access="public" returntype="struct" output="false" hint="Gets the full set of configuration parameters for the component."> <cfset var key = "" /> <cfset var resolvedParameters = StructNew() /> <cfloop collection="#variables.parameters#" item="key"> <cfset resolvedParameters[key] = bindValue(key, variables.parameters[key]) /> </cfloop> <cfreturn resolvedParameters /> </cffunction>
| getProperty |
|---|
public any getProperty( string propertyName, [any defaultValue=""] )
Gets the specified property - this is just a shortcut for getPropertyManager().getProperty()
Parameters:
| string propertyName |
| [any defaultValue=""] |
Code:
<cffunction name="getProperty" access="public" returntype="any" output="false" hint="Gets the specified property - this is just a shortcut for getPropertyManager().getProperty()"> <cfargument name="propertyName" type="string" required="true" hint="The name of the property to return."/> <cfargument name="defaultValue" type="any" required="false" default="" hint="The default value to use if the requested property is not defined." /> <cfreturn getPropertyManager().getProperty(arguments.propertyName, arguments.defaultValue) /> </cffunction>
| getPropertyManager |
|---|
public PropertyManager getPropertyManager( )
Gets the components PropertyManager instance.
Parameters:
Code:
<cffunction name="getPropertyManager" access="public" returntype="MachII.framework.PropertyManager" output="false" hint="Gets the components PropertyManager instance."> <cfreturn getAppManager().getPropertyManager() /> </cffunction>
| hasParameter |
|---|
public boolean hasParameter( string name )
DEPRECATED - use isParameterDefined() instead. Checks to see whether or not a configuration parameter is defined.
Parameters:
| string name |
Code:
<cffunction name="hasParameter" access="public" returntype="boolean" output="false"
hint="DEPRECATED - use isParameterDefined() instead. Checks to see whether or not a configuration parameter is defined.">
<cfargument name="name" type="string" required="true"
hint="The parameter name." />
<cfset getLog().warn("The hasParameter() method has been deprecated. Please use isParameterDefined() instead. Called from component '#getComponentNameForLogging()#'.") />
<cfreturn StructKeyExists(variables.parameters, arguments.name) />
</cffunction>
| init |
|---|
public void init( AppManager appManager, [struct parameters="#StructNew()#"] )
Used by the framework for initialization. Do not override.
Parameters:
| AppManager appManager |
| [struct parameters="#StructNew()#"] |
Code:
<cffunction name="init" access="public" returntype="void" output="false" hint="Used by the framework for initialization. Do not override."> <cfargument name="appManager" type="MachII.framework.AppManager" required="true" hint="The framework instances' AppManager." /> <cfargument name="parameters" type="struct" required="false" default="#StructNew()#" hint="The initial set of configuration parameters." /> <cfset setAppManager(arguments.appManager) /> <cfset setParameters(arguments.parameters) /> </cffunction>
| isParameterDefined |
|---|
public boolean isParameterDefined( string name )
Checks to see whether or not a configuration parameter is defined.
Parameters:
| string name |
Code:
<cffunction name="isParameterDefined" access="public" returntype="boolean" output="false" hint="Checks to see whether or not a configuration parameter is defined."> <cfargument name="name" type="string" required="true" hint="The parameter name." /> <cfreturn StructKeyExists(variables.parameters, arguments.name) /> </cffunction>
| setAppManager |
|---|
private void setAppManager( AppManager appManager )
Sets the components AppManager instance.
Parameters:
| AppManager appManager |
Code:
<cffunction name="setAppManager" access="private" returntype="void" output="false" hint="Sets the components AppManager instance."> <cfargument name="appManager" type="MachII.framework.AppManager" required="true" hint="The AppManager instance to set." /> <cfset variables.appManager = arguments.appManager /> </cffunction>
| setLog |
|---|
public void setLog( LogFactory logFactory )
Uses the log factory to create a log.
Parameters:
| LogFactory logFactory |
Code:
<cffunction name="setLog" access="public" returntype="void" output="false" hint="Uses the log factory to create a log."> <cfargument name="logFactory" type="MachII.logging.LogFactory" required="true" /> <cfset variables.log = arguments.logFactory.getLog(getMetadata(this).name) /> </cffunction>
| setParameter |
|---|
public void setParameter( string name, any value )
Sets a configuration parameter.
Parameters:
| string name |
| any value |
Code:
<cffunction name="setParameter" access="public" returntype="void" output="false" hint="Sets a configuration parameter."> <cfargument name="name" type="string" required="true" hint="The parameter name." /> <cfargument name="value" required="true" hint="The parameter value." /> <cfset variables.parameters[arguments.name] = arguments.value /> </cffunction>
| setParameters |
|---|
public void setParameters( struct parameters )
Sets the full set of configuration parameters for the component.
Parameters:
| struct parameters |
Code:
<cffunction name="setParameters" access="public" returntype="void" output="false" hint="Sets the full set of configuration parameters for the component."> <cfargument name="parameters" type="struct" required="true" hint="Struct to set as parameters" /> <cfset var key = "" /> <cfloop collection="#arguments.parameters#" item="key"> <cfset setParameter(key, parameters[key]) /> </cfloop> </cffunction>
| setProperty |
|---|
public any setProperty( string propertyName, any propertyValue )
Sets the specified property - this is just a shortcut for getPropertyManager().setProperty()
Parameters:
| string propertyName |
| any propertyValue |
Code:
<cffunction name="setProperty" access="public" returntype="any" output="false" hint="Sets the specified property - this is just a shortcut for getPropertyManager().setProperty()"> <cfargument name="propertyName" type="string" required="true" hint="The name of the property to set."/> <cfargument name="propertyValue" type="any" required="true" hint="The value to store in the property." /> <cfreturn getPropertyManager().setProperty(arguments.propertyName, arguments.propertyValue) /> </cffunction>