RE: [coldbox:18305] [coldbox-3.6.0] AOP aspect and custom messagebox plugin

I remember this error last time and the problem is that the flash scope is injected into the messageBox object after it is created at a later point in the application startup cycle. Your AOP advice must be firing before the framework has fully booted. What are the advices bound to and when do they access the message box plugin.

As a test, you could try catch that error just to let the app get past it, and see if the aspect works as excepted once the original request has processed and the app is fully loaded.

Thanks!

~Brad

ColdBox Platform Evangelist
Ortus Solutions, Corp

E-mail: brad@coldbox.org
ColdBox Platform: http://www.coldbox.org
Blog: http://www.codersrevolution.com

another great idea for a test. Yes, the aspect works. The aspect is designed to respond to any handler cfc’s in any module flagged with a meta value of “requiresaccount”. If not present, the aspect let’s the action for that handler run normally. If however, there is not account selected by the user (stuffed into sessionstorage), an error message is pushed into flash and they are returned to a neutral page (that does not require an account to be selected).

Catching the error in my custom message box plugin where the data is put() into flash allows the aspect to run normally and is performing as I expect.

Here is how I am binding the aspect:

bindAspect(classes=match().annotatedWith(‘requiresAccount’), methods=match().any(), aspects=“RequiresAccountAspect”);

At least initially, the “home page” is actually a module and none of the handlers in that module are annotate, so the framework should be completely loaded…although, a bookmarked page to another module which requires a session scoped account object that will not be present means it has to work without having gone to the home page first.

The code for the aspect is below.

Mike

component output=“false” implements=“coldbox.system.aop.MethodInterceptor” {
property name=“injector” inject=“wirebox”;
property name=“log” inject=“logbox:logger:{this}”;
property name=“logger” inject=“coldbox:plugin:logger”;
property name=“sesh” inject=“coldbox:plugin:SessionStorage”;
property name=“controller” inject=“coldbox”;
property name=“BSAlert” inject=“provider:BSAlertDSL”;

function init(logResults=true) onDIComplete {
instance = {logResults = arguments.logResults};
return this;
};

function OnDIComplete() {
if (log.candebug()) {log.debug(“Initialized”);};
};

any function invokeMethod(required invocation) output=“false” access=“public” hint=“Invoke an AOP method invocation” {
var debugString = “target: #arguments.invocation.getTargetName()#,method: #arguments.invocation.getMethod()#,arguments:#serializeJSON(arguments.invocation.getArgs())#”;
var currentmodule = sesh.getVar(“selectedmodule”);

var refLocal = {};

if (sesh.exists(“selectedaccount”) && !sesh.getVar(“selectedaccount”).IsNew()) {
refLocal.results = arguments.invocation.proceed();

if( structKeyExists(refLocal,“results”) ){
if( instance.logResults ){
log.debug("#debugString#, results:", refLocal.results);
}
return refLocal.results;
}
} else {
BSAlert.setMessage(type=“error”, message=“An attempt to access the #currentModule.getTabText()# Module that requires an Account selection has failed”, blocktitle=“Account Required”, dismiss=True);
if (log.candebug()) {log.debug(“User tried to access module that requires a selected account”);};
controller.setNextEvent(“Accounts:home.index”);
};
};
}

I thought this was interesting. I turned system debug on...I've numbered
and highlighted some interesting rows

"DEBUG","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.providers.CacheBoxColdBoxProvider","Starting
up CacheBox Cache: default with configuration:
{FREEMEMORYPERCENTAGETHRESHOLD={0},OBJECTDEFAULTTIMEOUT={120},MAXOBJECTS={300},USELASTACCESSTIMEOUTS={true},PROVIDER={coldbox.system.cache.providers.CacheBoxColdBoxProvider},COLDBOXENABLED={true},OBJECTDEFAULTLASTACCESSTIMEOUT={30},EVICTCOUNT={1},REAPFREQUENCY={2},EVICTIONPOLICY={LRU},OBJECTSTORE={ConcurrentStore}}"
"DEBUG","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.policies.LRU","Policy
coldbox.system.cache.policies.LRU constructed for cache: default"
"INFO","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.providers.CacheBoxColdBoxProvider","CacheBox
Cache: default has been initialized successfully for operation"
"DEBUG","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.providers.CacheBoxColdBoxProvider","Starting
up CacheBox Cache: TEMPLATE with configuration:
{FREEMEMORYPERCENTAGETHRESHOLD={0},OBJECTDEFAULTTIMEOUT={120},MAXOBJECTS={300},USELASTACCESSTIMEOUTS={true},EVICTCOUNT={2},OBJECTDEFAULTLASTACCESSTIMEOUT={30},OBJECTSTORE={ConcurrentSoftReferenceStore},EVICTIONPOLICY={LRU},REAPFREQUENCY={2}}"
"DEBUG","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.policies.LRU","Policy
coldbox.system.cache.policies.LRU constructed for cache: TEMPLATE"
"INFO","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.cache.providers.CacheBoxColdBoxProvider","CacheBox
Cache: TEMPLATE has been initialized successfully for operation"
"DEBUG","DEBUGLOG","05/08/2013","21:41:48","coldbox.system.web.services.InterceptorService","Registering
Mixer on 'afterInstanceAutowire' interception point"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Injector
has just registered a new listener: {NAME={{NAME, Mixer}},CLASS={{CLASS,
coldbox.system.aop.Mixer}},PROPERTIES={{PROPERTIES,
{GENERATIONPATH={/coldbox/system/aop/tmp},CLASSMATCHRELOAD={false}}}}}"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Registered
all internal lifecycle scopes successfully:
SINGLETON,SESSION,APPLICATION,REQUEST,CACHEBOX,SERVER,NOSCOPE"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Scope
Registration enabled and Injector scoped to:
{ENABLED={true},SCOPE={application},KEY={wireBox}}"
*--> looks like here we start to build the aspect*
*"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.scopes.Singleton","Object:
(requiresaccountaspect) not found in singleton cache, beggining
construction."*
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Instance
object built: RequiresAccountAspect:model.aspects.RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={injector},ARGNAME={},DSL={wirebox},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={log},ARGNAME={},DSL={logbox:logger:{this}},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.scopes.CacheBox","Object:
({KEY={wirebox-coldbox.system.plugins.logger},PROVIDER={default},LASTACCESSTIMEOUT={},TIMEOUT={}})
not found in cacheBox, beginning construction."
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Instance
object built: coldbox.system.plugins.logger:coldbox.system.plugins.logger"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Starting
'afterInstanceAutowire' chain with 2 interceptors"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Interception
started for: 'afterInstanceAutowire', key: mixer"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.aop.Mixer","Aspect
class matching dictionary built for mapping: coldbox.system.plugins.logger,
aspects: []"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Interception
ended for: 'afterInstanceAutowire', key: mixer"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Interception
started for: 'afterInstanceAutowire', key: pluginservice"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Interception
ended for: 'afterInstanceAutowire', key: pluginservice"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.web.context.InterceptorState","Finished
'afterInstanceAutowire' execution chain"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Finalized
Autowire for: coldbox.system.plugins.logger
ExtraInfo:{MIXINS={[]},DIPROPERTIES={[]},PROVIDERMETHODS={[]},DSL={},DISCOVERED={true},THREADSAFE={false},DISETTERS={[]},VALUE={},ONDICOMPLETE={[]},AUTOWIRE={true},CACHE={{KEY={wirebox-coldbox.system.plugins.logger},PROVIDER={default},LASTACCESSTIMEOUT={},TIMEOUT={}}},DIMETHODARGS={[]},TYPE={cfc},DICONSTRUCTORARGS={[{JAVACAST={null},NAME={controller},ARGNAME={},DSL={null},REQUIRED={true},SCOPE={variables},VALUE={[(Component=coldbox.system.web.Controller)]},REF={null}}]},NAME={coldbox.system.plugins.logger},SCOPE={cachebox},AUTOASPECTBINDING={true},VIRTUALINHERITANCE={coldbox.system.Plugin},PATH={coldbox.system.plugins.logger},AUTOINIT={true},EAGERINIT={false},ALIAS={[]},EXTRAATTRIBUTES={{PLUGINPATH={coldbox.system.plugins.logger},MODULE={},CUSTOM={false},ISPLUGIN={true}}},METADATA={{NAME={coldbox.system.plugins.logger},FULLNAME={coldbox.system.plugins.logger},SERIALIZABLE={false},FUNCTIONS={[{ACCESS={public},NAME={loadGlobalUDFLibraries},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@45480a35},HINT={Load
the global UDF libraries defined in the UDFLibraryFile
Setting},OUTPUT={false}},
{ACCESS={public},NAME={$rethrow},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@7c96411b},HINT={Rethrow
facade},OUTPUT={false}},
{ACCESS={public},NAME={getInterceptor},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6c8c9383},HINT={Get
an interceptor},OUTPUT={false}},
{ACCESS={public},NAME={relocate},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@128b522},HINT={This
method will be deprecated, please use setNextEvent()
instead.},OUTPUT={false}},
{ACCESS={public},NAME={getModuleSettings},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@178bcbc6},HINT={Get
a module's setting structure if it exists},OUTPUT={false}},
{ACCESS={public},NAME={getColdboxOCM},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5aef403d},HINT={Get
a CacheBox Cache of type:
coldbox.system.cache.IColdboxApplicationCache},COLDDOC:GENERIC={coldbox.system.cache.IColdboxApplicationCache},OUTPUT={false}},
{ACCESS={public},NAME={$abort},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@1162936f},HINT={Facade
for cfabort},OUTPUT={false}},
{ACCESS={public},NAME={setfwLocale},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5ebd6553},HINT={Set
the default locale to use in the framework for a specific user. Utility
Method},OUTPUT={false}},
{ACCESS={public},NAME={getNewMail},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@64475cbc},HINT={Get
a new mail payload object ready for sending email through our mail service.
This function's arguments match the cfmail tag, so send whatever you
like},OUTPUT={false}},
{ACCESS={public},NAME={getDatasource},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@9196e13},HINT={I
will return to you a datasourceBean according to the alias of the
datasource you wish to get from the
configstruct},COLDDOC:GENERIC={coldbox.system.core.db.DatasourceBean},OUTPUT={false}},
{ACCESS={public},NAME={getController},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6489a60f},HINT={Get
controller: coldbox.system.web.Controller},OUTPUT={false}},
{ACCESS={public},NAME={getMailService},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@8f5565a},HINT={Get
a reference to our Mail Service plugin},OUTPUT={false}},
{ACCESS={public},NAME={$dump},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@22f8334e},HINT={Facade
for cfmx dump},OUTPUT={true}},
{ACCESS={public},NAME={getModel},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@54f057d1},HINT={Create
or retrieve model objects by convention},OUTPUT={false}},
{ACCESS={Public},NAME={renderLayout},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6f1585e7},HINT={Renders
a layout with view combinations},OUTPUT={false}},
{ACCESS={public},NAME={renderView},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@6e0a39aa},HINT={Renders
all kinds of views},OUTPUT={false}},
{ACCESS={public},NAME={locateFilePath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@61500056},HINT={Locate
the real path location of a file in a coldbox application. 3 checks: 1)
inside of coldbox app, 2) expand the path, 3) Absolute location. If path
not found, it returns an empty path},OUTPUT={false}},
{ACCESS={public},NAME={$include},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@4b464003},HINT={Facade
for cfinclude},OUTPUT={true}},
{ACCESS={public},NAME={getSetting},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@7114ab90},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getDebugMode},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@40bb4f0},HINT={Facade
to get your current debug mode},OUTPUT={false}},
{ACCESS={public},NAME={getPlugin},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@1c93faa3},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={settingExists},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@372bf1fd},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getValidationManager},RETURNTYPE={coldbox.system.validation.IValidationManager},PARAMETERS={[Ljava.lang.Object;@261c3557},HINT={Retrieve
the application's configured Validation Manager},OUTPUT={false}},
{ACCESS={public},NAME={getSettingStructure},RETURNTYPE={struct},PARAMETERS={[Ljava.lang.Object;@5f1f64d},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getMemento},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@50613c47},HINT={Get
the memento of this object},OUTPUT={false}},
{ACCESS={public},NAME={setNextRoute},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@1fbc828b},HINT={This
method is now deprecated, please use setNextEvent(). This method will be
removed later on},OUTPUT={false}},
{ACCESS={public},NAME={setNextEvent},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@111e83f4},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={addAsset},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6a6910f3},HINT={Add
a js/css asset(s) to the html head section. You can also pass in a list of
assets.},OUTPUT={false}},
{ACCESS={public},NAME={getSettingsBean},RETURNTYPE={coldbox.system.core.collections.ConfigBean},PARAMETERS={[Ljava.lang.Object;@17d7f819},HINT={Returns
a configBean with all the configuration structure.},OUTPUT={false}},
{ACCESS={public},NAME={includeUDF},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@63e13d89},HINT={Injects
a UDF Library (*.cfc or *.cfm) into the target object. It does not
however, put the mixins on any of the cfc scopes. Therefore they can only
be called internally.},OUTPUT={false}},
{ACCESS={public},NAME={populateModel},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@588f2099},HINT={Populate
a named or instantiated model (java/cfc) from the request collection
items},OUTPUT={false}},
{ACCESS={public},NAME={validateModel},RETURNTYPE={coldbox.system.validation.result.IValidationResult},PARAMETERS={[Ljava.lang.Object;@1ca54a3b},HINT={Validate
a target object},OUTPUT={false}},
{ACCESS={public},NAME={getResource},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@27ac762e},HINT={Facade
to i18n.getResource. Returns a string.},OUTPUT={false}},
{ACCESS={public},NAME={$htmlhead},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@2b82da5b},HINT={Facade
to cfhtmlhead},OUTPUT={false}},
{ACCESS={public},NAME={announceInterception},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@1bcda2ae},HINT={Announce
an interception to the system. If you use the asynchronous facilities, you
will get a thread structure report as a result.},OUTPUT={true}},
{ACCESS={public},NAME={setDebugMode},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@59735bc4},HINT={Facade
to set your debug mode},OUTPUT={false}},
{ACCESS={public},NAME={persistVariables},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@248dcebd},HINT={Persist
variables for flash redirections},OUTPUT={false}},
{ACCESS={public},NAME={setSetting},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@59ffed0a},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getfwLocale},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@312359af},HINT={Get
the user's currently set locale or default locale},OUTPUT={false}},
{ACCESS={public},NAME={renderExternalView},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@7d5095d},HINT={Renders
external views},OUTPUT={false}},
{ACCESS={public},NAME={getMyPlugin},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@3359bcaf},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={$throw},PARAMETERS={[Ljava.lang.Object;@48729f7f},HINT={Facade
for cfthrow},OUTPUT={false}},
{ACCESS={public},NAME={getMailSettings},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5d457001},HINT={I
will return to you a mailsettingsBean modeled after your mail settings in
your config
file.},COLDDOC:GENERIC={coldbox.system.core.mail.MailSettingsBean},OUTPUT={false}},
{ACCESS={public},NAME={runEvent},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@79bc817d},HINT={Facade
to controller's runEvent() method.},OUTPUT={false}},
{ACCESS={public},NAME={locateDirectoryPath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@46d973fb},HINT={Locate
the real path location of a directory in a coldbox application. 3 checks:
1) inside of coldbox app, 2) expand the path, 3) Absolute location. If path
not found, it returns an empty path},OUTPUT={false}},
{ACCESS={public},NAME={getPluginDescription},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6e4d8813},HINT={Get
the instance's pluginDescription},OUTPUT={false}},
{ACCESS={public},NAME={getpluginPath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@2420cff8},HINT={Get
the instance's pluginPath},OUTPUT={false}},
{ACCESS={public},NAME={setPluginVersion},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6635b54f},HINT={Set
the instance's pluginVersion},OUTPUT={false}},
{ACCESS={public},NAME={setPluginDescription},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@501289f5},HINT={Set
the instance's pluginDescription},OUTPUT={false}},
{ACCESS={public},NAME={getPluginName},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@711f5ce4},HINT={Get
the instance's pluginName},OUTPUT={false}},
{ACCESS={private},NAME={getRequestContext},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@420bb6c1},HINT={Retrieve
the request context
object},COLDDOC:GENERIC={coldbox.system.web.context.RequestContext},OUTPUT={false}},
{ACCESS={public},NAME={getpluginAuthor},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@f0b5ac7},HINT={Get
the instance's pluginAuthor},OUTPUT={false}},
{ACCESS={public},NAME={getPluginVersion},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@3274c688},HINT={Get
the instance's pluginVersion},OUTPUT={false}},
{ACCESS={public},NAME={setPluginName},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@10962499},HINT={Set
the instance's pluginName},OUTPUT={false}},
{ACCESS={private},NAME={getRequestCollection},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@713cc150},HINT={Get
a reference to the request
collection},COLDDOC:GENERIC={struct},OUTPUT={false}},
{ACCESS={public},NAME={setpluginAuthor},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@4bb7a544},HINT={Set
the instance's pluginAuthor},OUTPUT={false}},
{ACCESS={public},NAME={setpluginAuthorURL},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@5c33a32},HINT={Set
the instance's pluginAuthorURL},OUTPUT={false}},
{ACCESS={public},NAME={init},RETURNTYPE={Logger},PARAMETERS={[Ljava.lang.Object;@5421ab92},HINT={Constructor},OUTPUT={false}},
{ACCESS={public},NAME={getpluginAuthorURL},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6e872964},HINT={Get
the instance's pluginAuthorURL},OUTPUT={false}},
{ACCESS={public},NAME={info},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@6bae9cec},HINT={I
log an information message.},OUTPUT={false}},
{ACCESS={public},NAME={fatal},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@14c0812f},HINT={I
log a fatal message.},OUTPUT={false}},
{ACCESS={public},NAME={logError},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@6a613f4d},HINT={Log
an error into the framework using arguments. Facade to
logErrorWithBean.},OUTPUT={false}},
{ACCESS={public},NAME={error},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@16830ecb},HINT={I
log an error message.},OUTPUT={false}},
{ACCESS={public},NAME={logEntry},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@76403cf8},HINT={Log
a message to the internal logger object. DEPRECATED, Please use other
methods.},OUTPUT={false}},
{ACCESS={public},NAME={logErrorWithBean},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@7362fa6e},HINT={Log
an error into the framework using a coldbox exceptionBean},OUTPUT={false}},
{ACCESS={public},NAME={warn},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@672786f0},HINT={I
log a warning message.},OUTPUT={false}},
{ACCESS={public},NAME={tracer},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@540c2b78},HINT={Log
a trace message to the ColdBox debugger panel, not LOGBOX},OUTPUT={false}},
{ACCESS={public},NAME={debug},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@6af9fe63},HINT={I
log a debug message.},OUTPUT={false}},
{ACCESS={public},NAME={getLogger},RETURNTYPE={coldbox.system.logging.Logger},PARAMETERS={[Ljava.lang.Object;@42ac4c73},HINT={This
coldbox apps's logger.},OUTPUT={false}}]},HINT={This is the frameworks
Logger object. It is used for all logging facilities interfacing with
LogBox and the ColdBox
debugger.},CACHE={true},PATH={C:\data\htdocs\coldbox-360\system\plugins\Logger.cfc},OUTPUT={false},INHERITANCETRAIL={[coldbox.system.plugins.logger,
coldbox.system.Plugin, coldbox.system.FrameworkSupertype,
WEB-INF.cftags.component]},TYPE={component}}},CONSTRUCTOR={init},METHOD={},ASPECT={false}}"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.scopes.CacheBox","Object:
({KEY={wirebox-coldbox.system.plugins.logger},PROVIDER={default},LASTACCESSTIMEOUT={},TIMEOUT={}})
constructed and stored in cacheBox. ThreadSafe=false"
"DEBUG","DEBUGLOG","05/08/2013","21:41:49","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={logger},ARGNAME={},DSL={coldbox:plugin:logger},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.scopes.Singleton","Object:
(coldbox.system.plugins.sessionstorage) not found in singleton cache,
beggining construction."
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.Injector","Instance
object built:
coldbox.system.plugins.SessionStorage:coldbox.system.plugins.SessionStorage"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Starting
'afterInstanceAutowire' chain with 2 interceptors"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Interception
started for: 'afterInstanceAutowire', key: mixer"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.aop.Mixer","Aspect
class matching dictionary built for mapping:
coldbox.system.plugins.sessionstorage, aspects: []"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Interception
ended for: 'afterInstanceAutowire', key: mixer"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Interception
started for: 'afterInstanceAutowire', key: pluginservice"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Interception
ended for: 'afterInstanceAutowire', key: pluginservice"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.web.context.InterceptorState","Finished
'afterInstanceAutowire' execution chain"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.Injector","Finalized
Autowire for: coldbox.system.plugins.SessionStorage
ExtraInfo:{MIXINS={[]},DIPROPERTIES={[]},PROVIDERMETHODS={[]},DSL={},DISCOVERED={true},THREADSAFE={false},DISETTERS={[]},VALUE={},ONDICOMPLETE={[]},AUTOWIRE={true},CACHE={{KEY={},PROVIDER={},LASTACCESSTIMEOUT={},TIMEOUT={}}},DIMETHODARGS={[]},TYPE={cfc},DICONSTRUCTORARGS={[{JAVACAST={null},NAME={controller},ARGNAME={},DSL={null},REQUIRED={true},SCOPE={variables},VALUE={[(Component=coldbox.system.web.Controller)]},REF={null}}]},NAME={coldbox.system.plugins.SessionStorage},SCOPE={singleton},AUTOASPECTBINDING={true},VIRTUALINHERITANCE={coldbox.system.Plugin},PATH={coldbox.system.plugins.SessionStorage},AUTOINIT={true},EAGERINIT={false},ALIAS={[]},EXTRAATTRIBUTES={{PLUGINPATH={coldbox.system.plugins.SessionStorage},MODULE={},CUSTOM={false},ISPLUGIN={true}}},METADATA={{NAME={coldbox.system.plugins.SessionStorage},FULLNAME={coldbox.system.plugins.SessionStorage},SINGLETON={true},SERIALIZABLE={false},FUNCTIONS={[{ACCESS={public},NAME={loadGlobalUDFLibraries},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@45480a35},HINT={Load
the global UDF libraries defined in the UDFLibraryFile
Setting},OUTPUT={false}},
{ACCESS={public},NAME={$rethrow},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@7c96411b},HINT={Rethrow
facade},OUTPUT={false}},
{ACCESS={public},NAME={getInterceptor},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6c8c9383},HINT={Get
an interceptor},OUTPUT={false}},
{ACCESS={public},NAME={relocate},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@128b522},HINT={This
method will be deprecated, please use setNextEvent()
instead.},OUTPUT={false}},
{ACCESS={public},NAME={getModuleSettings},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@178bcbc6},HINT={Get
a module's setting structure if it exists},OUTPUT={false}},
{ACCESS={public},NAME={getColdboxOCM},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5aef403d},HINT={Get
a CacheBox Cache of type:
coldbox.system.cache.IColdboxApplicationCache},COLDDOC:GENERIC={coldbox.system.cache.IColdboxApplicationCache},OUTPUT={false}},
{ACCESS={public},NAME={$abort},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@1162936f},HINT={Facade
for cfabort},OUTPUT={false}},
{ACCESS={public},NAME={setfwLocale},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5ebd6553},HINT={Set
the default locale to use in the framework for a specific user. Utility
Method},OUTPUT={false}},
{ACCESS={public},NAME={getNewMail},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@64475cbc},HINT={Get
a new mail payload object ready for sending email through our mail service.
This function's arguments match the cfmail tag, so send whatever you
like},OUTPUT={false}},
{ACCESS={public},NAME={getDatasource},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@9196e13},HINT={I
will return to you a datasourceBean according to the alias of the
datasource you wish to get from the
configstruct},COLDDOC:GENERIC={coldbox.system.core.db.DatasourceBean},OUTPUT={false}},
{ACCESS={public},NAME={getController},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6489a60f},HINT={Get
controller: coldbox.system.web.Controller},OUTPUT={false}},
{ACCESS={public},NAME={getMailService},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@8f5565a},HINT={Get
a reference to our Mail Service plugin},OUTPUT={false}},
{ACCESS={public},NAME={$dump},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@22f8334e},HINT={Facade
for cfmx dump},OUTPUT={true}},
{ACCESS={public},NAME={getModel},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@54f057d1},HINT={Create
or retrieve model objects by convention},OUTPUT={false}},
{ACCESS={Public},NAME={renderLayout},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6f1585e7},HINT={Renders
a layout with view combinations},OUTPUT={false}},
{ACCESS={public},NAME={renderView},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@6e0a39aa},HINT={Renders
all kinds of views},OUTPUT={false}},
{ACCESS={public},NAME={locateFilePath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@61500056},HINT={Locate
the real path location of a file in a coldbox application. 3 checks: 1)
inside of coldbox app, 2) expand the path, 3) Absolute location. If path
not found, it returns an empty path},OUTPUT={false}},
{ACCESS={public},NAME={$include},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@4b464003},HINT={Facade
for cfinclude},OUTPUT={true}},
{ACCESS={public},NAME={getSetting},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@7114ab90},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getDebugMode},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@40bb4f0},HINT={Facade
to get your current debug mode},OUTPUT={false}},
{ACCESS={public},NAME={getPlugin},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@1c93faa3},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={settingExists},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@372bf1fd},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getValidationManager},RETURNTYPE={coldbox.system.validation.IValidationManager},PARAMETERS={[Ljava.lang.Object;@261c3557},HINT={Retrieve
the application's configured Validation Manager},OUTPUT={false}},
{ACCESS={public},NAME={getSettingStructure},RETURNTYPE={struct},PARAMETERS={[Ljava.lang.Object;@5f1f64d},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getMemento},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@50613c47},HINT={Get
the memento of this object},OUTPUT={false}},
{ACCESS={public},NAME={setNextRoute},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@1fbc828b},HINT={This
method is now deprecated, please use setNextEvent(). This method will be
removed later on},OUTPUT={false}},
{ACCESS={public},NAME={setNextEvent},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@111e83f4},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={addAsset},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@6a6910f3},HINT={Add
a js/css asset(s) to the html head section. You can also pass in a list of
assets.},OUTPUT={false}},
{ACCESS={public},NAME={getSettingsBean},RETURNTYPE={coldbox.system.core.collections.ConfigBean},PARAMETERS={[Ljava.lang.Object;@17d7f819},HINT={Returns
a configBean with all the configuration structure.},OUTPUT={false}},
{ACCESS={public},NAME={includeUDF},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@63e13d89},HINT={Injects
a UDF Library (*.cfc or *.cfm) into the target object. It does not
however, put the mixins on any of the cfc scopes. Therefore they can only
be called internally.},OUTPUT={false}},
{ACCESS={public},NAME={populateModel},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@588f2099},HINT={Populate
a named or instantiated model (java/cfc) from the request collection
items},OUTPUT={false}},
{ACCESS={public},NAME={validateModel},RETURNTYPE={coldbox.system.validation.result.IValidationResult},PARAMETERS={[Ljava.lang.Object;@1ca54a3b},HINT={Validate
a target object},OUTPUT={false}},
{ACCESS={public},NAME={getResource},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@27ac762e},HINT={Facade
to i18n.getResource. Returns a string.},OUTPUT={false}},
{ACCESS={public},NAME={$htmlhead},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@2b82da5b},HINT={Facade
to cfhtmlhead},OUTPUT={false}},
{ACCESS={public},NAME={announceInterception},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@1bcda2ae},HINT={Announce
an interception to the system. If you use the asynchronous facilities, you
will get a thread structure report as a result.},OUTPUT={true}},
{ACCESS={public},NAME={setDebugMode},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@59735bc4},HINT={Facade
to set your debug mode},OUTPUT={false}},
{ACCESS={public},NAME={persistVariables},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@248dcebd},HINT={Persist
variables for flash redirections},OUTPUT={false}},
{ACCESS={public},NAME={setSetting},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@59ffed0a},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={getfwLocale},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@312359af},HINT={Get
the user's currently set locale or default locale},OUTPUT={false}},
{ACCESS={public},NAME={renderExternalView},RETURNTYPE={Any},PARAMETERS={[Ljava.lang.Object;@7d5095d},HINT={Renders
external views},OUTPUT={false}},
{ACCESS={public},NAME={getMyPlugin},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@3359bcaf},HINT={Facade},OUTPUT={false}},
{ACCESS={public},NAME={$throw},PARAMETERS={[Ljava.lang.Object;@48729f7f},HINT={Facade
for cfthrow},OUTPUT={false}},
{ACCESS={public},NAME={getMailSettings},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@5d457001},HINT={I
will return to you a mailsettingsBean modeled after your mail settings in
your config
file.},COLDDOC:GENERIC={coldbox.system.core.mail.MailSettingsBean},OUTPUT={false}},
{ACCESS={public},NAME={runEvent},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@79bc817d},HINT={Facade
to controller's runEvent() method.},OUTPUT={false}},
{ACCESS={public},NAME={locateDirectoryPath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@46d973fb},HINT={Locate
the real path location of a directory in a coldbox application. 3 checks:
1) inside of coldbox app, 2) expand the path, 3) Absolute location. If path
not found, it returns an empty path},OUTPUT={false}},
{ACCESS={public},NAME={getPluginDescription},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6e4d8813},HINT={Get
the instance's pluginDescription},OUTPUT={false}},
{ACCESS={public},NAME={getpluginPath},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@2420cff8},HINT={Get
the instance's pluginPath},OUTPUT={false}},
{ACCESS={public},NAME={setPluginVersion},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6635b54f},HINT={Set
the instance's pluginVersion},OUTPUT={false}},
{ACCESS={public},NAME={setPluginDescription},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@501289f5},HINT={Set
the instance's pluginDescription},OUTPUT={false}},
{ACCESS={public},NAME={getPluginName},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@711f5ce4},HINT={Get
the instance's pluginName},OUTPUT={false}},
{ACCESS={private},NAME={getRequestContext},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@420bb6c1},HINT={Retrieve
the request context
object},COLDDOC:GENERIC={coldbox.system.web.context.RequestContext},OUTPUT={false}},
{ACCESS={public},NAME={getpluginAuthor},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@f0b5ac7},HINT={Get
the instance's pluginAuthor},OUTPUT={false}},
{ACCESS={public},NAME={getPluginVersion},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@3274c688},HINT={Get
the instance's pluginVersion},OUTPUT={false}},
{ACCESS={public},NAME={setPluginName},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@10962499},HINT={Set
the instance's pluginName},OUTPUT={false}},
{ACCESS={private},NAME={getRequestCollection},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@713cc150},HINT={Get
a reference to the request
collection},COLDDOC:GENERIC={struct},OUTPUT={false}},
{ACCESS={public},NAME={setpluginAuthor},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@4bb7a544},HINT={Set
the instance's pluginAuthor},OUTPUT={false}},
{ACCESS={public},NAME={setpluginAuthorURL},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@5c33a32},HINT={Set
the instance's pluginAuthorURL},OUTPUT={false}},
{ACCESS={public},NAME={init},RETURNTYPE={SessionStorage},PARAMETERS={[Ljava.lang.Object;@3439c1d9},OUTPUT={false}},
{ACCESS={public},NAME={getpluginAuthorURL},RETURNTYPE={string},PARAMETERS={[Ljava.lang.Object;@6e872964},HINT={Get
the instance's pluginAuthorURL},OUTPUT={false}},
{ACCESS={public},NAME={setVar},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@3be5a858},HINT={Set
a new permanent variable.},OUTPUT={false}},
{ACCESS={public},NAME={getVar},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@628f4820},HINT={Get
a new permanent variable. If the variable does not exist. The method
returns blank.},OUTPUT={false}},
{ACCESS={public},NAME={removeStorage},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@2cc85f6d},HINT={remove
the entire storage scope},OUTPUT={false}},
{ACCESS={public},NAME={exists},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@16f10413},HINT={Checks
wether the permanent variable exists.},OUTPUT={false}},
{ACCESS={public},NAME={clearAll},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@29428729},HINT={Clear
the entire coldbox session storage},OUTPUT={false}},
{ACCESS={private},NAME={createStorage},RETURNTYPE={void},PARAMETERS={[Ljava.lang.Object;@4eb7a9e8},HINT={Create
the session storage scope},OUTPUT={false}},
{ACCESS={public},NAME={deleteVar},RETURNTYPE={boolean},PARAMETERS={[Ljava.lang.Object;@7bf3e6b7},HINT={Tries
to delete a permanent session var.},OUTPUT={false}},
{ACCESS={public},NAME={getStorage},RETURNTYPE={any},PARAMETERS={[Ljava.lang.Object;@49b037f4},HINT={Get
the entire storage scope},OUTPUT={false}}]},HINT={Session Storage plugin.
It provides the user with a mechanism for permanent data storage using the
session
scope.},PATH={C:\data\htdocs\coldbox-360\system\plugins\SessionStorage.cfc},OUTPUT={false},INHERITANCETRAIL={[coldbox.system.plugins.SessionStorage,
coldbox.system.Plugin, coldbox.system.FrameworkSupertype,
WEB-INF.cftags.component]},TYPE={component}}},CONSTRUCTOR={init},METHOD={},ASPECT={false}}"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.scopes.Singleton","Object:
(coldbox.system.plugins.sessionstorage) constructed and stored in singleton
cache. ThreadSafe=false"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={sesh},ARGNAME={},DSL={coldbox:plugin:SessionStorage},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={controller},ARGNAME={},DSL={coldbox},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
"DEBUG","DEBUGLOG","05/08/2013","21:41:50","coldbox.system.ioc.Injector","Dependency:
{JAVACAST={null},NAME={BSAlert},ARGNAME={},DSL={provider:BSAlertDSL},REQUIRED={false},SCOPE={variables},VALUE={null},REF={null}}
--> injected into RequiresAccountAspect"
*--> I put this in on onDIComplete so Init() is finished*