Missing include that's actually there

246 views
Skip to first unread message

Bill Foresman

unread,
Sep 16, 2014, 8:44:42 AM9/16/14
to ra...@googlegroups.com
Railo 4.2.1.007 Error (missinginclude)
MessagePage ../../../:/www/domain.com//errors/fusebox.missingParsedFile.cfm [C:\www\entry.theauroras.com\..\..\..\:\www\domain.com\errors\fusebox.missingParsedFile.cfm] not found
StacktraceThe Error Occurred in
/core/fusebox/fuseboxApplication.cfc: line 541 
539: <cfinclude template="#__errorFile#" />
540: <cfelse>
541: <cfinclude template="#getCoreToAppRootPath()##__errorFile#" />
542: </cfif>
543: <cfset __handled = true />

called from /core/fusebox/fusebox5.cfm: line 205 
called from /index.cfm: line 9 
Java StacktracePage ../../../:/www/domain.com//errors/fusebox.missingParsedFile.cfm [C:\www\domain.com\..\..\..\:\www\domain.com\errors\fusebox.missingParsedFile.cfm] not found 
  at railo.runtime.PageSourceImpl.loadPage(PageSourceImpl.java:872):872 
  at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:872):872 
  at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:813):813 
  at core.fusebox.fuseboxapplication_cfc$cf.udfCall2(/core/fusebox/fuseboxApplication.cfc:541):541 
  at core.fusebox.fuseboxapplication_cfc$cf.udfCall(/core/fusebox/fuseboxApplication.cfc):-1 
  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fusebox5_cfm$cf.call(/core/fusebox/fusebox5.cfm:205):205 
  at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:880):880 
  at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:813):813 
  at index_cfm$cf.call(/index.cfm:9):9 
  at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:880):880 
  at railo.runtime.listener.ClassicAppListener._onRequest(ClassicAppListener.java:39):39 
  at railo.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:19):19 
  at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2215):2215 
  at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2182):2182 
  at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:332):332 
  at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:29):29 
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727):727 
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303):303 
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208):208 
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52):52 
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241):241 
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208):208 
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220):220 
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122):122 
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501):501 
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171):171 
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102):102 
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116):116 
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408):408 
  at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193):193 
  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607):607 
  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314):314 
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145):1145 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615):615 
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61):61 
  at java.lang.Thread.run(Thread.java:745):745 
 
Timestamp9/16/14 8:41:26 AM EDT

Michael Forell

unread,
Sep 16, 2014, 11:19:04 AM9/16/14
to ra...@googlegroups.com
Hi Bill, 

I just thought I'm the only one running legacy code..

However, I added two line to fuseboxApplication.cfc, if I remember correclty:
Line 1327 to 1329 was:
<cfif segment is ".">
<!--- just ignore this --->
<cfelseif segment is "..">
Line 1227 to 1231 now is: 
<cfif segment is ".">
<!--- just ignore this --->
<cfelseif segment is ":">
<!--- just ignore this --->
<cfelseif segment is "..">

As you can see in your error message, there is a colon in the path, which has to be removed. I have no idea where it came from, but above patch the things for me.

Regards
Michael 

Bill Foresman

unread,
Sep 16, 2014, 11:43:45 AM9/16/14
to ra...@googlegroups.com
This is what it looks like now but no joy:

<cfloop list="#resolvedPath#" delimiters="/" index="segment">
<cfif segment is ".">
<!--- just ignore this --->
<cfelseif segment is ":">
<!--- just ignore this --->
<cfelseif segment is "..">
<cfif j gt 1 and pathParts[j-1] is not "..">
<cfset j = j - 1 />
<cfelse>
<cfset pathParts[j] = segment />
<cfset j = j + 1 />
</cfif>
<cfelse>
<cfset pathParts[j] = segment />
<cfset j = j + 1 />
</cfif>
</cfloop>

--
Did you find this reply useful? Help the Railo community and add it to the Railo Server wiki at https://github.com/getrailo/railo/wiki
---
You received this message because you are subscribed to a topic in the Google Groups "Railo" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/railo/20c14ba6-d522-4e53-a483-54bf74744cda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Bill Foresman

Bill Foresman

unread,
Sep 16, 2014, 11:49:21 AM9/16/14
to ra...@googlegroups.com
Where is it picking up a :?

Michael Forell

unread,
Sep 17, 2014, 4:44:17 AM9/17/14
to ra...@googlegroups.com
Hi Bill, 

I assume, the colon comes from the path on Windows, e.g. c:\ in your case.
I just rechecked my fusebox5 installation, but as far as I remember this is the only change. 
What does your line 82 to 84 look like in fuxeboxApplication.cfc? 

And what about the files in the parsed folder within your fusebox-app-folder? When where they changed, and do the <cfinclude>s point to a valid file?

Did you try to restart Railo after the changes you made?

Regards
Michael 

Bill Foresman

unread,
Sep 17, 2014, 6:54:42 AM9/17/14
to ra...@googlegroups.com
I did restart railo but no change. What code are you looking for on line 82?

The parsed folder hasn't been changed since moving the site from CF9.

--
Did you find this reply useful? Help the Railo community and add it to the Railo Server wiki at https://github.com/getrailo/railo/wiki
---
You received this message because you are subscribed to a topic in the Google Groups "Railo" group.

For more options, visit https://groups.google.com/d/optout.

Bill Foresman

unread,
Sep 17, 2014, 7:02:49 AM9/17/14
to ra...@googlegroups.com
<!---
Copyright 2006 TeraTech, Inc. http://teratech.com/

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


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.
--->
<cfcomponent output="false" hint="I am the Fusebox application object, formerly the application.fusebox data structure.">

<cfscript>
// initialize the fusebox (available to be read by developers but not to be written to)
this.isFullyLoaded = false;
this.circuits = structNew();
this.classes = structNew();
this.lexicons = structNew();
this.plugins = structNew();
this.pluginphases = structNew();
this.nonFatalExceptionPrefix = "INFORMATION (can be ignored): ";

this.precedenceFormOrURL = "form";
this.defaultFuseaction = "";
this.fuseactionVariable = "fuseaction";
// this is ignored:
this.parseWithComments = false;
this.ignoreBadGrammar = true;
this.allowLexicon = true;
this.useAssertions = true;
this.conditionalParse = false;
this.password = "";
this.mode = "production";
this.scriptLanguage = "cfmx";
this.scriptFileDelimiter = "cfm";
this.maskedFileDelimiters = "htm,cfm,cfml,php,php4,asp,aspx";
this.characterEncoding = "utf-8";
// this is ignored:
this.parseWithIndentation = this.parseWithComments;
this.strictMode = false;
this.allowImplicitCircuits = false;
this.debug = false;
</cfscript>
<cffunction name="init" returntype="fuseboxApplication" access="public" output="false" 
hint="I am the constructor.">
<cfargument name="appKey" type="string" required="true" 
hint="I am FUSEBOX_APPLICATION_KEY." />
<cfargument name="appPath" type="string" required="true" 
hint="I am FUSEBOX_APPLICATION_PATH." />
<cfargument name="myFusebox" type="myFusebox" required="true" 
hint="I am the myFusebox data structure." />
<cfargument name="callerPath" type="string" required="true" 
hint="I am FUSEBOX_CALLER_PATH." />
<!--- ticket 171 created Fusebox 5.1.0 --->
<!---
<cfset var myVersion = "5.1.0.#REReplace('$LastChangedRevision: 320 $','[^0-9]','','all')#" />
 --->
<cfset var myVersion = "5.1.0" />

<cfset variables.factory = createObject("component","fuseboxFactory").init() />
<cfset variables.fuseboxLexicon = variables.factory.getBuiltinLexicon() />
<cfset variables.customAttributes = structNew() />
<cfset variables.fuseboxFileExtension = "" />

<cfset variables.fuseboxVersion = myVersion />
<cfset variables.appKey = arguments.appKey />
<cfset this.webrootdirectory = replace(getDirectoryFromPath(getBaseTemplatePath()),"\","/","all") />
<cfset variables.coreRoot = replace(getDirectoryFromPath(getCurrentTemplatePath()),"\","/","all") />

<!---<cfset this.approotdirectory = getCanonicalPath(normalizePartialPath(arguments.callerPath) & normalizePartialPath(arguments.appPath)) />--->
<cfset this.approotdirectory = getCanonicalPath(normalizePartialPath(arguments.callerPath) & normalizePartialPath(arguments.appPath)) & "/" />

<!--- this works on all platforms: --->
<cfset this.osdelimiter = "/" />

<cfset this.coreToAppRootPath = relativePath(variables.coreRoot,this.approotdirectory) />
<cfset this.appRootPathToCore = relativePath(this.approotdirectory,variables.coreRoot) />
<cfset this.coreToWebRootPath = relativePath(variables.coreRoot,this.webrootdirectory) />
<cfset this.WebRootPathToCore = relativePath(this.webrootdirectory,variables.coreRoot) />
<cfset this.parsePath = "core/parsed/" />
<cfset this.parseRootPath = "../" />
<cfset this.pluginsPath = "core/plugins/" />
<cfset this.lexiconPath = "core/lexicon/" />
<cfset this.errortemplatesPath = "errors/" />
<!--- new in Fusebox 5.1: --->
<cfset this.self = "index.cfm" />
<cfset this.queryStringStart = "/" />
<cfset this.queryStringSeparator = "/" />
<cfset this.queryStringEqual = "/" />
<cfset this.circuits = structNew() />
<cfset reload(arguments.appKey,arguments.appPath,arguments.myFusebox) />

<cfif this.strictMode>
<!--- rootdirectory was deprecated in Fusebox 5 so we no longer set it it strict mode: --->
<cfset structDelete(this,"rootdirectory") />
<cfelse>
<!--- for FB4.0 compatibility: --->
<cfset this.rootdirectory = this.approotdirectory />
</cfif>
<cfreturn this />

</cffunction>

<cffunction name="reload" returntype="void" access="public" output="false" 
hint="I (re)load the fusebox.xml file into memory and (re)load all of the application components referenced by that.">
<cfargument name="appKey" type="string" required="true" 
hint="I am FUSEBOX_APPLICATION_KEY." />
<cfargument name="appPath" type="string" required="true" 
hint="I am FUSEBOX_APPLICATION_PATH." />
<cfargument name="myFusebox" type="myFusebox" required="true" 
hint="I am the myFusebox data structure." />
<cfset var fbFile = "fusebox.xml.cfm" />
<cfset var fbFileAlt = "fusebox.xml" />
<cfset var fbXML = "" />
<cfset var fbCode = "" />
<cfset var encodings = 0 />
<cfset var needToLoad = true />
<cfset var fuseboxFiles = 0 />
<cfset var myFuseboxFilePath = "" />
<cfset var jFuseboxFile = "" />
<cfset var dtLastModified = "" />
<!---
since we need to check the file, regardless of whether we load it,
we might as well do the test up front and perform the strict check
that just one version exists (ticket 135)
--->
<cfif fileExists(this.approotdirectory & fbFile)>
<cfif this.strictMode and fileExists(this.approotdirectory & fbFileAlt)>
<cfthrow type="fusebox.multipleFuseboxXML" 
message="Both 'fusebox.xml' and 'fusebox.xml.cfm' exist" 
detail="'fusebox.xml.cfm' will be used but 'fusebox.xml' also exists in '#this.approotdirectory#." />
</cfif>
<cfelse>
<cfset fbFile = fbFileAlt />
</cfif>

<cfif structKeyExists(this,"timestamp")>
<!--- Java timestamp solution provided by Daniel Schmid --->
<cfset myFuseboxFilePath = this.approotdirectory & fbFile />
<cfset jFuseboxFile = createObject("java","java.io.File").init(myFuseboxFilePath) />
<cfset dtLastModified = createObject("java","java.util.Date").init(jFuseboxFile.lastModified()) />
<cfset needToLoad = parseDateTime(dtLastModified) gt parseDateTime(this.timestamp) />
</cfif>

<cfif needToLoad>
<cfif this.debug>
<cfset arguments.myFusebox.trace("Compiler","Loading fusebox.xml file") />
</cfif>
<!--- attempt to load fusebox.xml(.cfm): --->
<cftry>
<cffile action="read" file="#this.approotdirectory##fbFile#"
variable="fbXML"
charset="#this.characterEncoding#" />
<cfset variables.fuseboxFileExtension = listLast(fbFile,".") />
<cfcatch type="any">
<cfthrow type="fusebox.missingFuseboxXML" 
message="missing fusebox.xml" 
detail="The file '#fbFile#' could not be found in the directory #this.approotdirectory#."
extendedinfo="#cfcatch.detail#" />
</cfcatch>
</cftry>
<cftry>
<cfset fbCode = xmlParse(fbXML) />
<!--- see if we need to re-read based on the encoding being different to our default --->
<cfset encodings = xmlSearch(fbCode,"/fusebox/parameters/parameter[@name='characterEncoding']") />
<cfif arrayLen(encodings) eq 1 and structKeyExists(encodings[1].xmlAttributes,"value")>
<cfif encodings[1].xmlAttributes.value is not this.characterEncoding>
<cfset this.characterEncoding = encodings[1].xmlAttributes.value />
<!--- now re-read the file in case anything is changed in that new encoding --->
<cffile action="read" file="#this.approotdirectory##fbFile#"
variable="fbXML"
charset="#this.characterEncoding#" />
<cfset fbCode = xmlParse(fbXML) />
</cfif>
</cfif>
<cfcatch type="any">
<cfthrow type="fusebox.fuseboxXMLError" 
message="Error reading fusebox.xml" 
detail="A problem was encountered while reading the #fbFile# file. This is usually caused by unmatched XML tags (a &lt;tag&gt; without a &lt;/tag&gt; or without use of the &lt;tag/&gt; short-cut.)"
extendedinfo="#cfcatch.detail#" />
</cfcatch>
</cftry>
<cfif fbCode.xmlRoot.xmlName is not "fusebox">
<cfthrow type="fusebox.badGrammar.badFuseboxFile"
detail="Fusebox file does contain 'fusebox' XML" 
message="Fusebox file #fbFile# does not contain 'fusebox' as the root XML node." />
</cfif>

<cfset loadParameters(fbCode) />
<cfset loadLexicons(fbCode) />
<cfset loadClasses(fbCode) />
<cfset loadPlugins(fbCode) />
<cfset loadGlobalPreAndPostProcess(fbCode) />
<!--- save fusebox.xml DOM internally for (re-)loading circuits --->
<cfset variables.fbCode = fbCode />
<cfset variables.fbFile = fbFile />
<cfset this.timestamp = now() />
</cfif>
<!--- to track circuit loads on this request --->
<cfparam name="request.__fusebox.CircuitsLoaded" default="#structNew()#" />
<cfset loadCircuits(variables.fbCode,arguments.myFusebox) />
<!--- FB5: fusebox.loadclean will delete all the parsed files --->
<cfif arguments.myFusebox.parameters.clean>
<cfset deleteParsedFiles() />
</cfif>
<!--- application data available to developers via getApplicationData() method: --->
<cfset variables.data = structNew() />
<cfset this.isFullyLoaded = true />
<cfset this.applicationStarted = false />
<cfset this.dateLastLoaded = now() />
<!---
The following documented parts of application.fusebox are not supported in Fusebox 5:
- application.fusebox.xml
- application.fusebox.globalfuseactions.*
- application.fusebox.circuits.*.xml
- application.fusebox.circuits.preFuseaction.*
- application.fusebox.circuits.postFuseaction.*
- application.fusebox.circuits.*.fuseactions.*.xml
--->
</cffunction>
<cffunction name="getPluginsPath" returntype="string" access="public" output="false" 
hint="I am a convenience method to return the location of the plugins.">
<cfreturn this.pluginsPath />
</cffunction>
<cffunction name="getApplicationData" returntype="struct" access="public" output="false" 
hint="I return a reference to the application data cache. This is a new concept in Fusebox 5.">
<cfreturn variables.data />
</cffunction>
<cffunction name="getApplicationRoot" returntype="any" access="public" output="false" 
hint="I am a convenience method to return the full application root directory path.">
<cfreturn this.approotdirectory />
</cffunction>
<cffunction name="expandFuseboxPath" returntype="any" access="public" output="false" 
hint="I expand a path in the context of a Fusebox application.">
<cfargument name="partialPath" type="any" required="true" 
hint="I am the partial path to expand. If I do not begin with a /, prepend the Fusebox application root." />

<cfif left(arguments.partialPath,1) is "/">
<!--- absolute path, i.e., root-relative or mapped --->
<cfreturn replace(expandPath(arguments.partialPath),"\","/","all") />
<cfelse>
<!--- relative, i.e., relative to the Fusebox application root --->
<cfreturn getApplicationRoot() & arguments.partialPath />
</cfif>
</cffunction>
<cffunction name="getFuseboxXMLFilename" returntype="string" access="public" output="false" 
hint="I return the actual name of the fusebox.xml(.cfm) file.">
<cfreturn variables.fbFile />
</cffunction>
<cffunction name="getCoreToAppRootPath" returntype="any" access="public" output="false" 
hint="I am a convenience method to return the relative path from the core files to the application root.">
<cfreturn this.coreToAppRootPath />
</cffunction>
<cffunction name="compileAll" returntype="void" access="public" output="false" 
hint="I compile all the public fuseactions in the application.">
<cfargument name="myFusebox" type="myFusebox" required="true" 
hint="I am the myFusebox data structure." />

<cfset var c = 0 />
<cfset var a = 0 />
<cfset var f = 0 />
<cfloop collection="#this.circuits#" item="c">
<cfset a = this.circuits[c].getFuseactions() />
<cfloop collection="#a#" item="f">
<cfif a[f].access is "public">
<cfset compileRequest(c & "." & f,arguments.myFusebox) />
</cfif>
</cfloop>
</cfloop>

</cffunction>
<cffunction name="compileRequest" returntype="struct" access="public" output="false" 
hint="I compile a specific (public) fuseaction as an external request.">
<cfargument name="circuitFuseaction" type="string" required="true" 
hint="I am the full name of the requested fuseaction (circuit.fuseaction)." />
<cfargument name="myFusebox" type="myFusebox" required="true" 
hint="I am the myFusebox data structure." />

<cfset var myVersion = getVersion() />
<cfset var circuit = listFirst(arguments.circuitFuseaction,".") />
<cfset var fuseaction = listLast(arguments.circuitFuseaction,".") />
<cfset var i = 0 />
<cfset var n = 0 />
<cfset var needRethrow = true />
<cfset var needTryOnFuseaction = false />
<cfset var parsedName = "#lCase(arguments.circuitFuseaction)#.cfm" />
<cfset var parsedFile = "#this.parsePath##parsedName#" />
<cfset var fullParsedFile = "#this.expandFuseboxPath(this.parsePath)##parsedName#" />
<cfset var result = structNew() />
<cfset var writer = 0 />
<!--- validate format of the fuseaction: --->
<cfif listLen(arguments.circuitFuseaction,".") neq 2>
<cfthrow type="fusebox.malformedFuseaction" 
message="malformed Fuseaction" 
detail="You specified a malformed Fuseaction of #arguments.circuitFuseaction#. A fully qualified Fuseaction must be in the form [Circuit].[Fuseaction]." />
</cfif>
<!--- to track reloads on this request --->
<cfparam name="request.__fusebox.CircuitsLoaded" default="#structNew()#" />
<cfparam name="request.__fusebox.fuseactionsDone" default="#structNew()#" />
<!--- set up myFusebox values for this request: --->
<cfset arguments.myFusebox.originalCircuit = circuit />
<cfset arguments.myFusebox.originalFuseaction = fuseaction />
<cfloop collection="#this.plugins#" item="i">
<cfset arguments.myFusebox.plugins[i] = structNew() />
</cfloop>

<!--- note that in Fusebox 5, these are really all the same set of files --->
<cfset arguments.myFusebox.version.loader = myVersion />
<cfset arguments.myFusebox.version.parser = myVersion />
<cfset arguments.myFusebox.version.transformer = myVersion />
<!--- legacy test from FB41 although it's a bit pointless --->
<cfif myFusebox.version.runtime neq myFusebox.version.loader>
<cfthrow type="fusebox.versionMismatchException"
message="The loader is not the same version as the runtime" />
</cfif>
<!--- check access on request - if the circuit/fuseaction doesn't exist we trap it later --->
<cfif structKeyExists(this.circuits,circuit) and 
structKeyExists(this.circuits[circuit].fuseactions,fuseaction) and
this.circuits[circuit].fuseactions[fuseaction].getAccess() is not "public">
<cfthrow type="fusebox.invalidAccessModifier" 
message="Invalid Access Modifier" 
detail="You tried to access #circuit#.#fuseaction# which does not have access modifier of public. A Fuseaction which is to be accessed from anywhere outside the application (such as called via an URL, or a FORM, or as a web service) must have an access modifier of public or if unspecified at least inherit such a modifier from its circuit.">
</cfif>
<cfif not fileExists(fullParsedFile) or arguments.myFusebox.parameters.parse>
<cflock name="#fullParsedFile#" type="exclusive" timeout="300">
<cfif not fileExists(fullParsedFile) or arguments.myFusebox.parameters.parse>
<cfset request.__fusebox.SuppressPlugins = false />
<cfset writer = createObject("component","fuseboxWriter").init(this,arguments.myFusebox) />
<cfset writer.open(parsedName) />
<cfset writer.rawPrintln("<!--- circuit: #circuit# --->") />
<cfset writer.rawPrintln("<!--- fuseaction: #fuseaction# --->") />
<cfset writer.rawPrintln("<cftry>") />
<cfset writer.setCircuit(circuit) />
<cfset writer.setFuseaction(fuseaction) />
<cfif variables.hasProcess["appinit"]>
<cfset writer.setPhase("appinit") />
<cfset writer.println("<cfif myFusebox.applicationStart>") />
<cfset writer.println(' <cfif not myFusebox.getApplication().applicationStarted>') />
<cfset writer.println(' <cflock name="##application.ApplicationName##_fusebox_##FUSEBOX_APPLICATION_KEY##_appinit" type="exclusive" timeout="30">') />
<cfset writer.println(' <cfif not myFusebox.getApplication().applicationStarted>') />
<cfset request.__fusebox.SuppressPlugins = true />
<cfset variables.process["appinit"].compile(writer) />
<cfset writer.println(' <cfset myFusebox.getApplication().applicationStarted = true />') />
<cfset writer.println(' </cfif>') />
<cfset writer.println(' </cflock>') />
<cfset writer.println(' </cfif>') />
<cfset writer.println("</cfif>") />
</cfif>
<cfset request.__fusebox.SuppressPlugins = false />
<cfif structKeyExists(this.pluginPhases,"preProcess")>
<cfset n = arrayLen(this.pluginPhases["preProcess"]) />
<cfloop from="1" to="#n#" index="i">
<cfset this.pluginPhases["preProcess"][i].compile(writer) />
</cfloop>
</cfif>
<cfset writer.setPhase("preprocessFuseactions") />
<cfif variables.hasProcess["preprocess"]>
<cfset variables.process["preprocess"].compile(writer) />
</cfif>
<cfif structKeyExists(this.pluginPhases,"fuseactionException") and
arrayLen(this.pluginPhases["fuseactionException"]) gt 0 and
not request.__fusebox.SuppressPlugins>
<cfset needTryOnFuseaction = true />
<cfset writer.rawPrintln("<cftry>") />
</cfif>
<cfif structKeyExists(this.pluginPhases,"preFuseaction")>
<cfset n = arrayLen(this.pluginPhases["preFuseaction"]) />
<cfloop from="1" to="#n#" index="i">
<cfset this.pluginPhases["preFuseaction"][i].compile(writer) />
</cfloop>
</cfif>
<cfset writer.setPhase("requestedFuseaction") />
<cfset compile(writer,circuit,fuseaction) />
<cfif structKeyExists(this.pluginPhases,"postFuseaction")>
<cfset n = arrayLen(this.pluginPhases["postFuseaction"]) />
<cfloop from="1" to="#n#" index="i">
<cfset this.pluginPhases["postFuseaction"][i].compile(writer) />
</cfloop>
</cfif>
<cfif needTryOnFuseaction>
<cfset n = arrayLen(this.pluginPhases["fuseactionException"]) />
<cfloop from="1" to="#n#" index="i">
<cfset this.pluginPhases["fuseactionException"][i].compile(writer) />
</cfloop>
<cfset writer.rawPrintln("</cftry>") />
</cfif>
<cfset writer.setPhase("postprocessFuseactions") />
<cfif variables.hasProcess["postprocess"]>
<cfset variables.process["postprocess"].compile(writer) />
</cfif>
<cfif structKeyExists(this.pluginPhases,"postProcess")>
<cfset n = arrayLen(this.pluginPhases["postProcess"]) />
<cfloop from="1" to="#n#" index="i">
<cfset this.pluginPhases["postProcess"][i].compile(writer) />
</cfloop>
</cfif>
<cfif structKeyExists(this.pluginPhases,"processError") and
not request.__fusebox.SuppressPlugins>
<cfset n = arrayLen(this.pluginPhases["processError"]) />
<cfloop from="1" to="#n#" index="i">
<cfset needRethrow = false />
<cfset this.pluginPhases["processError"][i].compile(writer) />
</cfloop>
</cfif>
<cfif needRethrow>
<cfset writer.rawPrintln('<' & 'cfcatch><' & 'cfrethrow><' & '/cfcatch>') />
</cfif>
<cfset writer.rawPrintln("</cftry>") />
<cfset writer.close() />
</cfif>
</cflock>
</cfif>
<cfset result.parsedName = parsedName />
<cfif left(parsedFile,1) is "/">
<cfset result.parsedFile = parsedFile />
<cfelse>
<cfset result.parsedFile = this.getCoreToAppRootPath() & parsedFile />
</cfif>
<cfset result.lockName = fullParsedFile />
<cfreturn result />
</cffunction>
<cffunction name="compile" returntype="void" access="public" output="false" 
hint="I compile a specific fuseaction during a request (such as for a 'do' verb).">
<cfargument name="writer" type="any" required="false" 
hint="I am the parsed file writer object. I am required but it's faster to specify that I am not required." />
<cfargument name="circuit" type="any" required="false" 
hint="I am the circuit name. I am required but it's faster to specify that I am not required." />
<cfargument name="fuseaction" type="any" required="false" 
hint="I am the fuseaction name, within the specified circuit." />
<cfset var c = "" />

<cfif not structKeyExists(this.circuits,arguments.circuit)>
<cfthrow type="fusebox.undefinedCircuit" 
message="undefined Circuit" 
detail="You specified a Circuit of #arguments.circuit# which is not defined." />
</cfif>
<!--- FB5: development-circuit-load only reloads the requested circuit --->
<cfif this.mode is "development-circuit-load">
<!--- FB5: ensure we only reload each circuit once per request --->
<cfif not structKeyExists(request.__fusebox.CircuitsLoaded,arguments.circuit)>
<cfset request.__fusebox.CircuitsLoaded[arguments.circuit] = true />
<cfset this.circuits[arguments.circuit].reload(arguments.writer.getMyFusebox()) />
</cfif>
</cfif>
<cfset c = arguments.writer.setCircuit(arguments.circuit) />
<cfset this.circuits[arguments.circuit]
.compile(arguments.writer,arguments.fuseaction) />
<cfset arguments.writer.setCircuit(c) />
</cffunction>
<cffunction name="handleFuseboxException" returntype="boolean" access="public" output="true" 
hint="I attempt to handle a Fusebox exception by looking for a handler file in the errors/ directory. I return true if I handle the exception, else I return false.">
<cfargument name="cfcatch" type="any" required="true" 
hint="I am the original cfcatch structure from the exception that fusebox5.cfm caught." />
<cfargument name="attributes" type="struct" required="true" 
hint="I am the attributes 'scope'." />
<cfargument name="myFusebox" type="any" required="true" 
hint="I am the myFusebox object." />
<cfargument name="appKey" type="string" required="true" 
hint="I am the application key object." />
<cfset var __handled = false />
<cfset var __type = arguments.cfcatch.type />
<cfset var __ext = "." & this.scriptFileDelimiter />
<cfset var __errorFile = this.errortemplatesPath & __type & __ext />
<cfset var __handlerExists = fileExists(expandFuseboxPath(__errorFile)) />
<cfset var FUSEBOX_APPLICATION_KEY = arguments.appKey />
<cfloop condition="not __handlerExists and len(__type) gt 0">
<cfset __type = listDeleteAt(__type,listLen(__type,"."),".") />
<cfset __errorFile = this.errortemplatesPath & __type & __ext />
<cfset __handlerExists = fileExists(expandFuseboxPath(__errorFile)) />
</cfloop>
<cfif __handlerExists>
<cfif left(__errorFile,1) is "/">
<cfinclude template="#__errorFile#" />
<cfelse>
<cfinclude template="#getCoreToAppRootPath()##__errorFile#" />
</cfif>
<cfset __handled = true />
</cfif>
<cfreturn __handled />
</cffunction>
<cffunction name="getFuseactionFactory" returntype="any" access="public" output="false" 
hint="I return the factory object that makes fuseaction objects for the framework.">
<cfreturn variables.factory />

</cffunction>
<cffunction name="getClassDefinition" returntype="struct" access="public" output="false" 
hint="I return the class declaration for a given class. I throw an exception if the class has no declaration.">
<cfargument name="className" type="string" required="true" 
hint="I am the name of the class whose declaration should be returned." />
<cfreturn this.classes[arguments.className] />

</cffunction>
<cffunction name="getLexiconDefinition" returntype="any" access="public" output="false" 
hint="I return the lexicon definition for a given namespace. I return either the internal Fusebox lexicon or a declared (Fusebox 4.1 style) lexicon.">
<cfargument name="namespace" type="any" required="false" 
hint="I am the namespace of the lexicon whose definition should be returned. I am required but it's faster to specify that I am not required." />
<cfif arguments.namespace is variables.fuseboxLexicon.namespace>
<cfreturn variables.fuseboxLexicon />
<cfelse>
<cfreturn variables.fb41Lexicons[arguments.namespace] />
</cfif>

</cffunction>
<cffunction name="getVersion" returntype="string" access="public" output="false" 
hint="I return the version of this Fusebox 5 object. This is the preferred way to obtain the version in Fusebox 5.">
<cfreturn variables.fuseboxVersion />
</cffunction>
<cffunction name="getAlias" returntype="any" access="public" output="false" 
hint="I return the fake circuit alias for the application.">
<cfreturn "$fusebox" />
</cffunction>
<cffunction name="getApplication" returntype="any" access="public" output="false" 
hint="I return the fusebox application object.">
<cfreturn this />
</cffunction>
<cffunction name="getCustomAttributes" returntype="struct" access="public" output="false" 
hint="I return any custom attributes for the specified namespace prefix.">
<cfargument name="ns" type="string" required="true" 
hint="I am the namespace for which to return custom attributes." />
<cfif structKeyExists(variables.customAttributes,arguments.ns)>
<!--- we structCopy() this so folks can't poke values back into the metadata! --->
<cfreturn structCopy(variables.customAttributes[arguments.ns]) />
<cfelse>
<cfreturn structNew() />
</cfif>
</cffunction>
<cffunction name="getFuseboxFileExtension" returntype="string" access="public" output="false" 
hint="I return the fusebox.xml file extension: either xml or cfm.">
<cfreturn variables.fuseboxFileExtension />
</cffunction>
<cffunction name="deleteParsedFiles" returntype="void" access="private" output="false" 
hint="I delete all the script files in the parsed/ directory.">
<cfset var fileQuery = 0 />
<cfset var parseDir = expandFuseboxPath(this.parsePath) />
<cftry>
<cfdirectory action="list" directory="#parseDir#" 
filter="*.#this.scriptFileDelimiter#" name="fileQuery" />
<cfloop query="fileQuery">
<cffile action="delete" file="#parseDir##fileQuery.name#" />
</cfloop>
<cfcatch />
</cftry>
</cffunction>
<cffunction name="loadCircuits" returntype="void" access="private" output="false" 
hint="I (re)load all the circuits in an application.">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfargument name="myFusebox" type="myFusebox" required="true" 
hint="I am the myFusebox data structure." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/circuits/circuit") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfset var previousCircuits = this.circuits />
<cfset var alias = "" />
<cfset var parent = "" />
<cfset var relative = true />
<cfset var nAttrs = 0 />
<cfset this.circuits = structNew() />
<!--- pass 1: build the circuits --->
<cfloop from="1" to="#n#" index="i">
<cfif not structKeyExists(children[i].xmlAttributes,"alias")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'alias' is required, for a 'circuit' declaration in fusebox.xml." />
</cfif>
<cfif not structKeyExists(children[i].xmlAttributes,"path")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'path' is required, for the declaration of circuit '#children[i].xmlAttributes.alias#' in fusebox.xml." />
</cfif>
<cfif structKeyExists(children[i].xmlAttributes,"parent")>
<cfset parent = children[i].xmlAttributes.parent />
<cfset nAttrs = 3 />
<cfelse>
<cfset parent = "" />
<cfset nAttrs = 2 />
</cfif>
<cfif structKeyExists(children[i].xmlAttributes,"relative")>
<cfif listFind("true,false,yes,no",children[i].xmlAttributes.relative) eq 0>
<cfthrow type="fusebox.badGrammar.invalidAttributeValue"
message="Attribute has invalid value" 
detail="The attribute 'relative' must either be ""true"" or ""false"", for the declaration of circuit '#children[i].xmlAttributes.alias#' in fusebox.xml." />
</cfif>
<cfset relative = children[i].xmlAttributes.relative />
<cfset nAttrs = nAttrs + 1 />
<cfelse>
<cfset relative = true />
</cfif>
<cfif this.strictMode and nAttrs neq structCount(children[i].xmlAttributes)>
<cfthrow type="fusebox.badGrammar.unexpectedAttributes"
message="Unexpected attributes"
detail="Attributes other than 'alias', 'path' and 'parent' were found for the declaration of circuit '#children[i].xmlAttributes.alias#' in fusebox.xml." />
</cfif>
<cfset alias = children[i].xmlAttributes.alias />
<!--- record each circuit load per request - optimization for development-circuit-load mode --->
<cfset request.__fusebox.CircuitsLoaded[alias] = true />
<cfif structKeyExists(previousCircuits,alias) and
children[i].xmlAttributes.path is previousCircuits[alias].getOriginalPath() and
parent is previousCircuits[alias].parent and
relative eq previousCircuits[alias].getOriginalPathIsRelative()>
<!--- old circuit, we can just reload it --->
<cfset this.circuits[alias] = previousCircuits[alias].reload(arguments.myFusebox) />
<cfelse>
<!--- new circuit, we must create it from scratch --->
<cfset this.circuits[alias] =
createObject("component","fuseboxCircuit")
.init(this,alias,children[i].xmlAttributes.path,parent,arguments.myFusebox,relative) />
</cfif>
</cfloop>
<!--- pass 2: build the circuit trace for each circuit --->
<cfloop collection="#this.circuits#" item="i">
<cfset this.circuits[i].buildCircuitTrace() />
</cfloop>
</cffunction>
<cffunction name="loadLexicons" returntype="void" access="private" output="false" 
hint="I load any lexicon declarations (both the Fusebox 4.1 style lexicon declarations and the Fusebox 5 style namespace declarations).">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/lexicons/lexicon") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfset var aLex = "" />
<cfset var attributes = arguments.fbCode.xmlRoot.xmlAttributes />
<cfset var attr = "" />
<cfset var ns = "" />
<cfif n gt 0 and this.strictMode>
<cfthrow type="fusebox.badGrammar.deprecated" 
message="Deprecated feature"
detail="Using the 'lexicon' declaration in fusebox.xml was deprecated in Fusebox 5." />
</cfif>

<!--- load the legacy FB41 lexicons from the XML --->
<cfset variables.fb41Lexicons = structNew() />
<cfloop from="1" to="#n#" index="i">
<cfset aLex = structNew() />
<cfset aLex.namespace = children[i].xmlAttributes.namespace />
<cfset aLex.path = normalizePartialPath(children[i].xmlAttributes.path) />
<!--- FB41 lexicons are deprecated so we don't support absolute / mapped paths: --->
<cfset aLex.path = getCoreToAppRootPath() & this.lexiconPath & aLex.path />
<cfset variables.fb41Lexicons[children[i].xmlAttributes.namespace] = aLex />
</cfloop>
<!--- now load the new FB5 implicit lexicons from the <fusebox> tag --->
<cfset variables.lexicons = structNew() />
<!--- pass 1: pull out any namespace declarations --->
<cfloop collection="#attributes#" item="attr">
<cfif len(attr) gt 6 and left(attr,6) is "xmlns:">
<!--- found a namespace declaration, pull it out: --->
<cfset aLex = structNew() />
<cfset aLex.namespace = listLast(attr,":") />
<cfif aLex.namespace is variables.fuseboxLexicon.namespace>
<cfthrow type="fusebox.badGrammar.reservedName"
message="Attempt to use reserved namespace" 
detail="You have attempted to declare a namespace '#aLex.namespace#' (in fusebox.xml) which is reserved by the Fusebox framework." />
</cfif>
<cfset attributes[attr] = normalizePartialPath(attributes[attr]) />
<cfif left(attributes[attr],1) is "/">
<!--- assume mapped / root-relative path --->
<cfset aLex.path = attributes[attr] />
<cfelseif left(this.lexiconPath,1) is "/">
<!--- assume mapped / root-relative path --->
<cfset aLex.path = this.lexiconPath & attributes[attr] />
<cfelse>
<!--- relative paths --->
<cfset aLex.path = getCoreToAppRootPath() & 
this.lexiconPath & attributes[attr] />
</cfif>
<cfset variables.lexicons[aLex.namespace] = aLex />
<cfset variables.customAttributes[aLex.namespace] = structNew() />
</cfif>
</cfloop>
<!--- pass 2: pull out any custom attributes --->
<cfloop collection="#attributes#" item="attr">
<cfif listLen(attr,":") eq 2>
<!--- looks like a custom attribute: --->
<cfset ns = listFirst(attr,":") />
<cfif ns is "xmlns">
<!--- special case - need to ignore xmlns:foo="bar" --->
<cfelseif structKeyExists(variables.customAttributes,ns)>
<cfset variables.customAttributes[ns][listLast(attr,":")] = attributes[attr] />
<cfelse>
<cfthrow type="fusebox.badGrammar.undeclaredNamespace" 
message="Undeclared lexicon namespace" 
detail="The lexicon prefix '#ns#' was found on a custom attribute in the <fusebox> tag but no such lexicon namespace has been declared." />
</cfif>
<cfelseif this.strictMode>
<cfthrow type="fusebox.badGrammar.unexpectedAttributes"
message="Unexpected attributes"
detail="Unexpected attributes were found in the 'fusebox' tag in fusebox.xml." />
</cfif>
</cfloop>
</cffunction>
<cffunction name="loadClasses" returntype="void" access="private" output="false" 
hint="I load any class declarations, including custom attributes (based on Fusebox 5 namespace declarations).">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/classes/class") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfset var attribs = 0 />
<cfset var attr = "" />
<cfset var ns = "" />
<cfset var customAttribs = 0 />
<cfset var constructor = "" />
<cfset var type = "" />
<cfset var nAttrs = 0 />
<cfset this.classes = structNew() />
<cfloop from="1" to="#n#" index="i">
<cfset attribs = children[i].xmlAttributes />

<cfif not structKeyExists(attribs,"alias")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'alias' is required, for a 'class' declaration in fusebox.xml." />
</cfif>
<cfif not structKeyExists(attribs,"classpath")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'classpath' is required, for a 'class' declaration in fusebox.xml." />
</cfif>
<cfif structKeyExists(attribs,"constructor")>
<cfset constructor = attribs.constructor />
<cfset nAttrs = 3 />
<cfelse>
<cfset constructor = "" />
<cfset nAttrs = 2 />
</cfif>
<!--- FB5: allow sensible default for type --->
<cfif structKeyExists(attribs,"type")>
<cfset type = attribs.type />
<cfset nAttrs = nAttrs + 1 />
<cfelse>
<cfset type = "component" />
</cfif>

<!--- scan for custom attributes --->
<cfset customAttribs = structNew() />
<cfloop collection="#attribs#" item="attr">
<cfif listLen(attr,":") eq 2>
<cfset nAttrs = nAttrs + 1 />
<!--- looks like a custom attribute: --->
<cfset ns = listFirst(attr,":") />
<cfif structKeyExists(variables.customAttributes,ns)>
<cfset customAttribs[ns][listLast(attr,":")] = attribs[attr] />
<cfelse>
<cfthrow type="fusebox.badGrammar.undeclaredNamespace" 
message="Undeclared lexicon namespace" 
detail="The lexicon prefix '#ns#' was found on a custom attribute in the <class> tag but no such lexicon namespace has been declared." />
</cfif>
</cfif>
</cfloop>
<cfif this.strictMode and structCount(attribs) neq nAttrs>
<cfthrow type="fusebox.badGrammar.unexpectedAttributes"
message="Unexpected attributes"
detail="Unexpected attributes were found in the '#attribs.alias#' class declaration in fusebox.xml." />
</cfif>

<cfset this.classes[attribs.alias] = createObject("component","fuseboxClassDefinition")
.init(type,attribs.classpath,constructor,customAttribs) />
</cfloop>
</cffunction>
<cffunction name="loadPlugins" returntype="void" access="private" output="false" 
hint="I load any plugin declarations.">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<!--- TODO: this xpath means that we can't spot bad phase declarations: --->
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/plugins/phase") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfset var j = 0 />
<cfset var nn = 0 />
<cfset var phase = "" />
<cfset var plugin = 0 />
<cfset this.plugins = structNew() />
<cfset this.pluginphases = structNew() />
<cfloop from="1" to="#n#" index="i">
<cfif not structKeyExists(children[i].xmlAttributes,"name")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'name' is required, for a 'plugin' declaration in fusebox.xml." />
</cfif>
<cfset phase = children[i].xmlAttributes.name />
<cfif this.strictMode and structCount(children[i].xmlAttributes) neq 1>
<cfthrow type="fusebox.badGrammar.unexpectedAttributes"
message="Unexpected attributes"
detail="Unexpected attributes were found in the '#phase#' phase declaration in fusebox.xml." />
</cfif>
<cfset nn = arrayLen(children[i].xmlChildren) />
<cfloop from="1" to="#nn#" index="j">
<cfset plugin = createObject("component","fuseboxPlugin").init(phase,children[i].xmlChildren[j],this,variables.lexicons) />
<cfset this.plugins[plugin.getName()][phase] = plugin />
<cfif not structKeyExists(this.pluginphases,phase)>
<cfset this.pluginphases[phase] = arrayNew(1) />
</cfif>
<cfset arrayAppend(this.pluginphases[phase],plugin) />
</cfloop>
</cfloop>
</cffunction>
<cffunction name="loadParameters" returntype="void" access="private" output="false" 
hint="I load any parameter declarations (and ensure none of them can overwrite public methods in this object!).">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/parameters/parameter") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfset var p = "" />
<cfloop from="1" to="#n#" index="i">
<cfif not structKeyExists(children[i].xmlAttributes,"name")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'name' is required, for a 'parameter' declaration in fusebox.xml." />
</cfif>
<cfset p = children[i].xmlAttributes.name />
<cfif not structKeyExists(children[i].xmlAttributes,"value")>
<cfthrow type="fusebox.badGrammar.requiredAttributeMissing"
message="Required attribute is missing"
detail="The attribute 'value' is required, for the '#p#' parameter declaration in fusebox.xml." />
</cfif>
<cfif this.strictMode and structCount(children[i].xmlAttributes) neq 2>
<cfthrow type="fusebox.badGrammar.unexpectedAttributes"
message="Unexpected attributes"
detail="Unexpected attributes were found in the '#p#' parameter declaration in fusebox.xml." />
</cfif>
<cfif structKeyExists(this,p) and isCustomFunction(this[p])>
<cfthrow type="fusebox.badGrammar.reservedName"
message="Attempt to use reserved parameter name"
detail="You have attempted to set a parameter called '#p#' which is reserved by the Fusebox framework." />
<cfelse>
<cfset this[p] = children[i].xmlAttributes.value />
</cfif>
</cfloop>
<!---
if the user overrides certain path variables, we need to normalize them:
- this.parsePath (reset parseRootPath)
- this.pluginsPath
- this.lexiconPath
- this.errortemplatesPath
normalizing means changing all \ to / and appending / if not present
--->
<cfset this.parsePath = normalizePartialPath(this.parsePath) />
<cfset this.parseRootPath = relativePath(expandFuseboxPath(this.parsePath),getApplicationRoot()) />
<cfset this.pluginsPath = normalizePartialPath(this.pluginsPath) />
<cfset this.lexiconPath = normalizePartialPath(this.lexiconPath) />
<cfset this.errortemplatesPath = normalizePartialPath(this.errortemplatesPath) />
<!--- Fusebox 5.1: default this.myself: --->
<cfif not structKeyExists(this,"myself")>
<cfset this.myself = getDefaultMyself(this.self) />
</cfif>
</cffunction>
<cffunction name="getDefaultMyself" returntype="string" access="public" output="false" 
hint="I return the default value of 'myself' for a given value of 'self'.">
<cfargument name="self" type="string" required="true" 
hint="I am the value of 'self' to use." />
<cfreturn arguments.self & this.queryStringStart & this.fuseactionVariable & this.queryStringEqual />
</cffunction>
<cffunction name="loadGlobalProcess" returntype="void" access="private" output="false" 
hint="I load the globalfuseaction for the specified processing phase.">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfargument name="processPhase" type="string" required="true" 
hint="I am the name of the processing phase to load (appinit, preprocess or postprocess)." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/globalfuseactions/#arguments.processPhase#") />
<cfset var n = arrayLen(children) />
<cfif n eq 0>
<cfset variables.hasProcess[arguments.processPhase] = false />
<cfelseif n eq 1>
<cfset variables.hasProcess[arguments.processPhase] = true />
<cfset variables.process[arguments.processPhase] =
createObject("component","fuseboxAction")
.init(this,
"$globalfuseaction/#arguments.processPhase#",
"internal",
children[1].xmlChildren,true) />
<cfelse>
<cfthrow type="fusebox.badGrammar.nonUniqueDeclaration" 
message="Declaration was not unique" 
detail="More than one &lt;#arguments.process#&gt; declaration was found in the &lt;globalfuseactions&gt; section in fusebox.xml." />
</cfif>
</cffunction>
<cffunction name="loadGlobalPreAndPostProcess" returntype="void" access="private" output="false" 
hint="I load any globalfuseaction declarations.">
<cfargument name="fbCode" type="any" required="true" 
hint="I am the parsed XML representation of the fusebox.xml file." />
<cfset var children = xmlSearch(arguments.fbCode,"/fusebox/globalfuseactions/*") />
<cfset var i = 0 />
<cfset var n = arrayLen(children) />
<cfloop index="i" from="1" to="#n#">
<cfif listFind("appinit,preprocess,postprocess",children[i].xmlName) eq 0>
<cfthrow type="fusebox.badGrammar.illegalDeclaration"
message="Illegal declaration"
detail="The tag '#children[i].xmlName#' was found where 'appinit', 'preprocess' or 'postprocess' was expected in the &lt;globalfuseactions&gt; section in fusebox.xml." />
</cfif>
</cfloop>

<cfset variables.hasProcess = structNew() />
<cfset variables.process = structNew() />
<cfset loadGlobalProcess(arguments.fbCode,"appinit") />
<cfset loadGlobalProcess(arguments.fbCode,"preprocess") />
<cfset loadGlobalProcess(arguments.fbCode,"postprocess") />
</cffunction>
<cffunction name="relativePath" returntype="string" access="public" output="false" 
hint="I compute the relative path from one file system location to another.">
<cfargument name="from" type="string" required="true" 
hint="I am the full pathname from which the relative path should be computed." />
<cfargument name="to" type="string" required="true" 
hint="I am the full pathname to which the relative path should be computed." />
<cfset var relative = "" />
<cfset var fromFirst = listFirst(arguments.from,"/") />
<cfset var fromRest = arguments.from />
<cfset var toFirst = listFirst(arguments.to,"/") />
<cfset var toRest = arguments.to />
<cfset var needSlash = false />
<!--- trap special case first --->
<cfif arguments.from is arguments.to>
<cfreturn "" />
</cfif>
<!--- walk down the common part of the paths --->
<cfloop condition="fromFirst is toFirst">
<cfset needSlash = true />
<cfset fromRest = listRest(fromRest,"/") />
<cfset toRest = listRest(toRest,"/") />
<cfset fromFirst = listFirst(fromRest,"/") />
<cfset toFirst = listFirst(toRest,"/") />
</cfloop>
<!--- at this point the paths differ --->
<cfif not needSlash>
<!--- the paths differed from the top so we need to strip the leading / --->
<cfset toRest = right(toRest,len(toRest)-1) />
</cfif>
<cfset relative = repeatString("../",listLen(fromRest,"/")) & toRest />
<!---
ensure the trailing / is present - strictly speaking this is a bug fix for Railo
but it's probably a good practice anyway
--->
<cfif right(relative,1) is not "/">
<cfset relative = relative & "/" />
</cfif>

<cfreturn relative />
</cffunction>
<cffunction name="getCanonicalPath" returntype="string" access="public" output="false" 
hint="I return a canonical file path (with all /../ sections resolved).">
<cfargument name="path" type="string" required="true" 
hint="I am the path to resolve." />
<cfset var resolvedPath = arguments.path />
<cfset var leadingSlash = left(resolvedPath,1) is "/" />
<cfset var trailingSlash = right(resolvedPath,1) is "/" />
<cfset var segment = ""/>
<cfset var j = 1 />
<cfset var n = 0 />
<cfset var pathParts = arrayNew(1) />
<cfset var delimiter = "" />

<!--- remove pairs of directory/../ --->
<cfloop list="#resolvedPath#" delimiters="/" index="segment">
<cfif segment is ".">
<!--- just ignore this --->
<cfelseif segment is ":">
<!--- just ignore this --->
<cfelseif segment is "..">
<cfif j gt 1 and pathParts[j-1] is not "..">
<cfset j = j - 1 />
<cfelse>
<cfset pathParts[j] = segment />
<cfset j = j + 1 />
</cfif>
<cfelse>
<cfset pathParts[j] = segment />
<cfset j = j + 1 />
</cfif>
</cfloop>
<!--- rebuild the path --->
<cfif leadingSlash>
<cfset delimiter = "/" />
</cfif>
<cfset resolvedPath = "" />
<cfset n = j - 1 />
<cfloop from="1" to="#n#" index="j">
<cfset resolvedPath = resolvedPath & delimiter & pathParts[j] />
<cfset delimiter = "/" />
</cfloop>
<cfif trailingSlash>
<cfset resolvedPath = resolvedPath & "/" />
</cfif>

<cfreturn resolvedPath />
</cffunction>
<cffunction name="normalizePartialPath" returntype="string" access="public" output="false" 
hint="I return a normalized file path (that has / instead of \ and ends with /).">
<cfargument name="partialPath" type="string" required="true" 
hint="I am the path to normalize." />
<cfset var unixPath = replace(arguments.partialPath,"\","/","all") />
<cfif right(unixPath,1) is not "/">
<cfset unixPath = unixPath & "/" />
</cfif>
<cfreturn unixPath />
</cffunction>
</cfcomponent>

Michael Forell

unread,
Sep 17, 2014, 9:44:41 AM9/17/14
to ra...@googlegroups.com
Hi Bill, 

thank you for posting for fuseboxApplication.cfc. The version I have and patched is a newer one. Keep in mind, that fusebox is quite old and not actively maintained. I'm just running Fusebox for an inhouse legacy web-app, which is still in use. Maybe you can try updating Fusebox? This is the latest version (from 2008) http://fusebox.org/index.cfm/linkservid/9720D92D-9DD2-F3F8-9FE9FC7EA06408FF/showMeta/0/ 
In the application folder should be a fusebox.xml.cfm. There are a set of parameters and one parameter has a name="mode". If I remember correctly this has to do something with parsing your cfml-files. For me it is <parameter name="mode" value="development-full-load" />. 


Regards
Michael 

Bill Foresman

unread,
Sep 17, 2014, 9:48:28 AM9/17/14
to ra...@googlegroups.com
I've seen that line of code and this is set to production.


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 17, 2014, 9:51:46 AM9/17/14
to ra...@googlegroups.com
Ok, try setting it to development-full-load

Bill Foresman

unread,
Sep 17, 2014, 9:58:18 AM9/17/14
to ra...@googlegroups.com
To upgrade do I just load these into the root of the site?


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 17, 2014, 9:59:56 AM9/17/14
to ra...@googlegroups.com
Replace the existing one, but keep a backup. 

Bill Foresman

unread,
Sep 17, 2014, 10:12:36 AM9/17/14
to ra...@googlegroups.com
New error:

Railo 4.2.1.007 Error (application)
Messagesource file [C:\www\domain.com\plugins\error.cfm] is not a file
StacktraceThe Error Occurred in
/Application.cfc: line 310 
308: <cfoutput>#variables.myFusebox.renderTrace()#</cfoutput>
309: </cfif>
310: <cfthrow object="#caughtException#" />
311: </cfif>
312: 

Java Stacktracesource file [C:\www\domain.com\plugins\error.cfm] is not a file 
  at railo.runtime.tag.Throw.toPageException(Throw.java:144):144 
  at railo.runtime.tag.Throw._doStartTag(Throw.java:188):188 
  at railo.runtime.tag.Throw.doStartTag(Throw.java:181):181 
  at application_cfc$cf.udfCall1(/Application.cfc:310):310 
  at application_cfc$cf.udfCall(/Application.cfc):-1 

  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.listener.ModernAppListener.call(ModernAppListener.java:388):388 
  at railo.runtime.listener.ModernAppListener.onError(ModernAppListener.java:375):375 
  at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2226):2226 

  at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2182):2182 
  at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:332):332 
  at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:29):29 
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727):727 
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303):303 
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208):208 
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52):52 
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241):241 
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208):208 
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220):220 
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122):122 
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501):501 
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171):171 
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102):102 
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116):116 
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408):408 
  at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193):193 
  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607):607 
  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314):314 
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145):1145 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615):615 
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61):61 
  at java.lang.Thread.run(Thread.java:745):745 
 
Timestamp9/17/14 10:11:40 AM EDT



For more options, visit https://groups.google.com/d/optout.

Bill Foresman

unread,
Sep 17, 2014, 10:22:42 AM9/17/14
to ra...@googlegroups.com
Ok, I realized I made a mistake and replaced the core files with the zip rather than dumping them in the root. It's looking for plugins in the wrong path.

Railo 4.2.1.007 Error (application)
Messagesource file [C:\www\domain.com\plugins\error.cfm] is not a file
StacktraceThe Error Occurred in
/core/fusebox/fuseboxPlugin.cfc: line 180 
178: <cffile action="read" file="#variables.fuseboxApplication.getApplicationRoot()##this.path##variables.template#"
179: variable="file"
180: charset="#variables.fuseboxApplication.characterEncoding#" />
181: </cfif>
182: <cfset arguments.writer.rawPrintln(file) />

called from /core/fusebox/fuseboxApplication.cfc: line 550 
called from /core/fusebox/Application.cfc: line 206 
called from /core/fusebox/fusebox5.cfm: line 46 
Java Stacktrace
source file [C:\www\domain.com\plugins\error.cfm] is not a file 
  at railo.runtime.tag.FileTag.checkFile(FileTag.java:1098):1098 
  at railo.runtime.tag.FileTag.actionRead(FileTag.java:575):575 
  at railo.runtime.tag.FileTag.doStartTag(FileTag.java:345):345 
  at core.fusebox.fuseboxplugin_cfc$cf.udfCall(/core/fusebox/fuseboxPlugin.cfc:180):180 

  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fuseboxapplication_cfc$cf.udfCall1(/core/fusebox/fuseboxApplication.cfc:550):550 

  at core.fusebox.fuseboxapplication_cfc$cf.udfCall(/core/fusebox/fuseboxApplication.cfc):-1 
  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.application_cfc$cf.udfCall1(/core/fusebox/Application.cfc:206):206 
  at core.fusebox.application_cfc$cf.udfCall(/core/fusebox/Application.cfc):-1 

  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fusebox5_cfm$cf.call(/core/fusebox/fusebox5.cfm:46):46 
Timestamp9/17/14 10:21:03 AM EDT


For more options, visit https://groups.google.com/d/optout.

Bill Foresman

unread,
Sep 17, 2014, 11:14:43 AM9/17/14
to ra...@googlegroups.com
Latest error:

Railo 4.2.1.007 Error (fusebox.missingParsedFile)
MessageParsed File or Directory not found.
DetailAttempting to execute the parsed file 'public.home.cfm' threw an error. This can occur if the parsed file does not exist in the parsed directory or if the parsed directory itself is missing.
StacktraceThe Error Occurred in
/core/fusebox/Application.cfc: line 234 
232: <cfthrow type="fusebox.missingParsedFile" 
233: message="Parsed File or Directory not found."
234: detail="Attempting to execute the parsed file '#_parsedFileData.parsedName#' threw an error. This can occur if the parsed file does not exist in the parsed directory or if the parsed directory itself is missing." />
235: <cfelse>
236: <cfrethrow />

called from /core/fusebox/fusebox5.cfm: line 57 
55: </cftry><cfprocessingdirective suppresswhitespace="true">
56: <cftry>
57: <cfset __fuseboxAppCfc.onRequest(CGI.SCRIPT_NAME) />
58: <cfset __fuseboxAppCfc.onRequestEnd(CGI.SCRIPT_NAME) />
59: <cfcatch type="any">

7: </cfif>
8: 
9: <cfinclude template="core/fusebox/fusebox5.cfm" />

Java StacktraceParsed File or Directory not found. 
  at core.fusebox.application_cfc$cf.udfCall1(/core/fusebox/Application.cfc:234):234 
  at core.fusebox.application_cfc$cf.udfCall(/core/fusebox/Application.cfc):-1 

  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fusebox5_cfm$cf.call(/core/fusebox/fusebox5.cfm:57):57 

For more options, visit https://groups.google.com/d/optout.

Bill Foresman

unread,
Sep 17, 2014, 2:26:11 PM9/17/14
to ra...@googlegroups.com
Any ideas?


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 18, 2014, 7:14:36 AM9/18/14
to ra...@googlegroups.com
Hi Bill, 

as I'm sitting in Europe, I already was offline yesterday.

It is getting quite difficult for me to debug your application with so few information. 
Do the parsed file exist or not? If they exists, when were they modified?
If not: When you installed Railo, which installer did you use? Maybe the user that is running Railo, does not have write permissions to your parsed folder? 
Are you running the application in "development-full-load"?

Keep in mind, that fusebox is not actively maintained. I just did one bugfix in my very small environment. 
How old is your application, who initially wrote the code?

Regards
Michael 

Bill Foresman

unread,
Sep 18, 2014, 8:17:16 AM9/18/14
to ra...@googlegroups.com
Yes, they exist and were not modified from CF9. Railo was installed as administrator and fusebox is running as developer full load. I very much understand fusebox is old and I'm just trying to get this running on Railo as it runs fine on CF9 which we've moved away from.

Thanks much!


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 18, 2014, 8:36:40 AM9/18/14
to ra...@googlegroups.com
If they exist, I'm confused, why you get the error you posted yesterday:
Attempting to execute the parsed file 'public.home.cfm' threw an error. This can occur if the parsed file does not exist in the parsed directory or if the parsed directory itself is missing.
There seems to be something mixed up with the directory structure after you updated to the latest Fusebox-framework. Did you remove the old framework files before updating to the new one? 

Bill Foresman

unread,
Sep 18, 2014, 9:08:51 AM9/18/14
to ra...@googlegroups.com
yes, this is a cluster at this point. I've restored the original files and am back to the missing include error. To update to the latest fusebox I need to extract them to the /core/fusebox dir, right?


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 18, 2014, 10:47:19 AM9/18/14
to ra...@googlegroups.com
Well. I think so, yes. 

Bill Foresman

unread,
Sep 18, 2014, 12:01:35 PM9/18/14
to ra...@googlegroups.com
after doing that I get this:

Railo 4.2.1.007 Error (application)
Messagesource file [C:\www\domain.com\plugins\error.cfm] is not a file
StacktraceThe Error Occurred in

/core/fusebox/fuseboxPlugin.cfc: line 180 
178: <cffile action="read" file="#variables.fuseboxApplication.getApplicationRoot()##this.path##variables.template#"
179: variable="file"
180: charset="#variables.fuseboxApplication.characterEncoding#" />
181: </cfif>
182: <cfset arguments.writer.rawPrintln(file) />

called from /core/fusebox/fuseboxApplication.cfc: line 550 
called from /core/fusebox/Application.cfc: line 206 
called from /core/fusebox/fusebox5.cfm: line 46 
Java Stacktrace
source file [C:\www\domain.com\plugins\error.cfm] is not a file 
  at railo.runtime.tag.FileTag.checkFile(FileTag.java:1098):1098 
  at railo.runtime.tag.FileTag.actionRead(FileTag.java:575):575 
  at railo.runtime.tag.FileTag.doStartTag(FileTag.java:345):345 
  at core.fusebox.fuseboxplugin_cfc$cf.udfCall(/core/fusebox/fuseboxPlugin.cfc:180):180 
  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fuseboxapplication_cfc$cf.udfCall1(/core/fusebox/fuseboxApplication.cfc:550):550 

  at core.fusebox.fuseboxapplication_cfc$cf.udfCall(/core/fusebox/fuseboxApplication.cfc):-1 
  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.application_cfc$cf.udfCall1(/core/fusebox/Application.cfc:206):206 
  at core.fusebox.application_cfc$cf.udfCall(/core/fusebox/Application.cfc):-1 

  at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:93):93 
  at railo.runtime.type.UDFImpl._call(UDFImpl.java:307):307 
  at railo.runtime.type.UDFImpl.call(UDFImpl.java:208):208 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:588):588 
  at railo.runtime.ComponentImpl._call(ComponentImpl.java:506):506 
  at railo.runtime.ComponentImpl.call(ComponentImpl.java:1738):1738 
  at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:724):724 
  at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1550):1550 
  at core.fusebox.fusebox5_cfm$cf.call(/core/fusebox/fusebox5.cfm:46):46 
Timestamp9/18/14 11:59:42 AM EDT


For more options, visit https://groups.google.com/d/optout.

Michael Forell

unread,
Sep 19, 2014, 10:02:19 AM9/19/14
to ra...@googlegroups.com
Hi Bill, 

I'm really, really sorry, but I don't know how to help you. 
Is C:\www\domain.com\plugins\error.cfm a file or not? Did you have a look in it? 

Where do you place Fusebox?
Where is your web-application located?
Did you insert my first patch, after upgrading to the latest fuesbox version?
Is the developer of the application still available for you?

Regards
Michael 

Bill Foresman

unread,
Sep 19, 2014, 2:23:32 PM9/19/14
to ra...@googlegroups.com
/plugins is not in the root but rather in the /core dir so it's looking in the wrong locale. The fusebox dir is also in /core

Yes, your update was added.

The developer has long since gone.


For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages