The 4.3 release is very a minor maintenance release over 4.2.
- 514 Add optional third flag
ignoreMissing(defaulted to false) to
injectProperties()method to allow ignoring of undefined properties in the target bean
See using-di-one for more details
- 522 PreserveKey is not passed when using fw.redirect with Lucee Modern local scope mode
- 518 aop1 cannot intercept if base name in dottedPath is same as another bean
- 513 Remove locking from framework one global controller retrieval
- 516 Add adobe 2018 and specify distribution to test runners
The 4.2 release is very a minor maintenance release over 4.1.
onMissingMethod()pass-thru support to AOP/1
- 486 Experimental ColdBox Module support (work-in-progress)
- 500 Fix unscoped variables
- 496 Allow AOP/1 to accept array of folders (DI/1 already accepted this)
- 493 Use
- 491 Fix trailing
&on query string
The 4.1 release is intended to be a minor maintenance release over 4.0. The following changes are part of FW/1 4.1 and DI/1 1.3.0.
- 466 - Clojure integration is no longer provided out of the box, so that Lucee 5.x can be officially supported.
- 481 -
customTemplateEngine()extension point and
makeMethodProxies()utility function have been added to make it easier to support additional templating engines. An example is provided for
mustachein which the views and layouts are HTML templates rendered by a Java implementation of the Mustache template language.
- 472 - Since Adobe ColdFusion 9 is no longer supported, dynamic method invocations are done via
evaluate()(and so they might be slightly faster).
- 467 - Session scope handling is now pluggable (but still uses
sessionscope by default).
- 465 - The tests have been switched from MXUnit to TestBox and the CI system has been switched from Ant (and explicitly download CFML engines) to CommandBox. The test matrix now includes: Adobe ColdFusion 10, 11, 2016; Lucee 4.5, 5 (current 5.1).
- 460 - New framework option
missingviewcan specify an action to take on a
FW1.viewNotFoundexception, rather than the default
- 452 -
/no longer causes
//to appear in URLs (when calling
- 424 - To partially support the desire to unload bean factory data when FW/1 is reloaded, there is a new extension point
- 463 - A potential XSS vulnerability in the default exception reporting function has been addressed.
- 462 - Addresses a race condition around resolving transients under heavy load. Thanks to John Whish and jcberquist for chasing this down!
- 458 - If an exception occurs during bean discovery, and an application’s error handling causes any DI/1 method to be invoked, it’s likely that
discoverBeans()will be run a second time. Previously, that caused beans to be loaded twice and, if you had
omitDirectoryAliases : true, you would get a new exception (that bean names were not unique) which masked the original exception. Now, if an exception occurs during initialization, bean discovery is considered complete, which should allow the original exception to propagate (even if your exception handling then crashes and burns!).
- 456 -
setLayout()so that if an error occurs in a subsystem, the error handling is rendered correctly, using only layouts from the error action.
- 383 -
redirect()now accepts a
queryStringargument: this was introduced in version 3.5 but never actually worked until now!
The focus of the 4.0 release is on improving REST support. The following changes are part of FW/1 4.0, DI/1 1.2.0, and cfmljure 1.1.0.
- JSON-encoded and URL-encoded POST / PUT body support.
- Controllers have easy access to HTTP headers.
- Builder syntax for
- Support for user-supplied rendering functions.
- Integrated support for HTTP
- 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.
- 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 a
defaultare now ignored for autowiring. In earlier versions of FW/1 (DI/1), such
propertydeclarations would have been treated as dependencies and autowired: you could override that behavior for typed properties by specifying
omitTypedProperties : truein your configuration. That is now the default behavior. In addition a new
omitDefaultedPropertiessetting has been added, also defaulted to
true, which is what tells FW/1 (DI/1) to ignore
propertydeclarations that contain a
default. If you need to restore the pre-4.0 behavior, add
omitTypedPropertiesto your configuration, set to
- 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.
- 448 - Added
callClojure()extension point for
- 442 - In Alpha 1 and Beta 1, the
decodeRequestBodysetting was called
enableJSONPOST. As a migration aid, attempting to set
enableJSONPOSTwill throw an exception saying you should use
- 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
- 419 - Add
- 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
renderData()builder and add
header()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
- 400 - Dependency injection ignores typed/defaulted properties by default. This can be disabled via the
- 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’s
- 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 the
- 390 - DI/1 now considers
missingBean()to be a fully supported extension point that allows users to handling
getBean()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
renderData()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 HTTP
OPTIONS. An additional setting
optionsAccessControlallows you to fine tune the
- 386 - Routes can now have
$*as an explicit wildcard for the HTTP method.
- 385 - The new
renderData()build syntax supports
statusText()to set the HTTP response status text.
- 328 - The
typemay be a function/closure that returns
content, and an optional
writerfor delivering the data to the browser.
- 449 - Fix race condition in DI/1’s bean resolution caching.
- 446 - Fix bug in
nestedresource appeared in multiple
- 440 - Improved thread safety on application reloading. Even
reloadApplicationOnEveryRequest : trueshould be safe now!
- 429 - Removed
expandPath()in calls to
- 427 - Fixed bug that prevented
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