******************************************************************************** Copyright Since 2005 ColdBox Framework by Luis Majano and Ortus Solutions, Corp www.coldbox.org | www.luismajano.com | www.ortussolutions.com ******************************************************************************** HONOR GOES TO GOD ABOVE ALL ******************************************************************************** Because of His grace, this project exists. If you don't like this, then don't read it, its not for you. "Therefore being justified by faith, we have peace with God through our Lord Jesus Christ: By whom also we have access by faith into this grace wherein we stand, and rejoice in hope of the glory of God. And not only so, but we glory in tribulations also: knowing that tribulation worketh patience; And patience, experience; and experience, hope: And hope maketh not ashamed; because the love of God is shed abroad in our hearts by the Holy Ghost which is given unto us. ." Romans 5:5 ******************************************************************************** WELCOME TO COLDBOX ******************************************************************************** Welcome To The ColdBox ColdFusion Development Platform! ColdBox created & copyright by Luis Majano (Ortus Solutions, Corp) www.ortussolutions.com ******************************************************************************** COLDBOX LICENSE ******************************************************************************** ColdBox is open source and bound to the Apache License, Version 2.0. If you use ColdBox, please try to make mention of it in your code or web site or add a Powered By Coldbox icon. Please donate, this project lives thanks to your donations. Please Read The Official License Agreement: http://www.coldbox.org/about/license The ColdBox Websites, logo and content have a separate license and they are a separate entity. ******************************************************************************** OPEN SOURCE INITIATIVE APPROVED ******************************************************************************** This software is Open Source Initiative approved Open Source Software. Open Source Initiative Approved is a trademark of the Open Source Initiative. ******************************************************************************** CREDITS & CONTRIBUTIONS ******************************************************************************** I have included some software from other open source projects and I have used some code from open source projects in this framework. If I have forgotten to name someone, please send me an email about it. GOD I THANK GOD FOR HIS WISDOM FOR THIS PROJECT - Oscar Arevalo Fixes, ideas, sample apps, cfcViewer, documentation, ColdBoxReader - Sana Ullah Bean factory, design, ideas, documentation, fixes - Tom de Manincor Design, ideas, fixes, sample apps - Brian LeGros Refactoring, design and ideas - Ernst Van der Linden Testing, ideas and design - Rob Gonda Design, ideas, architecture - Mark Mandel JavaLoader, ideas, architecture - Josh Giese Ideas, architecture, support - Tom Woestman Ideas, architecture, support - Stephen Ostermiller Attesoro Java Resource Bundles Utility. - Paul Hastings Internationalization & Resource Bundles. - Raymond Camden (A true Jedi Master) Sample Applications, config.xml.cfm, etc - Aaron Conran Fixes, ideas, sample apps, documentation - Greg Lively FileWriter, FileReader, StringBuffer plugin - Dave Stanten Web Services Refresh, Performance - Artur Kordowski Zip Plugin - Dave Ross & Chris Scott Coldspring - Peter Bell Lightwire - Ben Garrett RSS support & documentation ******************************************************************************** COLDBOX IMPORTANT LINKS ******************************************************************************** Source Code - https://github.com/coldbox/coldbox-platform Tracker Site (Bug Tracking, Issues) - https://coldbox.assembla.com/spaces/coldbox/ Documentation - http://wiki.coldbox.org Blog - http://blog.coldbox.org Official Site - http://www.coldbox.org Official Bug Email - bugs@coldbox.org Official Info Email - info@coldbox.org ******************************************************************************** COLDBOX INSTALLATION ******************************************************************************** Please go to http://wiki.coldbox.org to download the latest installation guide which will provide you with alternate installation methods. Below is the one server install method. You need to extract the ColdBox distribution file and place it on your web root: Windows IIS: [DRIVE]:\inetpub\wwwroot\coldbox *nix: /{web root}/coldbox CFMX/BlueDragon/Ralio Standalone Server {Install_Folder}/wwwroot/coldbox You can log in to the ColdBox Dashboard, if you downloaded the bundle, by going to your web server and the following address: http://{localhost}/coldbox/dashboard/index.cfm Default Password: coldbox. The readme.txt in the Application Template folder gives you an in-depth overview of how to configure your first ColdBox application. ******************************************************************************** SYSTEM REQUIREMENTS ******************************************************************************** - Railo 2.0 and above - ColdFusion MX 8.X and above - Open BlueDragon 2.X and above - Application Scope for the Frameworks internal structures & i18N support. (Required) - Session Scope in order to use the sessionstorage plugin and messagebox plugin if used. (optional) - Client Scope in order to use the clientstorage and messagebox plugin. (optional) ******************************************************************************** CHANGELOG ******************************************************************************** == Version 3.5.0 (November 2011) CODENAME: Jeremiah 29:13 == * ColdBox 3.5.0 - https://coldbox.assembla.com/spaces/coldbox/milestones/126581-3-5-0 * WireBox 1.3.0 - https://coldbox.assembla.com/spaces/coldbox/milestones/421598-wirebox-1-3-0 * CacheBox 1.3.0 - https://coldbox.assembla.com/spaces/coldbox/milestones/421602-cachebox-1-3-0 == Version 3.0.0 (March 2011) CODENAME: 318-GENESIS-14:14 == * https://coldbox.assembla.com/spaces/coldbox/milestones/126575-3-0-0 * http://www.assembla.com/spaces/coldbox/milestones/312453-3-0-0-rc2 * http://coldbox.assembla.com/spaces/coldbox/milestones/238409-3-0-0rc1 == Version 3.0.0 RC2 (November 2010) CODENAME: 318-GENESIS-14:14 == http://www.assembla.com/spaces/coldbox/milestones/312453-3-0-0-rc2 == Version 3.0.0 RC1 (November 2010) CODENAME: 318-GENESIS-14:14 == http://coldbox.assembla.com/spaces/coldbox/milestones/238409-3-0-0rc1 == Version 2.6.4 (August 2009) CODENAME: RENEWED == * Coldfusion 9 compatibility release == Version 2.6.3 (February 2009) CODENAME: RENEWED == === Bug Fixes === * #659 registration of interceptors not done before logging aspects was initialized * #658 ses convention name-value pairs is omitting the first character in the string. * #660 lightwire better error displays on nested bean declarations missing id attributes. * #661 lightwire nested beans needed an id in order to work, now it works just like it should * #663 renderer throwing useless message on missing includes for external views * #666 beanFactory better error messages when errors populating objects from a structure * #668 feedReader bug on maxitems when feed has less items than desired * #669 feedReader expansion on date reading from dublic core * #670 Exceptions on timer and debugger service when vapor cookie value is not boolean * #671 environment interceptor not accepting ${} language translations * #673 superType runEvent() has no return values defined and it should return results if defined * #675 cache - getSoftRefKey assumed the key would be found in the structure, if it was not found it would crash * #677 SES convention name value pairs throw exceptions when variables are not syntactically correct * #679 beanFactory wrong default values for debugMode on getModel() and also not passing the debugmode arguments correctly * #681 isEmail utility missing new Top level domains (tlds) + additon of custom tlds support * #682 concurrency error in logger plugin, when session start and session end where involved. Creating log file in plugins folder * #683 ses extra cleanup of empty // placeholders * #686 Cache not purging events when using querystrings due to invalid cache key creations * #690 SES interceptor failing on path_info due to j2ee context roots when deployed natively on j2ee servers * #693 Exception when getting new handler once an event was overriden by a preHandler or interceptor === Enhancements === * #664 SendFile method of utilities plugin should accept binaryFiles too * #665 New setting: ModelObjectCaching to allow for setting model creation caching on or off. Great for development * #667 logger plugin addition of utility methods for logging: debug(), info(), warn(), error() and fatal() * #676 Transfer Loader - Updated to use the TDO Bean Injector via properties. New properties * #680 New Model Settings: ModelsSetterInjection,ModelsDebugMode,ModelsStopRecursion,ModelsDICompleteUDF * #684 SES-addRoute() - Add ability to pass in a string of name-value pairs to create in the rc when a route is matched, new argument: matchStructure * #685 New setting: IOCFrameworkReload (true/false) which can reload the factory on every request, great for development * #687 Added new argument to getModel() - stopRecursion. This is a comma-delimmitted list of classes to stop on recursion. * #688 beanFactory stopRecursion should now accept a comma delimitted list of recursion stopping classes * #689 New setting: DefaultLogLevel for choosing your application's logging level: 0-4 * #691 Auto app mapping detection in j2ee fully functional now * #692 Update of internal debugging timer mechanisims. Improved event execution performance. == Version 2.6.2 (December 2008) CODENAME: FAITH == === Bug Fixes === * #525 Implement onException interception announcement for ColdProxy when invalid event occurs. * #527 debugmode iif evaluation fails in cf7 due to delayed evaluations on ColdBox Sidebar * #528 remove log fails when no logging is enabled in the sidebar * #529 Bug on renderData method, sidebar should not render on renderData * #535 SES Double replacement of clean script name on wrong variable, not the cleaned script name. This affects only certain web servers and embedded applications. * #540 Cache locking optimizations to work on per object locks, considerable performance under load. * #549 Cookie Storage: cookiestorage_encryption setting was not being set correctly * #553 Activate logging facilities after configuration load and not after aspects load, so all interceptors can have logging * #556 SES numerical routes mismatching on double regex grouping and producing wrong variables in the request collection * #563 clearEvent() not flushing by query string when using SES, ses interceptor was not cleaning the routedstruct before event caching tests * #564 setNextRoute() is missing an addToken parameter * #566 testcontroller setnextroute and setnextevent missing new arguments for testing and assertions * #567 Coldbox Sidebar interceptor have many case-sensitive issues for linux OS's * #568 rssReader error parsing atom feeds with text/html content. * #571 sidebar picks up on form css and distorts the sidebar * #573 sidebar loading issue when framework has been refactored * #576 setEvictionPolicy override not exposed as public on Cache Manager * #583 OverrideEvent does not work on preEvent interceptions and preHandler executions, but now it does. * #585 Whitespace bug when reading elements off the security interceptor xml or db. Causes invalid rules. * #586 clearView cache prefix is not coming from the renderer plugin so it would fail in cache manager * #588 Lightwire var scope issue on key looping in the base config object * #606 Private runnable events need locking for mixin insertion and removal, creation of new method for private executions * #608 beanFactory populate methods can now take a trusted setter argument. If set to true, then the setter method will be called even if it does not exist in the bean. Great for onMissingMethod usasge or implicit getters/setters * #610 ses fix for IIS rewriting where cgi.script_name would bleed into path_info. Thank you IIS. * #611 Lightwire now supports the CS directive of default-lazy-init * #615 Lightwire when mixin dependencies, there is no cleanup of the mixin methods * #618 includeUDF not working for absolute paths * #619 Lightwire now does bean definition validations * #623 AppTemplate Unit Testing classes had several legacy errors. Updated to latest configurations * #627 ResourceBundle plugin would throw error when retrieving resource from non-loaded or expired locale bundles * #629 Owner Email no longer required as a setting * #631 JSON Struct encoding is always upper case, changed to optional * #639 Cache: Threshold checks not looking at the max heap size but just the total, reporting less free percentage than it should. * #655 Lightwire - Error when adding nested bean definitions to constructor,property and mixin elements, due to wrong order of arguments when adding dependencies. === New Features === * #462 preHandler exceptions + only action lists, you can now have more granularity on handler interception points * #463 postHandler exceptions + only action lists, you can now have more granularity on handler interception points * #470 Cross Site Scripting (XSS) new Plugin Antisamy * #526 Sidebar base app path for its includes cannot be overriden, needs an override when used behind reverse proxies. * #532 Implicit Views when no view is set, reverts to the event name. Be careful on case sensitive OS's * #536 New interceptor: Deploy - To be able to reload your application or do custom code on new deployments, especially on clustered environments * #543 Setting ANT var replacement: ${varname} can be used in any setting in the coldbox.xml and even concatenated ${appMapping}.model.${DBType}Gateway * #545 New Eventhandler public property: this.EVENT_CACHE_SUFFIX, this will append a suffix according to executed cached events. Useful for multi-lingual applications * #555 Added a controller reference when creating a security validator object on its init() method * #557 Added new public property to base test case: this.PERSIST_FRAMEWORK = true/false then the framework will be persisted across tests and teared down * #558 ioc file validation algorithm enhanced for local checks first and finally absolute checks, so hosted applications do not throw security sandbox errors * #559 New methods supertype: locateFilePath(), locateDirectoryPath() for convenience of finding relative or absolute locations within an application. Great for plugin/interceptor developers * #562 Reorganise Comments * #565 SetNextEvent() will detect if in ses mode or not and redirect via routes if detection is successful. This can open the door for one single relocation method. * #575 New param to dump facade (abort=false) to abort also after dump * #577 new set cache method: setMulti() to set multiple entries * #578 new get cache method: getMulti() to retrieve more than one cached entry * #579 new cache method: clearKeyMulti() to clear multiple keys using a list * #592 New plugin: ClusterStorage for Railo * #602 make any part of the coldspring xml file dynamic using ${} concatenations * #603 beanFactory populate methods can now take a scope argument. If used then population will be done by mixin injection and not setter calls * #604 Sidebar waitTimeBeforeOpen. Added js functions open and close * #605 Enable autowire for any ioc bean from lightwire or coldspring using Coldbox Conventions * #613 mod_rewrite Cheat Sheet included in distro * #614 Lightwire can now construct lazy-init per beans, coldspring compatibility * #617 includeUDF revamped, you can now exclude extensions and it will try to locate it * #620 LightWire can now use parent factory beans and create a factory hierarchy * #621 Ligthwire can now wire up not only cfc dependencies but java and webservices interchangeably * #622 New implicit view helpers convention: {viewname}Helper.cfm * #624 new set cache method: getCachedObjectMetadataMulti() * #625 New Sample App: Simple Blog a 4 stage blog application * #626 New Sample App: SES Sample * #628 New i18n Locale storage: Cookie * #632 Utilities new method: sendFile() * #634 ioc plugin can now read coldspring bean definitions and do ${} replacements, anywhere in the file. * #636 Lightwire can now parse using xml,raw string or file: parseXMLObj(), parseXMLRaw(), parseXMLConfigFile() * #637 New Transfer Extra: TransferLoader Interceptor * #638 SES package resolver. You can now do /package/handler/action instead of /package.handler/action. SES now can determine package nested URL's * #640 New Application Template and Code Generators * #641 New component metadata attributes for autowiring control: autowire_stoprecursion (classname), autowire_setterinjection (boolean) * #642 New Model Integration using new model conventions and methods: getModel() and populateModel() and more. * #646 Buildlink method now supports ssl * #647 SetNextRoute has a new argument for ssl support: ssl * #648 SetNextEvent has a new argument for ssl support: ssl * #649 SetNextEvent has a new argument baseURL used to create full url relocations when in NON ses mode. * #651 Testing classes now can use GetModel() * #652 ColdBox Proxy can now use getModel() * #653 preRender interception point now receives the content to be rendered as the key 'renderedContent' * #654 Security interceptor updated to use model integration features * #656 Cache Panel Commands: expireAll, clearAllEvents, clearAllViews, Remove Entry * #657 I18n Enhancements: getLocaleQuery(), getTZQuery(), getTZDisplayName() == Version 2.6.1 (August 2008) CODENAME: FAITH == === Bug Fixes === * #492 MTLogger Tracer method when called asynchrounously and from a remote call behaves weirdly, blanking out some variables due to cfthread. * #493 setView() with no layout is not blanking out a pre-set layout * #494 proxy,sessionstart,sessionend concurreny issues when !ConfigAutoReload is set. * #495 Throw an error that is informative when interceptor classes are not found instead of a bogus error. * #499 onInvalidEvent crashes in SES mode * #500 on Invalid Event error type is not configured correctly * #501 resource bundle not handling relative paths, update to use same approach as other plugins * #502 useSetterInjection not passed correctly across the inheritance tree in the beanFactory * #503 Interceptor Service not registering correctly on demand registrations and doing double puts on some states * #504 Interceptor state addition of an exists method, so overwriting does not occur * #506 Missing onException core interception point * #507 !ExceptionHandler not firing on proxy errors * #508 Request Context Decorator overriding the memento and loosing the controller reference * #511 Resource bundle paths bug when unit testing remotely * #517 event.noRender() has wrong logic for the remove bit === New Features === * #491 beanfactory - autowire() add a stoprecursion string. * #516 Project SideBar: A developer's toolbar * #518 New cache manager new method: getCachedObjectMetadata(objectKey) * #521 New core interception !AfterCacheElementExpired * #523 Programmatically override eviction policy via new method: setEvictionPolicy() * #509 New Interceptor Ouput Buffer, to produce output from your interceptors * #519 New Eviction Policy: FIFO (First In First Out) == Version 2.6.0 (July 2008) CODENAME: FAITH == === New Features === * #230 Debugger Event Tracing Log & Panel, you can now keep track of executing requests, their profilers and their tracers. * #268 cookiestorage plugin - New settings 'cookiestorage_encryption_seed' , so value encryption/decryption will be used. * #305 flash persist values can now be selected in session or client storages. * #307 security interceptor - A new interceptor to help you secure your applications. * #313 Application & Session storage plugins now work off a structure in scope. You can now even clear the entire storage if necessary without affecting the entire scope. New Methods: clearAll(), getStorage() * #319 !ColdBoxProxy - Verify that incoming event is passed, else throw appropriate exception * #341 Cache Manager - udpate its internal structure to adapt to the concurrent JDK 5 package if running it. * #348 Messagebox - When setting new messages, ability to add an array of messages * #350 SES interceptor - Custom routes can now distinguish between numeric and alphanumeric placeholders just add :varname-numeric * #359 Interceptor Service - new method, getInterceptor(). So you can interact with loaded interceptors * #363 Autowire Interceptor - Add dynamic method injection so the interceptor can inject dependencies via private methods * #364 !ColdBoxProxy - Ability to get objects from the IOC container * #365 !ColdBoxProxy - Ability to get plugin objects. * #369 ioc update - !LightWire !ConfigBean update to use mixin injector for injecting the ColdBox controller. * #370 !ColdBoxProxy - Ability to declare and load ANY coldbox application * #379 !CacheManager - expireByKeySnippet(), clearByKeySnippet() two new versatile purging mechanisms * #380 !CacheManager - Enhance the purging mechanism to accept regex, not only snippets * #382 !RequestContext - gettrimValue() new method to get a value already trimmed * #386 Event Caching - 0 or eternal timeout protection. * #387 New convention: default event on a handler called 'index', if no action is defined for an event handler, it will fire this convetion. * #388 Custom Application Conventions now configurable from the coldbox.xml * #390 Messagebox Plugin - Application can override storage via application custom setting: messagebox_storage_scope. * #393 environment interceptor - Added the ability to override any setting in the configuration structure, even if nested * #394 Complex Variables on Config File are now based off JSON syntax, create nested arrays,structs,queries and much more. * #395 New json Plugin: serializing/deserializing JSON * #396 New Plugin: !MethodInjector, you can mixin/remove methods and call private methods on any CFC * #397 !BeanFactory - populateFromJSON(), populateFromStruct() new methods * #398 Super Type new facade method: htmlhead(content), due to the increase usage of JS and CSS * #401 !ColdBoxFactory - new method getInterceptor() * #402 baseTest - new method getInterceptor() * #403 New base mxunit test case for mxunit integration. * #404 !ColdBoxProxy - Ability to get an interceptor * #405 Cache - Now uses java soft references for non-eternal objects. It now becomes a memory sensing cache too * #406 Utilties - serialization helpers: _serialize(), _serializeToFile() and _deserialize(), _deserializeFromFile() * #409 View-Layouts are now stored in order as declared in the configuration file * #410 !CacheManager - clearView() ability to clear views with view name snippets. * #412 renderView() now includes explicit caching parameters. You can now cache and render at the same time * #413 Ability to execute private events via runEvent(event,prepostexempt,private) * #415 Messagebox - New methods: append() and appendArray() * #417 !LightWire upate - You can now declare a bean xml file in the configuration file with no need to create a !LightWire config bean object. * #419 onMissingAction() convention - Create virtual events if necessary on a per handler basis * #420 Framework Reinitialize Button on Info Panel, it even asks you for your reinitialize password if set. * #421 New event method: buildLink() create your event or route links automatically * #431 Plugin/Handler services optimized on cache object retrievals. * #440 Utilities plugin new method: uploadFile() to easily upload files on any OS. * #442 Environment interceptor encapsulates tier detection on a new method: detectEnvironment() that can be easily extended on. * #443 Queryhelper new method: filterNull(qry,field, NULL or IS NOT NULL) * #444 Autowire interceptor can now read cfproperty tags and autowire according to metadata. * #447 Attesoro i18n tool updated to version 1.8 * #449 Request context decorator now receives a reference to the coldbox controller and a getController() method. * #454 Interceptors - You can now append custom interception points, register new interceptors, get intercepor state containers and unregister interceptors ALL at runtime. * #457 Alternate Application.cfc bootstrapper that requires NO inheritance * #458 Finalized the refactoring of the autowire interceptor to use the beanfactory plugin for on demand autowiring. You can use the bean factory plugin now to autowire any object. * #460 populate bean from query * #465 New plugins feedReader/feedGenerator * #471 Resource Bundle new setting: !UnknowTranslation - Developer can set a default message to show when a translation is not found * #474 New Setting: !ViewsExternalLocation - so an external location can be used for view rendering * #477 SES Optional Variables * #478 Event.!RenderData() The new AJAX/REMOTE interaction method * #483 New SES property: looseMatching for matching routes anywhere in a URL * #487 Flash persistance methods can now take a new argument: varStruct which can contain key-value pairs it will persist in flash ram === Bug Fixes === * #248 !ColdFusion & !BlueDragon 6.X Support will be deprecated * #254 Deprecate completely fileUtilities.cfc for utilities.cfc Plugin * #270 Remove !MessageBoxStyleClass setting from config.xsd * #317 Document return types on loose typed returns and arguments * #318 Strong Type old code that was left off as loose * #355 Problem with Layout Folders, when calling setView(), it will grab the first match instead of the right folder. * #357 ApplicationStorage plugin exist() method was left as private, when it should have been public. * #360 !EnvironmentControl - Not loading file if its already an absolute path * #362 Logger Plugin - Not detecting the absolute path of a logs location. It creates logs on the root instead. * #366 !LightWire var scope issue * #367 Debug panel output interferes with page js * #371 !ColdBoxProxy - Update code throw's to adapt to complex cfcatch structures. * #372 ioc plugin - update how it reads the coldspring file by using the internal appmapping path. This will solve issues with unit testing. * #373 ioc plugin - Added the ability to override the instantiation paths of the object factories, for loading custom factories. * #374 !LightWire baseconfig object not initializing dependency structures for beans coming from a bean factory * #375 !LightWire calling init methods when objects might not even have an init method. * #376 !LightWire - fails on creating a factory bean because there is not init method property for it on the config. * #377 ApplicationStorage plugin has no locking. Needs locking for race conditions * #381 Request Context Decorator - Will now maintain states across decorations * #385 Event Caching - Not removing all framework URL actions from the key. This just creates a duplicate cache entry * #389 ses interceptor - unusual behavior when intercepting proxy calls, needs to be disabled on proxy calls. * #392 sessionstorage plugin has been mistyped on several areas, this causes conflict and errors on case sensitive OS's * #416 Environment Interceptor - running twice if using fire on init. * #423 Handler dictionaries not clearing on reinitializations or auto reloads. * #424 Coldbox factory was missing a throw() facade method. * #426 Unecessary creation of request context objects on every request. Huge optimization boost. * #427 Coldbox reader Autowire not defined on handlers * #428 Flextester complex variables not defined correctly. * #429 Transfersample complex variables not defined correctly. * #436 Logger plugin was appending an extra OS slash on the log full path. * #445 Login Sample Application multiple errors when setting/retrieveing data from session objects. * #448 Autowire interceptor not correctly traversing inheritance tree with dependencies. * #450 Handlerservice error on the exception string when no handlers found. * #459 update the timer module to decouple it from the application scope, plus some enhancements. * #461 form/url structures not inited on some remoting calls. * #467 optimise getUtil() usage on the internal services * #475 Renderer - External View method can now use caching and also appends .cfm * #476 ses not correctly matching the location of routes. It would scan the entire string instead of left to right * #479 Bug on ses interceptor when IIS appends a ? var_match is mispelled. * #480 Proxy not tracing incoming/outcoming variables as they arrive. * #481 Add stop polling to the cache monitor * #482 Start the execution profiler with no polling, so user can turn it on. * #485 onSessionEnd is missing the appscope argument in the event object == Version 2.5.2 (February 2008) CODENAME: Gálatas 5:1 == This is an important update that will fix several bugs and some new updates. === New Features === * #322 Two new interception points: afterPluginCreation, afterHandlerCreation * #323 !LightWire - Additon of containsBean method * #324 Expose the persistVariables method on the controller and supertype to permit flash memory of the request collection on demand. * #326 new autowire interceptor for autowiring handlers/plugins/interceptors with ioc beans * #327 Utilities new method isSSL, a very useful utility method === Bug Fixes === * #321 !ColdBoxProxy - bug on empty structures, cfparam the form and url structures * #325 Bluedragon cfthreading issue over names * #328 Bug on environmentControl interceptor not calculating the path of the config file correctly * #329 Update relative instantiation paths to full via coldbox.system, cf doesn't likey * #330 getDebugMode on super type not returning correct value * #332 !ApplicationTemplate - Remove hard ses rewrite rules, moved to install folder. * #334 Cache Manager - expireAll is expiring eternal objects as well, when it shouldn't * #335 Cache Manager - If clearKey fires and no object is removed, interceptor still fires when it should not * #336 Cache Manager - metadata needs to be same as pool, or weird side effects occur on wrong case insensitive namings!! * #337 sessionstorage naming is wrong for case sensitive OS's in several areas * #338 ses interceptor - some unusual behavior on unique urls, when using custom routes. * #339 ses interceptor - need to test if the path info has a leading "/" before stripping it, else it truncates it anyway * #342 If App Mapping = "/" the handler registration will fail. * #343 ses interceptor - still placing appMapping on path even if blank. This produces a // path * #344 Cache Manager - Eviction Counts are not being reported correctly * #345 Debugging - Forgot to display the cache evictions * #347 Environment Control Interceptor should fire on init == Version 2.5.1 (December 20 2007) CODENAME: Romans 8:32 == * #314 Serious bug fix for SES + Event Caching. SES was not setting the cacheable entry. == Version 2.5.0 (December 17 2007) CODENAME: Romans 8:32 == * A major upgrade to our !ColdBox engine, lots of fixes and upgrades. * #127 Plugin Upgrade to !JavaLoader 0.5 * #132 SES Pretty URL support thanks to Coldcourse. SES out of the box! * #135 Application.cfc Support, Application.cfm + index.cfm combo still supported but will be deprecated by the 2.7 version. Please update your apps to use the included Application.cfc. * #163 Project Interceptors : You can now intercept calls in over 12 execution points of a user request, even the !ColdBox cache. Not only that, but you can also create your own observable execution points and use the API to announce your own interceptions. http://ortus.svnrepository.com/ColdBox/trac.cgi/wiki/cbInterceptorsGuide * #164 onSessionStart/onSessionEnd Support added. You now have two new settings in your configuration file: !SessionStartHandler and !SessionEndHandler. You can now easily create events to be fired for these execution points or use interceptions. * #183 !ColdBox.cfm * Migration to Application.cfc support, however Application.cfm is still supported. * #186 Custom Bug Report * Users can define the bug report to email out within the configuration file. * #199 Messagebox Custom CSS and Layout Update (messageboxstyleclass setting deprecated) You now have a new setting: !MessageboxStyleOverride [boolean]. You can now just tell the framework that you will be overriding the styles of the messagebox. You can look at the guides or the MessageBox.cfm file to see how to override the styles. (!ColdBox.system.includes.MessageBox.cfm) * #202 Code Optimization and better encapsulation. This has caused a side effect on even more stable framework code. * #203 Update Samples Gallery Content * #222 Request Collection Persistance via !SetNextEvent. You can now pass a comma delimmited list to the setnextevent method of the keys in the request collection that you would like to persist across the relocation. The framework will then reload them in the relocated request collection. * #223 Renderer Plugin * fixes on local naming. * #224 New Convention * Plugins. You can now create your custom plugins with no configuration declaration. Just create a folder called plugins on your application root. The framework will pick this path up for your getMyPlugin() calls. As always, you can change the conventions via the framework settings.xml file or the dashboard. * #225 !GetMyPlugin * add new argument = 'newInstance', this was a fix of a missing argument on the facade. * #226 configAutoReload flag not resetting the appstart handler. Now it correctly reinits it. * #227 CF8 support for renderer plugin. * #228 white *space control, what is white space? no more with !ColdBox 2.5 * #229 Enhanced Event Registration System * #232 !HandlersIndexAutoReload was cleaning cache, not anymore, its fixed now.!! * #233 Debugger Style & Usability Enhancements * #234 !ColdBox base service created, so future internal services can be expanded. * #235 Logger Critical Error on Bug Reports, not being able to send them fixed. * #236 !DumpVar url action can now dump request collection variables, just pass in the request collection key(s) * #238 New CFEclipse snippets. * #239 New Facades: getDebugMode() setDebugMode() on !SuperType, all plugins,handlers, and interceptors inherit this. * #240 Cache Panel overflow and row highlighting * #241 getMyPlugin on Controller deprecated, not needed any more. No more controller.getMyPlugin(), use getPlugin with the correct arguments. * #242 Application Template Unit Test Updates * #243 !DebuggerService update of internal properties. * #244 New Plugin Service * More encapsulation and registration algorithms. It now stores metadata for quicker lookups. * #245 Tracer method updated to be able to persist values. You can now use the tracer method on the logger plugin accross multiple requests. Awesome!! You can have tracers anywhere now and until the debugger panel gets rendered you will see the messages. * #246 sessionstorage syntax updates * #247 clientstorage syntax updates * #249 !DefaultView contains .cfm on application template, when it should not have. Fixed * #250 toStruct toArray new methods on the Utilities plugin, for converting convention strings to structs and arrays. * #253 fileUtilities renamed to utilities : Compatibility plugin left for this release. Will be deprecated by 2.7 please update your code. * #255 !LoaderService addition of new methods and delegations. * #256 Framework now includes more unit tests. * #258 !FileWriter plugin deprecated, now found in contributed plugins page. * #259 onInvalidEvent redirection, remove queryString that was appended that included the invalid event. Now it can be found on the request collection. * #261 Event object has a new noRender() and isNoRender() method that you can use to tell the framework to just execute but not render any content. Silent execution. * #262 Updates to guides and docs. * #263 XMLParser.cfc : break up the parseConfig method into several internal blocks and cleanup. * #264 New !FrameworkSuperType Method: relocate() facade to cflocation * #265 New Feature: Decorate your Request Context via the !RequestContextDecorator. You can now decorate the internal request collection object (requestContext) and enhance its functionality following a very simple decorator pattern. * #266 New Plugin: cookie storage plugin by Sana Ullah for permanent cookie storage access. * #267 Debugger Cache Panel * Cache Key Viewer/Dumper. You can now click on the name of a cache key in the debugger panel and it will open a window to dump the contents of the cache key. You can now dig into the cache and verify your data. * #269 Cookiestorage now can store complex variables via wddx. * #273 Integration of interceptors to unit testing. * #275 !ColdBoxFactory added the ability to create datasource beans and mail setting beans. * #276 New Plugin: application storage plugin by Sana Ullah for permanent application storage access. * #278 Logger Plugin fix of not creating the correct directory structure. New setting created: Expanded!ColdBoxLogLocation * #281 !BlueDragon Support for interceptors * #283 New Setting for !ColdBox Proxy: !ProxyReturnCollection [boolean] this determines if the proxy returns a structure or the return values of the handlers. * #284 New cache metadata for objects: cacheLastAccessTimeout, you can use this on event or object caching. * #285 Broken link on samples updates * #288 New method on Event context: getSelf() to retrieve: index.cfm?event= or whatever event name you use. * #289 View Caching using the event.setView() method. You can also purge views via the renderer plugin * #290 A very awesome event caching system. You can set it via metadata and the framework will cache events and its permutations. * #291 Flex/Air integration via the !ColdBox Proxy. * #292 New !MultiThreaded logger plugin for !ColdFusion 8 and !BlueDragon 7: MTLogger. * #293 New Cache !MultiThreaded reaping and purging for !ColdFusion 8 and !BlueDragon 7. * #296 New Setting :!HandlersExternalLocation For using external handlers in your application == Version 2.0.3 (August 2007) CODENAME: Acts 5:29-32 == * New Sample Apps: !LightWire Sample, CCTApp by Tom de Manincor * #169 Structure variable declarations in the config updated * #178 !LightWire is now fully supported and included with !ColdBox for out of the box IOC. Thanks to Aaron Roberson & Peter bell. * #200 QueryHelper new methods: getColumnArray(), getCountDistinct(), getRowNumber() * #205 Critical Concurrency fix in the !ColdBox.cfm template. * #206 Removal of client variable references. * #207 clientstorage plugin syntax updated * #208 sessionstorage plugin syntax updated * #209 !ColdBoxFactory.cfc updated with new method * get!ColdBoxOCM(). To get a reference to the cache manager from within coldspring. * #210 Samples Gallery Content Updated. * #211 Var scoping optimizations * #212 Illidium Scaffolding Templates * #213 Configuration file now named: !ColdBox.xml.cfm or config.xml.cfm * #214 Testcontroller * When unit testing relocations, the setnext event will now save the event and querystring in the request collection for assertions. * #215 Performance Optimizations * #217 Eclipse Dictionaries Updated * #218 !ColdBox Cheat Sheet Updated * #219 JQuery updated to 1.1.3.1 * #220 rc scope can now be found natively in all layouts and views. No need to declare it. This does not apply to handler/plugins. * #221 Logger plugin has been optmized and its 50% faster. You can also define the maximum number of archives to keep in the rotation. == Version 2.0.2 ( June 23, 2007 ) CODENAME: Proverbs 3:5 *6 == * Full Railo 2.0 Support * Full !BlueDragon 7 support * Application Template updated with new Unit Testing Suites. * New and Updated Eclipse Snippets. * New and Updated online guides. * #172 Discovery of CFML engines, framework adapts to each engine : Railo, BD and Adobe. * #173 !BlueDragon 7 Charting now enabled. * #182 Unit Testing Controller created, it now support setnextevent And Test Suites * #191 New config layout setting: !DefaultView * You can now declare a default view to render if now view has been selected. * #184 New Request Context (Event) methods: get *setDefaultLayout, get *setDefaultView, get *setViewLayouts * #179 Logger compliance to coldfusion logs and viewable via CF8 eclipse plugins. * #180 Event name is now configurable via the config.xml and you can even change the convention framework wide via the settings.xml or !ColdBox Dashboard. * #181 !ExceptionService Fix * if custom bug report fails, error calling exception handler * #174 #175 Sample Applications Fix * #185 The !BugReport has been updated to use the new request context methods. * #191 New Layout setting: !DefaultView, you can now also choose a default view with no need to set it. This is an awesome tool for website prototypes. * #192 Updated method for handlers: includeUDF( udf_file ), this method was used internally by the framework to do method injections to event handlers. This is a great way to implement mix *ins and change the behavior of a handler by injection. You can now do injections at runtime for both event handlers and plugins. * #193 Critical Fix on Concurrency issues when reloading constantly or framed versions due to name locking. * #194 Concurency lock updates for the OCM. * #195 Introducing the !ColdboFactory.cfc part of the extras folder. This factory is to be used via coldspring to create configBeans, plugins and a reference to the running application's !ColdBox controller. For an in depth guide, please see the coldspring guide. * #197 A small fix on the setnextEvent method, where now it just relocates to the chosen front controller. This can be any file now: front.cfm, index.cfm, luis.cfm, anything.cfm == Version 2.0.1 ( May 28, 2007 ) CODENAME: Philippians 3:7-11 == * Mostly critical fixes and updates * #136 #137 *nix critical fixes on case sensitive operations * #139 Timer Plugin critical extension fix. * #140 Cache Panel monitor tab not expanded by default. * #148 Cache contents now sorted with expiration date/time * #141 Sample Gallery changelocale fix * #143 !ColdboxReader invalid login fix. * #144 Config.xsd updated with xs:all not a sequence anymore. * #145 !BlueDragon and CFMX 6.X XMLParser critical read file fix * #146 Logger plugin fix for standalone usage. * #147 !BeanFactory was not populating dynamic cfc's via cfinvoke * #149 Debugger Panel Enhancements and HTML/CSS cleanup. * #150 Cache lock timeouts increased to 30 seconds. * #151 Debugger Timer fails when not initialized. * #152 Critical Error when using Cache JVM Thresholds 500 error * #153 MSSQL 2000 scripts for coldbox reader fixes thanks to Anabel Fernandes from http://www.cfempire.com * #155 Galleon Admin Sample * Paging is invalid * #156 Login sample App Updated * #157 Custom Conventions now added. You can decide what your conventions are for your handlers/layouts/views/config * #158 Refactor.xml * Errors on absolute prefixes. * #159 Finalize Memento's to ColdBox Bean Objects * #160 Bug Report/Debugger enhance to use request Context Methods * #161 Custom Exception Template Included in Application Template * #165 Transfer Sample, MSSQL script is invalid * #166 Config Override Variable * Choose your own config file at startup. * #167 Timer Include Fix Initial testing logic for determining application in debug mode. * #168 You can now do Event Handler Unit Tests!! Hooray!! * Code cleanup * New Dashboard with tons of fixes and additions, look at dashboard's readme. == Version 2.0.0 ( April 28, 2007 ) CODENAME: JOHN 4:14 == * License change to the Apache License, Version 2.0 * New !RequestContext bus. This is in order to enable caching and encapsulation of the request collection. Please see the compatibility guide. Your 1.1.0 and below code will have to be modified slightly to accomodate this. All event handler methods receive the requestContext bus object as an argument called 'event'.The object is also called 'event', for the layouts/views. * Addition of new Application Settings: * !ReinitPassword: used to protect the fwreinit flag. Usage: fwreinit=password * onInvalidEvent: write the event to execute when an invalid event is detected, ehGeneral.dspHome * !HandlerCaching: The framework will now cache your event handlers in application scope. Please turn off in development. This is also an intelligent cache. Look at documentation. * IOCFramework: You can now declare which framework you are using: coldspring or lightwire. * IOCDefinitionFile: Here is where you declare the configuration file to load onAppInit in conjunction with the IOCFramework declared. * !AppMapping setting is now optional, if not set, framework auto calculates. * Deprecation of the !AppDevMapping settings. * Addition of Complex Settings to the config.xml for Arrays and Structures * Arrays use [ ] notation: [1,2,3,4,5] * Structures use { } notation: {name:luis,country:el salvador,state:california} * Two new implicit methods for event handlers: !PreHandler/PostHandler. If you create these methods in your handlers, then the framework will execute them accordingly. * Addition of an 'alias' property to the Datasource element, this is the alias to your name (dsn). This is a mandatory property so please update your XML. {{{ <Datasource alias="blog_dsn" name="myblog" dbtype="oracle" /> }}} * Coldbox OCM (Object Cache Manager) : A facility for in *memory caching. This facility caches your event handlers, plugins, custom plugins and anything you want. Look at API for usage. * The framework has a reap frequency in which once every cycle, the framework will remove objects from the cache that have expired. This way, reaping is not performed on every request. A great way to balance cache access and reaping. Change in the framework's settings.xml * Metadata settings for caching for custom plugins and handlers via the cfcomponent tag. The cachetimeout is in minutes. The cache flag is by default set to true if not set. So if you do not set it explicitly to false, the framework will cache it at the default framework's timeout. * Cache settings override via config.xml.cfm, please see wiki config guide. * Plugins: * Beanfactory.cfc : Addition of the populateBean method. It can now populate a named or instantiated bean from the request collection. Great for setting a bean with form data. It follows the bean contract, thanks to Sanah Ullah * !FileUtilities.cfc : new methods: getJVMFreeMemory(), getJVMTotalMemory(), isCFUUID() * IOC.cfc : Added Inversion Of Control support via coldspring or lightwire. Coldspring is the only one supported now. Lightwire will be added in the next version. * sessionstorage.cfc : New facade plugin to use session scope for permanent values * renderer.cfc: renderExternalview(). Will render an external view. Any type of view: js,gif,etc. * QueryHelper.cfc : New plugin to help you sort and filter queries. * timer.cfc : New plugin to help you time your code. * New argument to plugin factory: !NewInstance it will create a new instance of the specified plugin. * New debugging Panel with object Cache Monitor * Tons of bug fixes, look at trac site. * Sample Applications: * Updated the entire Illidium CFC Generator by Brian Rinaldi. (Pre Flex) * Galleon Forums updated to version 1.7.008 * !ColdBoxReader now moved to a service architecture using !ColdSpring and !ColdBox new IOC plugin. * Transfer Sample Application * The framework now supports multi *package handler layout. you can now define packages for all your handlers due to ColdBox's new event registration system. * The framework now supports for compiled code execution. Event multi-package compiled layouts. * New eclipse snippets. * Refactoring and code optimization. * New ANT scripts. * Addition of the framework pre-compiled: compiled_system == Version 1.1.0 (October 2006) CODENAME: JOHN 3:16 == * Varscoper Checks, Code Optimization and cleanup. * Global Server Installation Method. * CFMX 6.X & !BlueDragon are now fully Supported. * Datasources support via config.xml. You can now use the getDatasource("name") in the event handlers/plugins to retrieve a datsource bean. * Mail Settings bean support. You can now use the getMailSettings() to retreive it. * Messagebox.render(clearFlag) now has a clearFlag in order to clear or not, the message structure after rendering. * Eventhandler.cfc code optimization, no longer need of writing an init method. PLEASE REMOVE THEM unless you have any code that needs to be executed every time an event is called. Look at: http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/cbEventHandlersGuide * Renderview can now accept a view name as a parameter. You can then render a view anywhere you want, layouts, within views, event handlers, etc, and as content variables. renderView("myTags/main_menu") * New Plugins: !FileWriter & !StringBuffer * Framework/Application extensions via custom plugins, declared in config.xml.cfm * Coldbox Logging Facilities: ColdBox now provides you with a per application logging facility for errors and custom (error|fatal|information|warning) entries by simplify filling out two settings in your config.xml and using the logger plugin. * Event Handlers/Plugins now have a "rc" scope available, that is a direct line to the request collection. * New Method: paramValue("var name","default") same as cfparam but for the request collection. * cfcViewer plugin was revised. You can now use it to render documentation with any stylesheet. * New i18n and Resource Bundles Plugins based on Paul Hastings work. * ATTESORO JAVA RESOURCE BUNDLES UTILITY IS INCLUDED. * New Method: getSettingStructure( structure, deep_copy_flag ) Retrieves the entire configStruct or the fwSettingsStructure. * Mapping of Exception Types: http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/cbExceptionsList * Check out the latest API: http://www.coldbox.org/api * New Dashboard (Will be release later) * Eclipse Snippets * New sample applications: i18n Gallery, samples gallery, coldboxreader, Illidium CFC Generator == Version 1.0.2 (July 2006) == * !CustomHandler receives the !ExceptionBean via the request collection. * Eliminated unused files, code cleanup. * !JavaLoader 0.2 plugin integration (Could not wait to release this) * datasourceBean is in place, forgot to include it. == Version 1.0.1 (July 10, 2006) == * Fixes for !ApplicationStartHandler. == Version 1.0.0 (July 5, 2006) == * First public beta version == Version 0.9.X (June 2006) == * Version updated to 0.9.x due to the fact that I had a name change and complete rewrite of the app from my !TeXtus framework that I developed last year for private use. ---- AS ALWAYS, VISIT THE WIKI FOR THE LATEST DOCUMENTATION == THE DAILY BREAD == "I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" Jn 14:1-12