Table of Contents
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
| Ticket | Description | Notes |
| #99 | cfdirectory 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). |
| #138 | Parse File Lock Timeout | The 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. |
| #140 | attributes scope not available in exception handler | You could not refer to the attributes scope in an error template file in Fusebox 5. This has been fixed in Fusebox 5.1. |
| #150 | Extra local vars in fuseboxCircuit | The unused variables have been removed. |
| #153 | Element fusebox is undefined after renaming application | If 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. |
| #155 | Fuseaction 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. |
| #157 | Expand Boolean literals that are acceptable | Fusebox 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. |
| #159 | DTD says fusebox.xml items are compulsory | The DTD has been updated so that optional items are indicated correctly. |
| #160 | Sequence of conditional logic in <IF> bvlock | Fusebox 5 did not allow <false> to precede <true> inside an <if> verb. Fusebox 5.1 allows either order, just like Fusebox 4.1 did. |
| #162 | Include bug | If 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. |
| #163 | Paths with . in the folder names fail when using relative paths | In 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. |
| #166 | development-full-load not working on other Locales | Duplicate of #99 above. |
| #167 | Problem with development-full-load | Duplicate of #99 above. |
| #174 | Fusebox.dtd requires all top level items for validation | Fixed a number of errors in the DTDs |
| #176 | getValue() Should Only Return Specified Key | Fixed newly added fuseboxEvent object |
| #177 | isDefined issue with fusebox 5 in circuit | Actually an error in <if> handling after fixing #160 above |
| #185 | Pre/postfuseaction callsuper="true" is ignored | This was a bug introduced during implementation of #139 below |
| #186 | <postfuseaction callsuper="true" /> bug | Duplicate of #185 above |
Enhancements added in Fusebox 5.1
| Ticket | Description | Notes |
| #54 | FUSEBOX_CALLER_PATH for chained includes | If 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. |
| #73 | Plugins ought to have custom attributes too | The <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. |
| #89 | Add javascript support for <relocate/> tag | type="javascript" causes the <relocate> verb to generate JavaScript? that will cause a redirect in the browser. See also #128 below. |
| #95 | Global Lexicons/Errortemplates/plugins | Fusebox 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. |
| #128 | Add support for 301 Moved Permanently to relocate verb | type="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. |
| #135 | Strict mode check for both .xml and .xml.cfm files | If 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. |
| #139 | Add absolute path support to a circuit definition in the fusebox.xml file | The <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. |
| #141 | change to xfa verb processing to support dots in xfa value | In 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). |
| #158 | Better error when phase contains non-plugin declarations | The <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. |
| #164 | Provide an "event" object to encapsulate attributes scope so that CFC usage becomes easier | For 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). |
| #165 | Add build.xml to make deploying skeleton easier | An 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. |
| #168 | Add sample lexicons for ColdSpring and Reactor | Sample 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 children | Now it checks that <if> only contains <true> and <false> children |
| #184 | Add 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
| Ticket | Description | Notes |
| #12 | <do> not in verb parent context | Closed, won't fix. Not worth the effort. |
| #30 | Parsed file indentation has never worked | Closed, won't fix. Not worth the effort - or the performance trade off. |
| #48 | Replace cfparam with cfif structKeyExists where appropriate | Closed, won't fix. Not worth the effort since this is really just a stylistic issue. |
| #51 | Use structKeyExists() instead of isDefined() in parsed files | Closed, won't fix. Not worth the effort since this is really just a stylistic issue (and might introduce a performance overhead). |
| #74 | Whitespace suppression on include verb | Closed, invalid. Content variables provide the same functionality that was requested in this ticket (it wasn't really about whitespace). |
| #169 | Change copyright to TeraTech | TeraTech, 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. |
| #170 | Create the public 5.1 Beta | 'nuff said! |
| #173 | Fusebox 5.1 not compatible with BlueDragon 6.2.1 Server FREE Edition | Updated the readme and release notes to show BlueDragon 6.2.1 is not supported - BlueDragon 7.0 is required |
