We are excited to announce the general availability of ColdBox 4.2.0. This release includes tons of fixes but also great new features and speed improvements. If you have CommandBox installed, you can upgrade now by just typing: box update coldbox or get started with a new ColdBox app by typing: box coldbox create app --installColdBox.

 

 

Here is a synopsis of the major feature updates and improvements in this release.

Travis Integration

Travis-Ci

All pull requests will now have Travis integration to verify the consistency and quality of them. This will also help promote our collaborators to enhance our test suites and feel good that what they are sending doesn't break the core. Check out our new Travis page: https://travis-ci.org/ColdBox/coldbox-platform

CommandBox Integration

CommandBox

We have fully documented the approach to hack in our source code. This will allow collaborators to just download CommandBox, fork our repo, and type box install && box server start and start collaborating. We are incredibly focused in this release to make it easier for people to collaborate with ColdBox.

Route Support for Integration Testing

Our integration testing method execute() now supports a route and querystring arguments. This will allow you to test any route in your system and make sure that they are parsed correctly by the url mapping and routing services. This is great for testing your RESTFul services and routing.

Get rendered content easily

If you are doing integration tests and you pass in the renderResults argument to the execute() method, you can now very easily retrieve the rendered content from the event object via the new method: event.getRenderedContent(). No more trying to figure out what rc variable it was placed in.

New event.getHTTPBaseURL() method

We have added a convenience method usually used in <base> tags to give you a protocol sensitive base URL for your applicaiton. This will determine if you are in SSL mode or not and give you the rigth base URL.

Population Enhancements

The populateModel method has been enhanced to take in new arguments:

  • memento So you can populate directly with any a-la-carte structure
  • json So you can populate from any JSON packet
  • xml So you can populate from any XML packet
  • query So you can populate from any query

No more config ma!

This update allows you to create ColdBox apps with no ColdBox.cfc configuration object. Great for simple mockups and no fancy configs

No more handlers ma!

Since we introduced modularization, the core app no longer requires handlers to function. You can even create applications with no handlers, just views now.

View Caching Flag

You can now declare a new coldbox directive flag: viewCaching which can enable or disable view caching globally in your application. Great for environments.

Release Notes

New Features

  • [COLDBOX-477] - Update testing docs for collaboration and update core for CommandBox development
  • [COLDBOX-483] - Add a test browser by default to the test harness
  • [COLDBOX-492] - Add a new 'route,querystring' argument to the 'execute' method to allow for SES route testing
  • [COLDBOX-493] - Added a 'memento' argument to the 'populateModel' method to allow for overriding of what struct to populate with
  • [COLDBOX-494] - Added json,xml,query additions to the populateModel() method to allow for more populations
  • [COLDBOX-498] - Update build process for DocBox and travis integrations
  • [COLDBOX-499] - Update and Cleanup of app templates
  • [COLDBOX-500] - Allow for applications with no ColdBox.cfc config, full convention mode
  • [COLDBOX-501] - new convenience method on testing request context to retrieve rendered content: getRenderedContent()
  • [COLDBOX-506] - Refactor app templates to their own repo
  • [COLDBOX-507] - New context method: getHTMLBaseURL() to get a http protocol sensitive request context base url

Improvements

  • [COLDBOX-191] - Flag to turn view caching on/off
  • [COLDBOX-246] - Autowire remote proxies, changed to manual instead of automatic
  • [COLDBOX-348] - Remove requirement to have at least one handler
  • [COLDBOX-472] - Update the documentation URL in box.json
  • [COLDBOX-476] - Review duplication of error object in ExceptionBean.cfc
  • [COLDBOX-486] - Support for german characters for slugify
  • [COLDBOX-495] - Load internal system modules first rather than last in module hierarchy discovery
  • [COLDBOX-496] - Error detail, message empty on CF10 CF11
  • [COLDBOX-503] - Replace StringBuffer with StringBuilder for performance

Bugs Squashed

  • [COLDBOX-429] - Bundling Modules w/ module excludes does not respect excludes
  • [COLDBOX-453] - API docs have broken links
  • [COLDBOX-462] - acf incompatibillty on restful template response object
  • [COLDBOX-463] - addAsset does not recognize urls that ends with say "app.js?123" as js, not css.
  • [COLDBOX-467] - fix for tomcat 8 not removingr repeating slashes on path info
  • [COLDBOX-471] - HTML Helper's startForm() doesn't pick up if current request is HTTPS
  • [COLDBOX-474] - doctype default switch case was on the wrong type, thanks to Hector Cruz
  • [COLDBOX-475] - _counter does not increment in rendering query-based view collections
  • [COLDBOX-485] - Bean Populator not working correctly when ORM entity inherits from other
  • [COLDBOX-487] - Bean populator errors on null values in JSON string
  • [COLDBOX-490] - syntax and wrong argument type matching on exception bean
  • [COLDBOX-497] - double forward slash generated in buildLink
  • [COLDBOX-509] - SES interceptor has poor query string parsing