ColdBox RC2 includes some new features and bug fixes to complete the entire feature release schedule for version 2.6. There will be no more release candidates after RC2 but the Final Release in July. We are extremely happy to introduce some cool new features we have been working on for quite a while now. So please enjoy this RC update and stay tuned for the final 2.6 FAITH release in July. As always, you can visit the What's New wiki page for all the in depth document. All of the documents in the wiki are in Revision State and almost all of them have been revised for version 2.6. We are expecting to complete our documentation revisions by July, so keep posted to the wiki timeline as guides are being updated with the latest and greatest documentation for the 2.6 release. Below are also some announcements:
The ColdBox Platform:
The following diagram shows the ColdBox Platform and all of its components. This gives you a better understanding of how ColdBox is not a mere MVC framework but an application platform and a set of developer tools.
The Future of The ColdBox Dashboard:
Many have requested that the source for the dashboard be opened. I have been hesitant due to the business model I wanted to achieve with it. However, the new model that will be followed int the ColdBox Dashboard will be a modules model. This new model will permit me or any third party to create modules and sell them or distribute them free of charge and then be install into the dashboard application. Therefore, in the next release, the ColdBox Dashboard will be open sourced under the same Apache 2 License, but with some commercial restrictions that are still to be determined. This will give creative freedom to administrators, developers and the like to use the dashboard as a utility for rapid application development, monitoring and documentation. The latter is what I will be currently concentrating on for a future release, more monitoring and documentation tools to help developers and administrators manage their ColdBox applications. These features will be delivered as modules from within the ColdBox Dashboard. So stay tuned as work progresses and more ideas solidify. So no more compiled Dashboard, it will be Open Source, for the next release. Now to the good stuff.
- Introducing the new event.renderData() method. This great new method will make your AJAX/FLEX/AIR/REMOTE integrations a breeze. This method will take care of doing data marshaling and delivery for you. All you need to do is tell it what data to return, in what format to return it in and what content type to use. That is it, the framework will marshall the data for you and deliver it either via the the MVC or Remote paradigm.
renderData(type=[JSON|Wddx|plain], data, contentType)
With this new method you don't need to set a view to render or data to return, the framework will do it all for you. Let's say you want to return a query in JSON format, what would you do: event.renderData(type="json", data=myQuery). That is it? Yes, that is it!! That will marshall the query into a json query and return it whether as a browser response or as a coldbox proxy return type. So easy. You can return any data structure in JSON, wddx or plain format. You can choose the content types to use text/html, text/plain, text/xml, anything. You can send in the type to be plain and return your own marshaling of the data. Ajax and Remote integrations could not get any easier.
- The ColdBox Distribution now includes 2 Application.cfc bootstrappers. One that uses inheritance and another one that does not use inheritance. This one was specifically designed for applications running ColdFusion 8 that needed custom per-application mappings to the framework. The Dashboard has also been updated to generate applications with both Application.cfc support files, so the user can choose which one to use.
- Interceptor Service Enhancements: The interceptor service now allows you to register ANY object to act as an Interceptor as long as you instantiate it and create the convention methods that it will intercept. The new registerInterceptor() method will allow you to register ANY instantiated object as an interceptor or you can register interceptors at runtime on core or custom interception points. You can also register custom interception points at runtime if you so desired. Finally, you can now unregister an interceptor from an interception state programmatically.
- The interceptor service also includes several new methods for metadata information. You can use this metadata to monitor and see all the interception points, the registered interceptors, the registered states, and so much more.
- Autowire Interceptor + Bean Factory Autowiring enhancements. Autowiring will use annotations or metadata via the cfproperty tag to read an object's dependencies. Not only can the autowire logic work by using the IoC containers like ColdSpring and LightWire, but 2.6 introduces the ability to autowire objects by using the ColdBox Cache!! That's right, you can place objects in to the cache or use the IOC Object caching features and autowire your objects from the cache instead of the IoC Containers. You can do all of this by just setting the different type in the cfproperty metadata:
If you use the ocm type, it will try to autowire from the ColdBox Object Cache Manager, if not it will autowire from the IoC container.
- The bean factory plugin has been updated to include the autowire code so you can use it to autowire objects on demand. Go ahead and inject it via ColdSpring and use it in your model objects or services to autowire anything. It uses the same conventions as the autowire interceptor and can be used on any object.
- The bean factory plugin has also a new method populateFromQuery() that you can use to populate a bean by passing in a query. You can even choose which row you want to use.
- Two new plugins: feedReader and feedGenerator.These plugins have existed and been tested for quite a while now in the ColdBox code depot, but where never there yet to be in the core release. They finally are. They support RSS and ATOM feeds, ISO9601 and RFC822 Date formatting with locale and epoch offsets, RAM or FILE caching for feed reading and even reading feeds from URL/file or variable. The two plugins are extremely fast, have great caching interfaces and work in ALL CFML ENGINES.
- Resource Bundle new setting: UnknowTranslation - A Developer can set a default message to show when a translation is not found on a resource bundle.
- New Setting: ViewExternalLocation. This was the last piece of the external locations algorithm for plugins and handlers. Now you can set a folder or location to contain views that can be used in your application seamlessly as if they where placed in your conventions directory. This gives you great flexibility when creating applications that can share views, or applications that can create distributable modules or drop and play modules.
- RenderExternalView() can now also use the same caching parameters like the renderView() method. So now you can cache external views as well.
- SES Optional variables. You can now declare optional variables on your ses routes and ColdBox will create the different route permutations for you:
Will now be translated into three routes for you to handle the different permutations, just by adding a simple ?
- New Eclipse Plugin Update. The eclipse plugin for documentation has been updated and is now version 1.0.2, so please update from your eclipse installation.
- Dreamweaver syntax highlighting is now included in the distribution thanks to Aaron Roberson.
- Two downloads for ColdBox from now on. The new ColdBox will be released in two formats: Bundle and Standalone. The bundle will include all the samples, extra downloads, the framework and much more. The standalone version will only include the framework, the Application Template and the install folder.
Bug Fixes & Optimizations
- Updates to the internal timer codes. Speed improvements and some logic encapsulation
- Fixes to Form/URL variables on remoting calls.
- Base services optimizations
- RenderExternalView() was not appending a .cfm to the view when rendering.
- SES interceptor not matching correctly location of routes from the beginning of the path.
- Application.cfc integration was optimized.