Releases: framework-one/fw1
v4.3.0
v4.3.0-beta.1
Updated version number to 4.3.0-beta1
Release 4.2.0
A maintenance release:
- #500 Fix unscoped variables
qandainbuildURL() - Add
onMissingMethod()pass-thru support to AOP/1 - #496 Allow AOP/1 to accept array of folders (DI/1 already accepted this)
- #493 Use
encodeForURL()instead ofurlEncodedFormat() - #491 Fix trailing
&on query string - #486 Experimental ColdBox Module support (work-in-progress)
FW/1 4.1.0
Lucee 5.x is now officially supported -- because the Clojure integration, introduced in FW/1 3.5, is no longer included in FW/1. You can still use cfmljure for that if you want.
Enhancements include: session scope is now pluggable; a new missingview configuration option; a new onReload() extension point; and more.
For the full list of enhancements and bug fixes, read the FW/1 4.1.0 Change Log.
4.1.0 Release Candidate 1
A bug fix and minor enhancement release for 4.0.0. See http://framework-one.github.io/documentation/4.1/changes.html for full details of changes.
Highlights:
- session handling is pluggable
- missing view handling has been enhanced
- a new
onReload()extension point is available - testing (and the Continuous Integration process) has been simplified and now uses CommandBox and TestBox
- bug fixes in error handling, transient bean population under heavy load, and some other areas
Release 4.0.0
Summary
The focus of the 4.0 release is on improving REST support. Improvements include:
- JSON-encoded and URL-encoded POST / PUT body support.
- Controllers have easy access to HTTP headers.
- Builder syntax for
renderData()result elements. - Support for user-supplied rendering functions.
- Integrated support for HTTP
OPTIONSverb. - Per-resource error handling.
- Setting status text (in addition to status code) in HTTP responses.
- Wildcard HTTP method support.
In addition, DI/1 has had a number of enhancements, including the addition of a builder syntax for programmatically declaring beans.
Breaking Changes
- 443 - Prevented
loadListenerfrom being accidentally inherited and run on a managed subsystem bean factory (it should only run on the main parent factory). This is potentially breaking: if you relied on running load listeners multiple times -- however, that was never a recommended approach. - 400 - By default,
propertydeclarations that contain atypeordefaultare now ignored for autowiring. In earlier versions of FW/1 (DI/1), suchpropertydeclarations would have been treated as dependencies and autowired: you could override that behavior for typed properties by specifyingomitTypedProperties : truein your configuration. That is now the default behavior. In addition a newomitDefaultedPropertiessetting has been added, also defaulted totrue, which is what tells FW/1 (DI/1) to ignorepropertydeclarations that contain adefault. If you need to restore the pre-4.0 behavior, addomitDefaultedPropertiesand/oromitTypedPropertiesto your configuration, set tofalse. - 391 - Adobe ColdFusion 9.0.2 is no longer a supported platform. FW/1 4.0 relies on closure support and therefore requires Adobe ColdFusion 10 or later. Support for Railo and Lucee has not changed.
- 390 - If you override
missingBean()in DI/1, read the documentation carefully as this is now an official extension point with different behavior to previous releases.
Enhancements
- 448 - Added
callClojure()extension point forcljcontroller.cfc. - 442 - In Alpha 1 and Beta 1, the
decodeRequestBodysetting was calledenableJSONPOST. As a migration aid, attempting to setenableJSONPOSTwill throw an exception saying you should usedecodeRequestBodyinstead. - 441 -
decodeRequestBodyhandles URL-encoded form variables, which is typical for PUT, as well as JSON-encoded form bodies (see issue 389 below for the introduction of this setting). - 439 - Add
framework.facadecomponent to make FW/1 accessible out-of-band (for integration purposes). - 434 - Add
getRoutePath()convenience method. - 419 - Add
getCGIRequestMethod()convenience method. - 418 - Allow
factoryBean()to accept function/closure. - 417 - Add builder syntax for bean declarations.
- 416 - Delay bean discovery (where possible) until after declarations are processed.
- 415 - Add support for CFML-only and Clojure-only search paths.
- 414 - Add support for Boot to cfmljure.
- 413 -
layout()may now be called from controllers. - 412 - Add
renderer()to accessrenderData()builder and addheader()to set HTTP response headers. - 411 - Add
headersargument to controllers. - 410 - Clarified license (Apache Source License 2.0), added LICENSE file.
- 409 - Dependency injection uses additional caches to improve
getBean()performance (by a factor of 9x-25x, depending on your usage and your CFML engine). - 407 - DI/1 now has a public
hasParent()predicate method. - 400 - Dependency injection ignores typed/defaulted properties by default. This can be disabled via the
omitDefaultedPropertiesandomitTypedPropertiessettings. - 399 -
getBean()now accepts an optional second argument that can override beans in the factory to provide constructor arguments to be used in the bean'sinit()call. - 394 - Improved error messages when DI/1 attempts to use a CFC that has syntax errors to include filename/line number of the underlying error.
- 392 - A wildcard resource match is generated for
$RESOURCESto provide per-resource error handling. This can be disabled via theperResourceErrorsetting. - 390 - DI/1 now considers
missingBean()to be a fully supported extension point that allows users to handlinggetBean()calls for unknown beans by any means, including creating and returning their own beans. - 389 - A new setting
decodeRequestBodytells FW/1 to deserialize the JSON-encoded body of an HTTP request. - 388 - The
statusCodeandjsonpCallbackarguments torenderData()have been deprecated and a new builder syntax has been added to support all possible parameters available when rendering data, e.g.,renderData( "json" ).data( result ).statusCode( 202 ). - 387 - A new setting
preflightOptionstells FW/1 to provide built-in support for HTTPOPTIONS. An additional settingoptionsAccessControlallows you to fine tune theAccess-Control-*headers returned. - 386 - Routes can now have
$*as an explicit wildcard for the HTTP method. - 385 - The new
renderData()build syntax supportsstatusText()to set the HTTP response status text. - 328 - The
renderData()typemay be a function/closure that returnscontentType, renderedcontent, and an optionalwriterfor delivering the data to the browser.
Bug Fixes
- 449 - Fix race condition in DI/1's bean resolution caching.
- 446 - Fix bug in
$RESOURCESwhennestedresource appeared in multipleresources. - 440 - Improved thread safety on application reloading. Even
reloadApplicationOnEveryRequest : trueshould be safe now! - 429 - Removed
expandPath()in calls tocachedFileExists(). - 427 - Fixed bug that prevented
before()/after()working in Clojure controllers; fixed bug that caused Clojure controller shims to be created twice. - 422 - Fix bug with case insensitive routes.
- 420 - Fix bug in transient autowiring (caused by caching metadata).
- 395 - Corrected calls to
buildURL()in examples.
Release 4.0.0 Release Candidate 1
This includes a minor bug fix since Beta 2 (ensuring a DI/1 load listener will only be executed for the main (parent) bean factory, and not for subsystems, unless those are explicitly configured to have their own load listeners).
Release 4.0.0 Beta 2
Changes since Beta 1:
- #442
enableJSONPOSThas been renamed todecodeRequestBody. UsingenableJSONPOSTwill now throw an exception explaining the change.
This is a breaking change if you were using enableJSONPOST in the earlier Alpha / Beta builds.
Release 4.0.0 Beta 1
Changes since Alpha 1:
- #427 Improve support for Clojure Controllers (incl.
before()/after()) - #429 Remove unnecessary calls to
expandPath() - #434 Add
getRoutePath() - #439 Add FW/1 facade (primarily to support ORM-based usage of bean factories)
- #440 Improve thread safety on reload (so
reloadApplicationOnEveryRequestshould be thread safe now) - #441 Support URL-encoded form data (for POST / PUT) when
enableJSONPOSTistrue
Note: enableJSONPOST is misnamed now and will probably change before release.