Fusebox 5.1 Release Notes

This page covers the tickets closed as part of the Fusebox 5.1 release. Tickets are listed in two groups: bug fixes and enhancements. Each ticket is listed in order with a short summary of what has changed. For more detail, you can read about the Fusebox 5.1 enhancements (a work in progress right now).

Bugs fixed in Fusebox 5.1

TicketDescriptionNotes
#99cfdirectory date last modified in O/S sensitive<cfdirectory> returns date/time last modified to one minute resolution on some systems and this caused changes in circuit XML files to be ignored. Changed the code that retrieves the date/time last modified to use Java code so that it is guaranteed to provide seconds. Note that this means Fusebox 5.1 will not run on BlueDragon.NET 6.2.1 (due to a bug - fixed in BlueDragon.NET 7).
#138Parse File Lock TimeoutThe timeouts used on various <cflock> tags inside the framework were not consistent which could cause locks to timeout in certain circumstances when waiting for each other. The timeout values are all consistent now which should eliminate (or at least reduce) instances of this timeout problem.
#140attributes scope not available in exception handlerYou could not refer to the attributes scope in an error template file in Fusebox 5. This has been fixed in Fusebox 5.1.
#150Extra local vars in fuseboxCircuitThe unused variables have been removed.
#153Element fusebox is undefined after renaming applicationIf you renamed the ColdFusion application (in your <cfapplication> tag), Fusebox sometimes got confused and failed to recover properly. This has been fixed in Fusebox 5.1.
#155Fuseaction permissions is handled incorrectly.In Fusebox 5, if you had permissions on some <fuseaction> tags, they incorrectly cascaded onto subsequent <fuseaction> tags that had no permissions. The workaround was to explicitly specify permissions="". In Fusebox 5.1, permissions are correctly handled on <fuseaction>s.
#157Expand Boolean literals that are acceptableFusebox 4.1 allowed "yes" and "no" for Boolean attributes, as well as "true" and "false". Fusebox 5 only allowed "true" and "false". Fusebox 5.1 now allows "yes" and "no", restoring compatibility.
#159DTD says fusebox.xml items are compulsoryThe DTD has been updated so that optional items are indicated correctly.
#160Sequence of conditional logic in <IF> bvlockFusebox 5 did not allow <false> to precede <true> inside an <if> verb. Fusebox 5.1 allows either order, just like Fusebox 4.1 did.
#162Include bugIf you used a variable for the include file name in an optional <include> verb, Fusebox 5 sometimes did not handle the absence of the included file correctly. This has been fixed in Fusebox 5.1.
#163Paths with . in the folder names fail when using relative pathsIn Fusebox 5, paths that included both /../ and directory names with a . in them were not resolved correctly in all situations. Fusebox 5.1 reverts pretty much to the old canonical path logic from Fusebox 4.1 to fix this bug.
#166development-full-load not working on other LocalesDuplicate of #99 above.
#167Problem with development-full-loadDuplicate of #99 above.
#174Fusebox.dtd requires all top level items for validationFixed a number of errors in the DTDs
#176getValue() Should Only Return Specified KeyFixed newly added fuseboxEvent object
#177isDefined issue with fusebox 5 in circuitActually an error in <if> handling after fixing #160 above
#185Pre/postfuseaction callsuper="true" is ignoredThis was a bug introduced during implementation of #139 below
#186<postfuseaction callsuper="true" /> bugDuplicate of #185 above

Enhancements added in Fusebox 5.1

TicketDescriptionNotes
#54FUSEBOX_CALLER_PATH for chained includesIf you try to include a Fusebox application's index.cfm from a file in another directory, Fusebox 5 miscalculated the location of the application root and applications failed to run. This optional variable can now be set in the application's index.cfm file to override the default calculation and force Fusebox 5.1 to recognize a specific application root.
#73Plugins ought to have custom attributes tooThe <plugin> declaration can now have custom XML attributes, indicated by XML namespace declarations on the enclosing <fusebox> tag. The fuseboxPlugin object now has a getCustomAttributes(namespace) method that returns custom attributes for the specified namespace, just as Fusebox 5 provided for classes and fuseactions.
#89Add javascript support for <relocate/> tagtype="javascript" causes the <relocate> verb to generate JavaScript? that will cause a redirect in the browser. See also #128 below.
#95Global Lexicons/Errortemplates/pluginsFusebox 5.1 allows easier sharing of common application elements between multiple Fusebox applications. You can override the default location of lexicons, error templates and plugins (and, in fact, the parsed files) by specifying <parameter> tags in the fusebox.xml file. You can specify relative paths (relative to the application root) or absolute paths which will be treated as relative to your ColdFusion webroot or resolved via ColdFusion mappings. An individual lexicon's location can be overridden by specifying an absolute path in the XML namespace declaration. An individual plugin's location can be overridden by specifying an absolute path in the optional path attribute in the <plugin> declaration.
#128Add support for 301 Moved Permanently to relocate verbtype="moved" causes the <relocate> verb to generate a status code of 301 and a status header of Moved Permanently along with a Location header to force a redirect. See also #89 above.
#135Strict mode check for both .xml and .xml.cfm filesIf you have both fusebox.xml and fusebox.xml.cfm, Fusebox silently selects the .xml.cfm version. Similarly with circuit.xml and circuit.xml.cfm. In Fusebox 5.1, enabling strict mode will cause the presence of both versions of a given file to be treated as an error.
#139Add absolute path support to a circuit definition in the fusebox.xml fileThe <circuit> declaration in the fusebox.xml file now allows a relative="true|false" attribute to specify whether the path attribute specifies a relative path (relative to the application root) or an absolute path that is relative to the ColdFusion webroot or is resolved via a ColdFusion mapping. This allows circuits to be moved outside of the application root more easily, as well as allowing multiple Fusebox applications to share circuits more easily.
#141change to xfa verb processing to support dots in xfa valueIn Fusebox 5 and earlier, the <xfa> value attribute could include URL parameters and those in turn could include dots (.) in the parameter names. This confused the logic that tried to add the default circuit name to <xfa> values that were not of the form circuitname.fuseactionname. In order not to break any programs relying on that bug, Fusebox 5.1 does not change the default behavior but when strict mode is enabled, URL parameters are no longer allowed in an <xfa> value. In addition, <xfa> now allows <parameter> child tags to specify URL parameters (name/value pairs).
#158Better error when phase contains non-plugin declarationsThe <phase> declaration in fusebox.xml now only allows <plugin> declarations with a clearer error message if you tried to put regular <fuseaction> verbs in a <phase> declaration.
#164Provide an "event" object to encapsulate attributes scope so that CFC usage becomes easierFor folks who like an object-oriented style, a new variable, "event", exists alongside the "attributes" scope variable. The "event" variable is an object that provides "hasValue(key)", "getValue(key)" and "setValue(key,value)" methods (just like the event object in Model-Glue).
#165Add build.xml to make deploying skeleton easierAn ant build script has been added to the skeleton application. If you change the target property to match your own webroot, the script will copy the skeleton files into your webroot as "skeleton". If you use CFEclipse, this means that setting up new Fusebox applications becomes a matter of a few mouse clicks.
#168Add sample lexicons for ColdSpring and ReactorSample lexicons - provided by Nathan Strutz and Qasim Rasheed - have been added to the skeleton application that make it easy to use ColdSpring and Reactor with your Fusebox applications. See the instructions inside these files for more details.
#180<if> does not validate childrenNow it checks that <if> only contains <true> and <false> children
#184Add xfa= attribute to <relocate>Instead of specifying a URL, you can specify just an XFA name. Also took this opportunity to add a number of new fusebox.xml parameters to control how URLs are constructed and provided default 'self' and 'myself' values

Other miscellaneous tickets closed in Fusebox 5.1

TicketDescriptionNotes
#12<do> not in verb parent contextClosed, won't fix. Not worth the effort.
#30Parsed file indentation has never workedClosed, won't fix. Not worth the effort - or the performance trade off.
#48Replace cfparam with cfif structKeyExists where appropriateClosed, won't fix. Not worth the effort since this is really just a stylistic issue.
#51Use structKeyExists() instead of isDefined() in parsed filesClosed, won't fix. Not worth the effort since this is really just a stylistic issue (and might introduce a performance overhead).
#74Whitespace suppression on include verbClosed, invalid. Content variables provide the same functionality that was requested in this ticket (it wasn't really about whitespace).
#169Change copyright to TeraTechTeraTech, Inc. own the Fusebox name and code now. The source code license has also been changed from the old "Fusebox License" (a modified Apache Software License 1.0) to a standard Apache Software License 2.0 which should be more acceptable to commercial organizations.
#170Create the public 5.1 Beta'nuff said!
#173Fusebox 5.1 not compatible with BlueDragon 6.2.1 Server FREE EditionUpdated the readme and release notes to show BlueDragon 6.2.1 is not supported - BlueDragon 7.0 is required