------------------------------------------------
__ ___ __ ________
/ |/ /___ ______/ /_ / _/ _/
/ /|_/ / __ `/ ___/ __ \______ / / / /
/ / / / /_/ / /__/ / / /_____// /_/ /
/_/ /_/\__,_/\___/_/ /_/ /___/___/
Version 1.5.0.@minorVersion@
$Id$
------------------------------------------------
Copyright 2007 GreatBizTools, LLC
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
http://www.apache.org/licenses/LICENSE-2.0
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.
------------------------------------------------
_
/ |_ _.._ _ _ | _ _
\_| |(_|| |(_|(/_ |_(_)(_|
_| _|
------------------------------------------------
Bug Fixes
------------------------------------------------
* Fixed bug when MACHII_CONFIG_MODE was 0
Sometimes the framework did not reload the framework when it was supposed to due
to a logic error in an if/else condition.
(2007-03-24 pfarrell)
* Short Changed the Maximum Number of Events When Exception Occurs
Changed logic that if an exception occurs, it gets the maximum number of events to
queue instead of being short changed in previous versions. For example, an
exception occured on event 9 of 10 and an exception was generated. However, some
application's exception handling announces other events to display "pretty" error pages.
Since the event count was already very high, it is possible to exceed the max number
of events during the exception handling. This caused the framework to throw an
error stating you have exceeded the maximum number of events.
Now, when an exception is generated, the event count is reset to 0 so the exception
handling as the maximum number of events to announce if needed. We have taken care to
not introduce an infinite loop. If the developer's exception handling as an error that
causes an infinite loop, we throw an error after the maximum number of events that
states the exception handing has exceeded the maximum of events and it has caused an
infinite loop.
(2007-02-27 pfarrell)
* Plugin Manager Metadata Bug
Fixed bug when plugin or components that they extend have no functions inside of
the hierarchy.
(2007-02-04 pfarrell)
* White Screen of Death (WSOD) When Maximum Events Is Exceeded
Fixed WSOD bug when the maximum number of events to be processed is exceeded.
Now, process the generated exception up to the maximum number of events then
throws an error since the exception handling exceeded the maximum events for the
second time.
(2007-02-08 pfarrell)
------------------------------------------------
Improvements / Enhancements
------------------------------------------------
* Added ANT build file
(2007-09-25 pfarrell)
* Added AnnounceEventInModule
A new method to BaseComponent called announceEventInModule(). The BaseComponent is
available to filter, listener, plugins and the new properties constructs. You can use
this method to announces events in other modules.
Example:
(2007-04-24 pfarrell)
* Module Support
Please see the documentation for more information.
(2007-04-24 kwiersma & pfarrell)
* Modules Relative File Paths
You can specify a relative path to your module file. This works in the same manner
as relative paths for includes (see below).
(2007-08-09 pfarrell)
* Complex Properties To Configure Time Parameters
Please see the documentation for more information.
(2007-02-25 pfarrell)
* Redirect statusTypes
Added new optional attribute to the redirect command to more than just http stauts 302
redirects. The new attributes is:
- statusType [permanent|temporary|prg] defaults to temporary
Permanent = 301 http status
Temporary = 302 http status (this is what cflocation does)
PRG = 303 http status (PRG = post-redirect-get routine which is a common idiom)
(2007-02-25 pfarrell)
* Include Tag Support
You can now use the includes section and include tag in your Mach II XML config file to
dynamically included anonther configuration file. The include file is specificed using
the file attribute of the include tag and is relative to the application root or mapping.
Since you cannot define duplicate listeners, filters, plugins, events or views there may
arise a situation where your include may contain a duplicate event etc. You can use the
override attribute to override conflicts. The attribute defaults to "false" if not
specified.
If you set the MACHII_CONFIG_MODE to 0 (dynamic) and a included config file changes,
Mach-II will automatically reload even if the base config file does not change.
Also, you can specify a relative path to your include file. The relative path is
relative from the location of the xml file that defines the include. Use the
standard *nix style ./ and ../ notation for building your relative path. In the
example below, the ./ indicates that the starting path is relative to the current
directory and that the mach-ii_admin.xml file is location in the SAME directory as
the mach-ii.xml file.
Example - mach-ii.xml:
...
...
The new include functionality supports includes that include other include files (i.e.
recursive). Also, if you try to include a file that has already been included, Mach-II
will throw an error telling you cannot do that.
(2007-02-18 kwiersma - includes)
(2007-08-09 pfarrell - relative paths)
* Redirect Persist
Added new optional attributes to the redirect command that allows you to
persist complex datatypes across a redirect. The new attributes are:
- persist [boolean]
Turns complex persisting on/off for this redirect.
- persistArg [comma,delimitated,list,of,event,args]
List of event arg names to persists. If this attribute is not defined or "",
the command will persist the entire event object.
A new optional property has been added called redirectPersistParameter. This defaults
to persistId.
(2007-02-08 pfarrell)
* Complex Properties To Properties
Please see the documentation for more information. (2007-02-05 pfarrell)
* Trace Plugin
We have added better event more granular parameters to suppress trace output
by adding a parameter that only shows debugging if ColdFusion's debugging
mode is on.
(2007-02-02 kwiersma)
* Subroutines
Added a new XML construct to support subroutines and a related command to
execute a subroutine. Subroutine are executed at the time they are encountered
in the XML and utilize the current event object. They are in essence - inline,
private (no URL accessible) event-handlers chain into the current event object.
(2007-02-02 pfarrell)
* Bindable Placeholder Parameter Values Support
Built-in bindable of ${} syntax of placeholders in parameters values.
This allows you use placeholders to have dynamic parameter values. For example:
The ${serverMode} corresponds to a property named "serverMode". Mach-II will
automatically get the property's value at runtime and replace parameter's value
with the result of the property.
(2007-02-03 pfarrell)
* Event-Bean Command
Added new optional attribute called "reinit" which defaults to true if
not defined in the command. If "reinit" is false, the even-bean command will
not re-initialize the bean, but get it from the Event object. This allows you
to reuse beans and repopulate, whereas the old functionality would overwrite
the original bean and you would loose all the data contained within. This feature
enhancement is backwards compatible with 1.1.1.
(2007-02-05 pfarrell)
------------------------------------------------
Internal Framework Improvements / Enhancements
------------------------------------------------
* New EventContext in conjuction with RequestHandler
The framework's request runner has been completely rewritten in order to support
modules. We recommend NOT using the undocumented request.eventContext as this
construct has been depreciated and we recommend that you do NOT directly access
the new request._MachIIRequestHandler contruct as well.
(2007-04-24 kwiersma & pfarrell)
* Required event-handlers check
The framework now checks for required events (defaultEvent and exceptionEvent) for
parent modules and checks for required events if they have been defined when in a
module.
(2007-04-24 pfarrell)
* Framework reloads when changes are made to includes and MACHII_CONFIG_MODE is 0
(2007-03-24 pfarrell)
* Removed use of XmlSearch() and switched to StructKeyExists for parameters
in property, listener, filter and plugin managers. This has improved (re)load
times up to approximately 10% for large applications that contain many declarations
of properties, listeners, filters and plugins.
(2007-03-01 pfarrell)
* Refactored all managers to method chain the init() method whe creating the object
(2007-02-25 pfarrell)
* Refactored manager's init() method into init() and loadXml() methods
Separated the loading of xml data into separate function since it called so
many times during the loading the framework due to the introduction of includes.
(2007-02-25 pfarrell)
* Refactored AppManager's RequestHandler Logic Into RequestManager
Moved created and getting of RequestHandler's into the new RequestManager.
Delegated the getRequestHandler() method in AppManager to use RequestManager.
There was no API change in regards to the AppManager's getRequestHandler(), however
we removed the public utility method named createRequestHandler() from the
AppManager since nobody *should* be calling this externally.
(2007-02-19 pfarrell)
* All init() methods now Return the "this" scope instead void
(2007-02-10 pfarrell)
* Version number of the framework is now hard-coded in the PropertyManager instead
of being passed up the component chain from the bootstrappers.
(2007-02-10 pfarrell)