Blog

ColdBox 3.0.0 M5 Released!

Luis Majano April 20, 2010

Spread the word

Luis Majano

April 20, 2010

Spread the word


Share your thoughts

Hey everybody, its M5 time!  After several months of intense work we arrive at our almost last milestone in our road to 3.0.0 greatness.  One more milestone and we go gold!  This milestone is dear to my heart as it includes one of my favorite new features of ColdBox, ColdBox Modules!  We have also managed to document pretty much every single update and fix for the current milestone and we have also now managed to document ALL the ColdBox plugins.

But as usual, we have laid out all the tickets that where closed in this milestone and then a brief rundown of the major pieces that where completed in this release cycle.  Also, please note the tickets that have a (compatibility) tag on them.  That means that it could break old 2.6 code if implemented the old ways.  Again, also refer to the compatibility guide for the latest updates on migrating your code to 3.0.0 standards.



3.0.0 M5
Milestone Tickets:
http://coldbox.assembla.com/spaces/coldbox/milestones/135865-3-0-0m5

138ColdBox Modules
763new base test case for testing model objects. Ability to give you a mocked ready model object
873setNextEvent reworked for 3.0.0 too many obscure parameters, setNextRoute & relocate will now be deprecated (compatibility)
915setNextEvent updated for compatibility varStruct changed to persistStruct (compatibility)
916persistVariables update from varStruct to persistStruct on arguments (compatibility)
917Update testing so we can do unit testing of plugins
918Update testing so we can do unit testing of interceptors
920New useSSL element for redirecting via SSL in the security interceptor
949profilers monitor brocken in M4
950Update integration testing to fire off pre and post process interception points as part of lifecycle (COMPATIBILITY)
951Exception when using the COLDBOX_CONFIG_FILE setting on Application.cfc, the loader is not reading the override first
953request context new method: getHTTPHeader(key,default) utility function to get a HTTP header
954contention issues when dealing with event caching on the same event and different contexts. Might produce cache data from the same event with diff data.
955Add more error trapping on policies when high load ocurrs, as sometimes arrays are not verified for sorting.
956New cache method: clearEventMulti() to allow for the clearing of multiple event cache entries using regex.
957Enhance event caching to allow for multi-host applications
958No more inheritance needed for handlers, plugins or interceptors. (Completely optional now)
961New helper convention for view folders, create a helper with the name of the folder the view is contained on: ex: folder=category, helper=categoryHelper.cfm
964due to cf9 persistent cfc's dumping them in the debugger panel causes performance issues
965ses convention name value pairs not evaluating empty spaces: /var1/val1/var2//page/3
967Module directives to control modules startup
969addition of "patterns" attribute to the Environments interceptor for regex matching.
971New DSL to autowire interceptor objects: coldbox:interceptor:name
974Ability to load LogBox via new DSL in configuration programmatic approach
975New cool HTMLHelper plugin to help you do well, HTML stuff
976Update testing so we can do unit testing of handlers standalone, meaning targeted testing, not integration testing
977new autowire DSL: coldbox:fwSetting:{setting}, coldbox:fwConfigBean
978getSettingsBean() new argument: fwSettings:Boolean, so you can also get a config bean of coldbox settings
980new debugger interception points: beforeDebuggerPanel, afterDebuggerPanel


So the major features to look out for on this release are the following:

ColdBox Modules
The ability to create modularized ColdBox sub-set applications in the same way you are used to building ColdBox applications. Actually, just add one more simple CFC and you got yourself a module.  Read more here.


Simple CFCs
No more inheritance on plugins, handlers and interceptors.  You heard that right!  We have moved to a decoration at runtime model and it works fantastic.  But don't worry, if you like your inheritance, you can keep it, we don't discriminate.  However, we believe the simple CFC approach brings in more benefits as you are not bound to core classes when building these objects.  You can apply more OO techniques, test faster and code is cleaner.  Not only that, this is huge for plugins as ANY CFC can be a plugin now. Read more here

ColdFusion ORM Support
Thanks to Spring Hibernate Template inspirations, we have released our own Hibernate support classes for ColdFusion ORM.  These support classes include, Hibernate-ColdBox event handling bridges, generic entity service layers and virtual entity service layers.  We have also created a new plugin called ORMService that can act as a cool generic service layer.  We have expanded our autowiring DSL to now include the wiring of these entity support classes anywhere.  There is so much wealth of code here that it is better just reading out the capabilities first hand:
Expanded Unit-Integration Testing
We are expanding our testing capabilities and now providing 4 more base test classes to help you unit test:
  • Plugins
  • Interceptors
  • Handlers
  • Model Objects
You can now specifically unit test each of these objects and not only that, we mix in some MockBox goodness at the same time and enable you to do mocking on any of them.  Check the docs out.

SetNextEvent() Revamped
Our setNextEvent() method has been revamped to support full URL relocations and full relative URL relocations.  All internal calls now filter to setNextEvent(), so please check your old unit tests or code as now setNextEvent() is king!

Security Interceptor now handles SSL
The security interceptor rules engine now supports a new <useSSL> element that can be used to redirect with or without SSL on a per rule basis.

Easily get HTTP Headers via the RequestContext
The request context object has a new method called: getHTTPHeader(key,[default]) that can help you easily get HTTP headers and even with some cool default values if not found.

Caching Updates
We are now ready to start on our multi-cache configuration and provider release as our cache core is now more solid than ever.  We also updated the event caching mechanisms to allow for multi-domain event caching and managed to include some cool new methods: clearEventMulti()

New Plugin: HTMLHelper
A cool new helper plugin that can do HTML and do it well.  You can create tables, lists from array of entities, queries, etc.  Help you build dynamic headers, manage js and css assets across requests, and soooo much more.  Of course, fully documented.

"patterns" attribute to the Environments interceptor for regex matching.
You can now add a "patterns" attribute to your environment control so pattern matching can be detected instead of simple url matching via the URLs attribte:

<environment name="dev" urls="localhost" patterns=”list,of,regex,patterns”>

Autowire DSL enhancements
The autowire DSL has been enhanced and you now have more choices of wiring:
  • interceptors
  • javaloader
  • logbox
  • fwSettings
  • fwSettingsBean
  • etc.
Lots of LogBox Additions
We have updated the way you configure LogBox by adding a new LogBox DSL declaration language for its settings.  You can also create portable LogBox configurations via simple CFCs using the new LogBox DSL.

ColdBox Debugger Customizations
You can now add your own debugger panels via two new interception points:
  1. beforeDebuggerPanel
  2. afterDebuggerPanel

So check out the what's new docs so you can get informed!




Add Your Comment

(3)

Apr 20, 2010 23:24:50 UTC

by Chris Mullins

HEY! that was my idea! Glad to see it arrive...I thought I was going to have to rewrite coldbox :)

Apr 21, 2010 07:52:24 UTC

by gudmv

Congrats! Very awesome! :)

Apr 21, 2010 10:22:15 UTC

by Marcus Cox

Congrats Luis and team! CB keeps getting better and better!

Recent Entries

Partner with BoxLang and Ortus at Into the Box 2025: Empowering the Future of Modern Software Development!

Partner with BoxLang and Ortus at Into the Box 2025: Empowering the Future of Modern Software Development!

At Ortus Solutions, we’ve always been at the forefront of innovation in the ColdFusion ecosystem. From pioneering modern ColdFusion practices to developing cutting-edge tools and frameworks, we’ve been passionate to help and sup[port the community into shaping the future of web development.That’s why we decided to build BoxLang, our new JVM programming language that not only builds on the strengths of ColdFusion but takes modern software development to the next level.

Maria Jose Herrera
Maria Jose Herrera
December 23, 2024
Why BoxLang When You Have Kotlin, Groovy, Scala, and more…

Why BoxLang When You Have Kotlin, Groovy, Scala, and more…

As we approach a stable release of BoxLang and our continued marketing reaches more folks, many have asked about its purpose. Why create a new language when the JVM ecosystem already includes established languages like Kotlin, Groovy, and Scala, to name a few.

Luis Majano
Luis Majano
December 18, 2024