Mach II Bug Fixes & Enhancements

This page was last updated on 11/5/2004 and reflects the state of the 1.0.10 core files which fixed most of the bugs that were previously reported here. If you have an earlier version of the core files, you should replace them with 1.0.9 before applying any of these changes!

Known Bugs (11/5/2004)

There are just a few known bugs in the 1.0.10 core files. Bugs are listed here alphabetically with date(s) and some have an internal bugbase number for reference (from WTG's bugbase).

AppFactory.createAppManager() passes configXML to appManager.init() (reported 10/2004; #39913) - This is actually a very old bug that has never been fixed (and it's completely harmless). The fix is to just remove the configXML argument from the call.

BaseComponent.setProperty() has bogus return (reported 10/2004; #39912) - This method has returntype="any" and attempts to return a value using a function that has returntype="void". This is harmless (as long as you don't attempt to use the value returned from setProperty()!). The fix is to change the return type to "void" and change the cfreturn tag to cfset.

Exception object does not contain all of the cfcatch keys (reported 10/2004; #38161) - At present, only the "standard" cfcatch key values are passed into the Mach II Exception object (type, message, errorCode, detail, extendedInfo and tagContext). Technically this isn't a bug - the behavior is by design - but it does make debugging certain types of errors unnecessarily difficult. The fix isn't straightforward because cfcatch isn't always a simple struct (ColdFusion does a little magic to ensure the "standard" key values are always present).

LSParseDateTime() Fails For Non-EN Locales (reported 10/27/2003; #pending) - In an earlier cut of the framework, AppLoader.cfc used parseDateTime() to process the modified date returned by <cfdirectory> which failed in certain locales so it was changed to use LSParseDateTime() instead. However, this fails on certain platforms when the locale set in ColdFusion doesn't match the underlying locale of the server on which ColdFusion is running. At present, we don't have definitive information about this bug nor do we have a general fix for it. We have reverted to parseDateTime() since we're running on en_us servers but we're setting the ColdFusion locale to a variety of values.

Plugin.configure() executed in random order (reported 10/2004; #39868) - As part of the 1.0.10 release, the order of execution for plugin methods was changed to match the order in which the plugins are declared in mach-ii.xml. Unfortunately, we missed configure(). The fix is to change PluginManager.configure() to loop over the pluginArray instead of looping over the plugins collection (i.e., make configure() behave like preProcess(), preEvent() etc).

View not found exception generates White Screen Of Death (reported 2/2004; #28646) - if Mach II fails to load a view during the exception event handler, you get a blank screen instead of an exception report.

Fixed Bugs (11/5/2004)

The format for each item here is:

The Bug Name (date reported - version fixed) - some notes about the bug.

AppLoader.getAppFactory() (8/23/2003 - 1.0.6) - correctly returns variables.appFactory.

Event.removeArg() return type is incorrect (1/19/2004 - 1.0.9) - removeArg() now has a return type of void.

EventBeanCommand still has public getters/setters (2/2004 - 1.0.10) - methods are now private.

EventContext.hasPreviousEvent() throws error when there is no previous event (2/2004 - 1.0.10) - no longer throws an error.

EventContext Error Under Load (9/11/2003 - 1.0.6) - event context creation is now correctly thread-safe.

EventManager method misspells output= (2/2004 - 1.0.10) - typo is fixed.

Exception Event Does Not Contain Originating Event (10/9/2003 - 1.0.7) - in an exception handler, you can now retrieve the event that caused the exception from the event object using getArg('exceptionEvent').

Initialization Sequence Error (8/23/2003 - 1.0.4) - listeners now use a configure() method instead of an init() method.

Listener Access to Properties (8/31/2003 - 1.0.6) - a listener can now call getAppManager() directly, and from the application manager you can get the property manager and from that you can get properties. This is one step simpler than my proposed change against the 1.0.4 core files (which added an intermediate getListenerManager() method.

Listener/Plugin configure() Called Twice (10/6/2003 - 1.0.7) - configure() is now called only once.

mach-ii.cfm is not thread safe (12/8/2003 - 1.0.9) - locking has been added to make this thread safe.

Multiple Mach II Applications (8/31/2003 - 1.0.6) - the core mach-ii.cfm now caches the application framework CFC instances in application[MACHII_APP_KEY].appLoader where MACHII_APP_KEY is derived from the directory in which the application's index.cfm lives. You can override MACHII_APP_KEY in your local copy of mach-ii.cfm if you need to.

Overriding MACHII_* Parameters (9/25/2003 - 1.0.7) - the mach-ii.cfm file can now simply be included:

<cfinclude template="/MachII/mach-ii.cfm" />

Plugin Argument Validation (9/14/2003 - 1.0.4) - now correctly specifies the eventContext argument to all plugin pre-/post-methods.

PluginManager Argument Validation (8/28/2003 - 1.0.4) - now correctly specifies the argument to getPlugin().

RequestHandler Performs Unnecessary Loops (10/23/2003 - 1.0.7) - no longer loops over form and URL scope.

Thread Safety Issues (11/2003 - 1.0.8) - additional var declarations have made Mach II thread safe.

More Information...

Read more about...