Blog

Brad Wood

November 13, 2014

Spread the word


Share your thoughts

ColdBox 4.0 is now in Release Candidate and we're tightening down all the screws for the big release.  As 4.0 is a major release of the platform, we've taken the opportunity to really clean up the code, making changes and improvements where necessary.  This includes the exodus of 75% of ColdBox's core code into pluggable modules so you can truly pick and choose what parts of the framework you want.  Some methods such as getPlugin() and getColdBoxOCM() were also removed.  This has naturally modified the framework's API a bit and your 3.x ColdBox app might not run without some tweaking.  

We have a What's New doc as well as a Compatibility Guide for ColdBox 4.0 where we have tried to document any changes necessary to get your codebase switched over.  However, we realize that some of this may take time for you to refactor if you have a larger codebase and we don't want it to keep you from looking at ColdBox 4.0  

That's why I've created a compatibility module for ColdBox 3.x code bases to help them run on the new 4.0 version of the ColdBox platform.  We feel this is a  much better solution than littering the core codebase with additional settings and feature flags.  ColdBox is the only framework with a first-class modular architecture.  Mix that with the incredible extensibility options, and this module has be ability to alter just about anything it wants.  

Only install it if you need it, and remove it once you're finished refactoring your code to the 4.0 standards.  This isn't meant to be a permanent install-- it's just a stepping stone to help you get your codebase up and running until you have time to finish refactoring.  Do feel free to use it in production, though it comes with no warranties or guarantees.  Here's a list of the modifications this module will make to ColdBox 4.x to make it work like the 3.x versions.

Functions and behaviors restored

  • Original getModuleSettings() behavior
  • getPlugin() function
  • getMyPlugin() function
  • getColdBoxOCM() function
  • UDFLibraryFile setting
  • "model" convention for WireBox scan locations
  • coldbox.system.plugin base class

The following WireBox mapping DSL namespaces are restored

  • ocm
  • ocm:{keyName}
  • coldbox:plugin:{pluginName}
  • coldbox:myplugin:{pluginName}
  • coldbox:myplugin:{pluginName@moduleName}
  • coldbox:fwconfigbean
  • coldbox:configbean
  • coldbox:cacheManager
  • coldbox:mailsettingsbean (requires mailservices module)
  • coldbox:debuggerService (requires cbdebugger module)
  • coldbox:validationManager (requires validation module)

This module also comes packaged with all the original ColdBox 3.8.1 plugins, so you only need to install this module and you'll have it all back again.   If you need any of the functionality that was refactored into modules such as ORM, validation, or i18n, just install those modules.  

Known issues:

  • When this module loads, it will copy Plugin.cfc to the coldbox/system directory.  If you uninstall this module, it will not remove that file.
  • Plugins only work for the default convention location of "plugins". 
  • You will still need to change the Application.cfc to use coldbox.system.Bootstrap instead of coldbox.system.ColdBox.  There's really no way around that one.

Installation

The preferred way to install this module is via CommandBox because using a package manager is just so fast and easy.  If you don't have Command Box, grab it real quick from here.  Then CD to your site's web root and run the following:

CommandBox> install cbcompat

If you want to do an old-fashioned installation, just click the download link from ForgeBox, and uncompress the contents of the zip file into your app's modules directory.

If you have questions or suggestions, hit me up on the ColdBox list, or feel free to submit a pull request.

Add Your Comment

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