Skip to content

Releases: framework-one/fw1

v4.3.0

18 Apr 21:19
Compare
Choose a tag to compare
Merge branch 'develop'

v4.3.0-beta.1

01 Aug 01:47
Compare
Choose a tag to compare
v4.3.0-beta.1 Pre-release
Pre-release
Updated version number to 4.3.0-beta1

Release 4.2.0

27 Mar 17:54
Compare
Choose a tag to compare

A maintenance release:

  • #500 Fix unscoped variables q and a in buildURL()
  • 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 of urlEncodedFormat()
  • #491 Fix trailing & on query string
  • #486 Experimental ColdBox Module support (work-in-progress)

FW/1 4.1.0

02 Jul 02:56
Compare
Choose a tag to compare

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

16 Jun 17:32
Compare
Choose a tag to compare
Pre-release

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

17 Sep 03:59
Compare
Choose a tag to compare

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 OPTIONS verb.
  • 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 loadListener from 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, property declarations that contain a type or default are now ignored for autowiring. In earlier versions of FW/1 (DI/1), such property declarations would have been treated as dependencies and autowired: you could override that behavior for typed properties by specifying omitTypedProperties : true in your configuration. That is now the default behavior. In addition a new omitDefaultedProperties setting has been added, also defaulted to true, which is what tells FW/1 (DI/1) to ignore property declarations that contain a default. If you need to restore the pre-4.0 behavior, add omitDefaultedProperties and/or omitTypedProperties to your configuration, set to false.
  • 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 for cljcontroller.cfc.
  • 442 - In Alpha 1 and Beta 1, the decodeRequestBody setting was called enableJSONPOST. As a migration aid, attempting to set enableJSONPOST will throw an exception saying you should use decodeRequestBody instead.
  • 441 - decodeRequestBody handles 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.facade component 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 access renderData() builder and add header() to set HTTP response headers.
  • 411 - Add headers argument 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 omitDefaultedProperties and omitTypedProperties settings.
  • 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 init() 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 $RESOURCES to provide per-resource error handling. This can be disabled via the perResourceError setting.
  • 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 decodeRequestBody tells FW/1 to deserialize the JSON-encoded body of an HTTP request.
  • 388 - The statusCode and jsonpCallback arguments to 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 preflightOptions tells FW/1 to provide built-in support for HTTP OPTIONS. An additional setting optionsAccessControl allows you to fine tune the Access-Control-* headers returned.
  • 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 renderData() type may be a function/closure that returns contentType, rendered content, and an optional writer for delivering the data to the browser.

Bug Fixes

  • 449 - Fix race condition in DI/1's bean resolution caching.
  • 446 - Fix bug in $RESOURCES when nested resource appeared in multiple resources.
  • 440 - Improved thread safety on application reloading. Even reloadApplicationOnEveryRequest : true should be safe now!
  • 429 - Removed expandPath() in calls to cachedFileExists().
  • 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

26 Jul 19:04
Compare
Choose a tag to compare
Pre-release

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

12 Jul 19:30
Compare
Choose a tag to compare
Release 4.0.0 Beta 2 Pre-release
Pre-release

Changes since Beta 1:

  • #442 enableJSONPOST has been renamed to decodeRequestBody. Using enableJSONPOST will 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

11 Jul 19:36
Compare
Choose a tag to compare
Release 4.0.0 Beta 1 Pre-release
Pre-release

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 reloadApplicationOnEveryRequest should be thread safe now)
  • #441 Support URL-encoded form data (for POST / PUT) when enableJSONPOST is true

Note: enableJSONPOST is misnamed now and will probably change before release.

Release 3.5.1

07 Apr 16:25
Compare
Choose a tag to compare

This is identical to 3.5.0 with the addition of #394 added to provided better exception messages from DI/1 when a managed bean has syntax errors.