Access to transfer from onException

7 views
Skip to first unread message

paulFusion

unread,
Jan 26, 2009, 8:56:32 PM1/26/09
to ColdBox Framework
I'm fairly new to transfer, and loving it so far. However I've run
into a problem which has me stumped.

I'm trying to get access to a transfer object from within my
onException handler. Here's what I think is the pertinent code:

<cfcomponent name="main" extends="coldbox.system.eventhandler"
output="false" autowire="true">

<cfproperty name="Transfer" type="ocm" scope="instance">

...

<cffunction name="onException" access="public" returntype="void"
output="false">
<cfargument name="Event" type="coldbox.system.beans.requestContext">

<cfset var page = instance.transfer.readByProperty("admin.Page",
"urlFriendly", cgi.PATH_INFO)/>
...


It looks just like all my other attempts to autowire transfer into my
event handlers, which work fine. When I attempt to do so in the
exception handler though, I get the following error:

Error Messages: Element TRANSFER is undefined in a Java object of
type class [Ljava.lang.String;.


I've also tried the _wireme="ocm" approach, with the same results.


Is there any reason why autowire wouldn't work in an exception
handler? Any other way to get access to the transferLoader object?

Thanks,
-paul

paulFusion

unread,
Jan 28, 2009, 9:19:13 AM1/28/09
to ColdBox Framework
Oops... saw the posting instructions after the fact.
Also, I meant to say "fairly new to Coldbox".

Coldbox 2.6.2 (although maybe that goes without saying since I'm using
transferLoader)
ColdFusion 8.0.1
Windows 2003

Here's my trace:


Oops! Exception Encountered
Error Running Custom Exception handler
Error Type: Expression : [N/A]
Error Messages: Element TRANSFER is undefined in ARGUMENTS.
Tag Context:
ID: CF_DOTRESOLVER
LINE: 57
Template: C:\websites\WorkPlaceMedia\htdocs\handlers\main.cfc
ID: CFINVOKE
LINE: 430
Template: C:\websites\_globalLibrary\framework\coldbox\2.6.2\system
\controller.cfc
ID: CF_TEMPLATEPROXY
LINE: 52
Template: C:\websites\_globalLibrary\framework\coldbox\2.6.2\system
\services\ExceptionService.cfc
ID: CF_TEMPLATEPROXY
LINE: 216
Template: C:\websites\coldbox\system\coldbox.cfc
ID: CF_UDFMETHOD
LINE: 55
Template: C:\websites\WorkPlaceMedia\htdocs\Application.cfc
Framework Snapshot
Current Event: friendly.index
Current Layout: N/A
Current View: N/A
Bug Date: 01/26/2009 08:52:31 PM
Coldfusion ID: CFID=60630 ; CFToken=70151065 ;
JSessionID=WORKPLACEMEDIA_60630_70151065
Template Path : C:\websites\WorkPlaceMedia\htdocs\index.cfm
Path Info : /friendly
Host & Server: workplacemedia.dev.wris.net wrisdev
Query String:
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5)
Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5.30729) Ubiquity/0.1.4
ColdFire/1.3.142.145
Stack Trace:

coldfusion.runtime.UndefinedElementException: Element TRANSFER is
undefined in ARGUMENTS.
at coldfusion.runtime.DotResolver.resolveSplitNameInMap
(DotResolver.java:108)
at coldfusion.runtime.CfJspPage._resolve(CfJspPage.java:1550)
at coldfusion.runtime.CfJspPage._resolve(CfJspPage.java:1532)
at cfmain2ecfc23664457$funcONEXCEPTION.runFunction(C:\websites
\WorkPlaceMedia\htdocs\handlers\main.cfc:57)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke
(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke
(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke
(FunctionAccessFilter.java:59)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:463)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:453)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:320)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2222)
at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:362)
at cfcontroller2ecfc1319953960$funcRUNEVENT.runFunction(C:\websites
\_globalLibrary\framework\coldbox\2.6.2\system\controller.cfc:430)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke
(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke
(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke
(FunctionAccessFilter.java:59)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272)
at cfExceptionService2ecfc1180915728$funcEXCEPTIONHANDLER.runFunction
(C:\websites\_globalLibrary\framework\coldbox\2.6.2\system\services
\ExceptionService.cfc:52)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke
(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke
(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke
(FunctionAccessFilter.java:59)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272)
at cfcoldbox2ecfc1836567121$funcPROCESSCOLDBOXREQUEST.runFunction(C:
\websites\coldbox\system\coldbox.cfc:216)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke
(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke
(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke
(FunctionAccessFilter.java:59)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)
at cfApplication2ecfc2098941746$funcONREQUESTSTART.runFunction(C:
\websites\WorkPlaceMedia\htdocs\Application.cfc:55)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke
(UDFMethod.java:360)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke
(UDFMethod.java:324)
at coldfusion.filter.FunctionAccessFilter.invoke
(FunctionAccessFilter.java:59)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)
at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:74)
at coldfusion.runtime.AppEventInvoker.onRequestStart
(AppEventInvoker.java:221)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:
264)
at coldfusion.filter.RequestMonitorFilter.invoke
(RequestMonitorFilter.java:48)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:
40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
at coldfusion.filter.BrowserDebugFilter.invoke
(BrowserDebugFilter.java:74)
at coldfusion.filter.ClientScopePersistenceFilter.invoke
(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:
22)
at coldfusion.CfmServlet.service(CfmServlet.java:175)
at coldfusion.bootstrap.BootstrapServlet.service
(BootstrapServlet.java:89)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at com.intergral.fusionreactor.filter.FusionReactorFilter.G(Unknown
Source)
at com.intergral.fusionreactor.filter.FusionReactorFilter.B(Unknown
Source)
at com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter
(Unknown Source)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at coldfusion.monitor.event.MonitoringServletFilter.doFilter
(MonitoringServletFilter.java:42)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:
46)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke
(JRunRequestDispatcher.java:286)
at jrun.servlet.ServletEngineService.dispatch
(ServletEngineService.java:543)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable
(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable
(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable
(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable
(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)


And my ColdBox.xml


<?xml version="1.0" encoding="ISO-8859-1"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.coldboxframework.com/schema/
config_2.5.0.xsd">
<Settings>
<!--The name of your application.-->
<Setting name="AppName" value="ClientName"/>
<!--Default Debugmode boolean flag (Set to false in production
environments)-->
<Setting name="DebugMode" value="false" />
<!--The Debug Password to use in order to activate/deactivate
debugmode,activated by url actions -->
<Setting name="DebugPassword" value=""/>
<!--The fwreinit password to use in order to reinitialize the
framework and application.Optional, else leave blank -->
<Setting name="ReinitPassword" value=""/>
<!--Default event name variable to use in URL/FORM etc. -->
<Setting name="EventName" value="event" />
<!--This feature is enabled by default to permit the url dumpvar
parameter-->
<Setting name="EnableDumpVar" value="false" />
<!--Log Errors and entries on the coldfusion server logs, disabled
by default if not used-->
<Setting name="EnableColdfusionLogging" value="false" />
<!--Log Errors and entries in ColdBox's own logging facilities. You
choose the location, finally per application logging.-->
<Setting name="EnableColdboxLogging" value="false" />
<!--The absolute or relative path to where you want to store your
log files for this application-->
<Setting name="ColdboxLogsLocation" value="logs" />
<!--Default Event to run if no event is set or passed. Usually the
event to be fired first (NOTE: use event handler syntax)-->
<Setting name="DefaultEvent" value="general.dspHome"/>
<!--Event Handler to run on the start of a request, leave blank if
not used. Emulates the Application.cfc onRequestStart method -->
<Setting name="RequestStartHandler" value="main.onRequestStart"/>
<!--Event Handler to run at end of all requests, leave blank if not
used. Emulates the Application.cfc onRequestEnd method-->
<Setting name="RequestEndHandler" value="main.onRequestEnd"/>
<!--Event Handler to run at the start of an application, leave blank
if not used. Emulates the Application.cfc onApplicationStart method --
>
<Setting name="ApplicationStartHandler" value="main.onAppInit"/>
<!--Event Handler to run at the start of a session, leave blank if
not used.-->
<Setting name="SessionStartHandler" value="main.onSessionStart"/>
<!--Event Handler to run at the end of a session, leave blank if not
used.-->
<Setting name="SessionEndHandler" value="main.onSessionEnd"/>
<!--The event handler to execute on all framework exceptions. Event
Handler syntax required.-->
<Setting name="ExceptionHandler" value="main.onException" />
<!--What event to fire when an invalid event is detected-->
<Setting name="onInvalidEvent" value="" />
<!--Full path from the application's root to your custom error page,
else leave blank. -->
<Setting name="CustomErrorTemplate" value="" />
<!--The Email address from which all outgoing framework emails will
be sent. -->
<Setting name="OwnerEmail" value="pa...@wris.com" />
<!-- Enable Bug Reports to be emailed out, set to true by default if
left blank
A sample template has been provided to you in includes/
generic_error.cfm
-->
<Setting name="EnableBugReports" value="False"/>
<!--UDF Library To Load on every request for your views and handlers
-->
<Setting name="UDFLibraryFile" value="" />
<!--Messagebox Style Override. A boolean of wether to override the
styles using your own css.-->
<Setting name="MessageboxStyleOverride" value="" />
<!--Flag to Auto reload the internal handlers directory listing.
False for production. -->
<Setting name="HandlersIndexAutoReload" value="False" />
<!--Flag to auto reload the config.xml settings. False for
production. -->
<Setting name="ConfigAutoReload" value="false" />
<!-- Declare the custom plugins base invocation path, if used. You
have to use dot notation.Example: mymapping.myplugins -->
<Setting name="MyPluginsLocation" value="" />
<!-- Declare the external handlers base invocation path, if used.
You have to use dot notation.Example: mymapping.myhandlers -->
<Setting name="HandlersExternalLocation" value="" />
<!--Flag to cache handlers. Default if left blank is true. -->
<Setting name="HandlerCaching" value="false"/>
<!--Flag to cache events if metadata declared. Default is true -->
<Setting name="EventCaching" value=""/>
<!--IOC Framework if Used, else leave blank-->
<Setting name="IOCFramework" value="" />
<!--IOC Definition File Path, relative or absolute -->
<Setting name="IOCDefinitionFile" value="" />
<!--IOC Object Caching, true/false. For ColdBox to cache your IoC
beans-->
<Setting name="IOCObjectCaching" value="" />
<!--Request Context Decorator, leave blank if not using. Full
instantiation path -->
<Setting name="RequestContextDecorator" value=""/>
<!--Flag if the proxy returns the entire request collection or what
the event handlers return, default is false -->
<Setting name="ProxyReturnCollection" value="false"/>
</Settings>

<!--Your Settings can go here, if not needed, use <YourSettings />.
You can use these for anything you like.
<YourSettings>
<Setting name="MySetting" value="My Value"/>
</YourSettings>
-->
<YourSettings>
<Setting name="ColdBoxSideBar" value="true" />

<Setting name="site.title" value="Client Name" />
<Setting name="site.salt" value="gF!Ax%5z2DNFV" />
</YourSettings>

<!--Optional,if blank it will use the CFMX administrator settings.-->
<MailServerSettings>
<MailServer></MailServer>
<MailPort></MailPort>
<MailUsername></MailUsername>
<MailPassword></MailPassword>
</MailServerSettings>

<!--Emails to Send bug reports, you can create as many as you like
<BugEmail>mye...@gmail.com</BugEmail>
-->
<BugTracerReports/>

<!--List url dev environments, this determines your dev/pro
environment for the framework-->
<DevEnvironments>
<url>dev</url>
</DevEnvironments>

<!--Webservice declarations your use in your application, if not use,
leave blank
Note that for the same webservice name you can have a development url
and a production url.
<WebServices>
<WebService name="TESTWS1" URL="http://www.test.com/test1.cfc?wsdl"
DevURL="http://dev.test.com/test1.cfc?wsdl" />
<WebService name="TESTWS2" URL="http://www.test.com/test2.cfc?wsdl"
DevURL="http://dev.test.com/test2.cfc?wsdl" />
</WebServices>
-->
<WebServices />

<!--Declare Layouts for your application here-->
<Layouts>
<!--Declare the default layout, MANDATORY-->
<DefaultLayout>Layout.Homepage.cfm</DefaultLayout>

<!--Default View, OPTIONAL -->
<!--
<DefaultView>home</DefaultView>
-->

<Layout file="Layout.Homepage.cfm" name="homepage">
<View>home</View>
</Layout>

<!-- Declare other layouts, with view/folder assignments if needed,
else do not write them -->
<Layout file="Layout.SubpageTwoColumn.cfm" name="SubpageTwoColumn">
<Folder>menus</Folder>
</Layout>

<Layout file="Layout.SubpageThreeColumn.cfm"
name="SubpageThreeColumn">
<Folder>menus</Folder>
</Layout>

<Layout file="Layout.ContentManager.cfm" name="ContentManager">
<Folder>contentManager</Folder>
</Layout>

</Layouts>

<!--Internationalization and resource Bundle setup:-->
<i18N>
<DefaultResourceBundle>includes/i18n/main</DefaultResourceBundle>
<DefaultLocale>en_US</DefaultLocale>
<LocaleStorage>session</LocaleStorage>
</i18N>

<!--Datasource Setup, you can then retreive a datasourceBean via the
getDatasource("name") method:
<Datasource alias="MyDSNAlias" name="real_dsn_name" dbtype="mysql"
username="" password="" />
-->
<Datasources>
<Datasource alias="workPlaceMedia" name="clientDataSource"
dbtype="mssql" username="" password="" />
</Datasources>

<!--ColdBox Object Caching Settings Overrides the Framework-wide
settings -->
<Cache>
<ObjectDefaultTimeout>45</ObjectDefaultTimeout>
<ObjectDefaultLastAccessTimeout>15</ObjectDefaultLastAccessTimeout>
<UseLastAccessTimeouts>true</UseLastAccessTimeouts>
<ReapFrequency>3</ReapFrequency>
<MaxObjects>100</MaxObjects>
<FreeMemoryPercentageThreshold>0</FreeMemoryPercentageThreshold>
<!-- LFU/LRU -->
<EvictionPolicy>LFU</EvictionPolicy>
</Cache>

<!-- Interceptor Declarations
<Interceptors throwOnInvalidStates="true">
<CustomInterceptionPoints>comma-delimited list</
CustomInterceptionPoints>
<Interceptor class="full class name">
<Property name="myProp">value</Property>
<Property name="myArray">[1,2,3]</Property>
<Property name="myStruct">{ key1:1, key2=2 }</Property>
</Inteceptor>
<Interceptor class="no property" />
</Interceptors>
-->

<Interceptors>
<!-- config file is relative to app root -->
<Interceptor class="coldbox.system.interceptors.ses">
<Property name="configFile">config/routes.cfm</Property>
</Interceptor>

<!-- Transfer Loader -->
<Interceptor class="coldbox.system.extras.transfer.TransferLoader">
<Property name="ConfigPath">config/transfer.xml.cfm</Property>
<Property name="definitionPath">/definitions</Property>
<Property name="datasourceAlias">workPlaceMedia</Property>
</Interceptor>

<!-- Autowiring -->
<Interceptor class="coldbox.system.interceptors.autowire"></
Interceptor>

<!-- Add logged-in user to event scope -->
<Interceptor class="interceptors.userInjector"></Interceptor>

<!-- Sidebar -->
<Interceptor class="coldbox.system.interceptors.coldboxSideBar">
<!-- Y offset: number, else leave blank -->
<Property name="yOffset"></Property>
<!-- Scroll: true/false, else leave blank -->
<Property name="isScroll"></Property>
<!-- Slide Speed: number, else leave blank -->
<Property name="slideSpeed"></Property>
<!-- Wait time before closing: number, else leave blank -->
<Property name="waitTimeBeforeClose"></Property>
<!-- Links (JSON array of objects), else leave blank
e.g.
[
{"desc":"ColdBox API","href":"http:\/\/www.coldboxframework.com\/
api\/"}
,{"desc":"ColdBox Credits","href":"http:\/\/ortus.svnrepository.com
\/coldbox\/trac.cgi\/wiki\/cbCredits"}
,{"desc":"ColdBox SideBar Help","href":"http:\/\/
ortus.svnrepository.com\/coldbox\/trac.cgi\/wiki\/cbSideBar"}
,{"desc":"Transfer Docs","href":"http:\/\/docs.transfer-orm.com
\/"}
,{"desc":"My API","href":"http:\/\/localhost\/myApi/"}
,{"desc":"My Database Schema","href":"http:\/\/localhost\/
myDatabaseSchema.pdf"}
]
-->
<Property name="links"></Property>
<!-- Width of the sidebar including visible width, else leave blank
-->
<Property name="width"></Property>
<!-- Visible width, else leave blank -->
<Property name="visibleWidth"></Property>
<!--Full path from the application's root, else leave blank. -->
<Property name="imagePath"></Property>
<!-- Vertical alignment of the image: top,middle or bottom, else
leave blank -->
<Property name="imageVAlign"></Property>
<!--Full path from the application's root, else leave blank -->
<Property name="cssPath"></Property>
</Interceptor>

<!-- Content Manager Security -->
<Interceptor class="coldbox.system.interceptors.security">
<Property name="useRoutes">true</Property>
<Property name="rulesSource">xml</Property>
<Property name="rulesFile">config/security.xml.cfm</Property>
<Property name="debugMode">true</Property>
<Property name="preEventSecurity">true</Property>
</Interceptor>
</Interceptors>

</Config>

paulFusion

unread,
Jan 28, 2009, 10:11:17 AM1/28/09
to ColdBox Framework
Well, not sure what my issue was, but it turns out I really wanted to
use onInvalidEvent anyway. And the transfer injection seems to be
working just fine there.

For now I'm just attributing this to the intergnomes, and I'm moving
on.

-paul
> not used. Emulates the Application.cfc ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages