atuttle edited this page Apr 12, 2013 · 25 revisions

Version 1.3

Released: April 12, 2013

  • Meta / Project Management Changes

    • From this point forward, the master branch will be used for day-to-day development, not just merging in stable releases. Stable releases will still be available for download via the tags page. Should any maintenance releases be necessary, they'll be done in branches created from the applicable release tag.
  • Bugs Fixed:

    • #105 - Static URIs that would match dynamic URIs are now allowed (/user/logout would previously conflict with /user/{userId}). Pay special attention to URI Matching Order.
    • #120 - Added support for */* Accept header value. Thanks to Brian Quackenbush for the patch!
    • #124 - Fixed a Railo-specific bug blocking resources from being loaded when the resources folder isn't in the web root. Thanks to Jean-Bernard van Zuylen for the initial bug report and the pull request!
    • #129 - Fixed a bug that MANY people have asked about recently: when you don't supply any form of requested return format (via header or URL "extension"), the dreaded "your default mime type is not implemented" error was returned. Jean-Bernard van Zuylen provided an epic detailed bug report, as well as the pull request that ultimately fixed it. A regular open source hero!
    • #130 - Fixed a regression in changes to the dashboard to use the new endpoint url param. This one was also reported and fixed via pull request by Jean-Bernard van Zuylen.
  • New Features:

    • Added a new queryToArray helper method for transforming query objects into an array of structures, preserving column name case.
    • #91 - A message is now displayed if Taffy can't find any resources.
    • #99 - Show dashboard without the ?dashboard query param (just browse to the root of your API). See deprecations, below.
    • #102 - Added support for DI/1 bean factory. See this example for a sample implementation.
    • #103 - Added environment-based configuration.
    • #108 - Added helper method getBasicAuthCredentials() to api.cfc (so you can use it in your Application.cfc). It returns a structure with keys username and password, and if NO basic auth credentials have been included in the request then both values will be blank.
    • #109 - Added helper method saveLog() to resource classes, which delegates to your configured exception logger. You may now use: saveLog(cfcatch) from inside a resource.
    • #115 - You can now use properties instead of setters to have Taffy autowire dependencies. (Setters are not deprecated; this is just an additional option.)
    • #117 - Added support for endpointURLParam. Thanks Marco Betschart.
    • #122 - Added support for ETag based caching
    • #128 - Now support Access-Control-Allow-Headers to list allowable headers for Cross-Domain requests. Thanks to Marco Betschart for the bug report and the patch!
  • Deprecations:

Version 1.2

Released: December 27, 2012

  • Bugs fixed:
    • #89 - File Uploads did not work on Railo
    • #93 - Tokens where the expected value could contain a period character caused issues with URL format specification.
    • #97 - Method PUT was not allowed by Access-Control-Allow-Methods header.
  • New Features:
    • #48 - Organizing resources into subfolders of /resources is now supported.
    • #57 - Added the ability to pass data from onTaffyRequest to resources. Add keys to the requestArguments argument, and they will be passed on to the resource, by name, just like URI tokens and query string parameters.
    • #60 - Custom Token Regular Expressions. For examples of using custom regular expressions for your tokens, see Custom Token Regular Expressions.
    • #61 - ALLOW header is returned for every request.
    • #73 - Integration with Hoth and BugLogHQ for exception tracking and reporting. Details
    • #90 - Configuration via "variables.framework", ala FW/1. See also: List of all variables.framework settings.
    • #92 - Format via URI now takes precedence over format via header. (Reasoning)
    • #94 - A new setting was added, allowing you to reload on every request; useful in development.
    • #106 - Made cross-domain support more robust. Now supplies Allow-Origin, Allow-Methods, and Allow-Headers headers.
    • #111 - Changed all references of "defaultRepresentationClass" to simply "representationClass", as we've moved away from supporting multiple classes in all relevant cases.
  • Deprecations:
    • It has been proposed to deprecate the use of ".format" (e.g. ".json") in the URI to specify requested return format because of the difficulty it was causing with the old URI parser. The Parser Rewrite for #93 resolved this issue, so any informal deprecations are no longer necessary. Use .format to your hearts content.
    • Use of ConfigureTaffy and individual setter methods to specify configuration settings is now deprecated in favor of variables.framework.

Version 1.1

Released: June 27, 2012

  • New Platforms:
    • Now fully tested and supported on Railo 3.2+!
  • New features:
    • Extensive test suite added - helpful for contributors to know they haven't broken anything
      • Update test suite to use Tags instead of script so it can be run on any CFML engine (What good are tests if you can't use them to test?)
    • Added support for HTTP "HEAD" verb
    • Added ability to add custom headers to a response
    • Moved mime-type declaration ("this api supports json,xml,etc") into representation class metadata, instead of api-level configuration.
    • Added a set of Eclipse/CFBuilder snippets to help speed Taffy development (it wasn't fast enough already?!)
    • Added ability to manage representation class with internal/external bean factory, as well as resolving dependencies using the bean factory.
    • Added several more example implementations to the examples folder
    • Added getBeanFactory() method to compliment setBeanFactory().
    • #20 - Added setting for cross-domain resource sharing
    • #21 - Added global custom headers
    • #28 - Bean factory now throws an exception when requesting a non-existant bean - Thanks to Brian Panulla
    • #29 - HTTP Method Tunneling - Thanks to Brian Panulla
    • #46 - Added support for ColdSpring AOP on Taffy resources. - Thanks to mgersting
    • Added index page to examples folder for people who may not have directory indexing on, or who are running a platform without it (eg. JRun) - Thanks to Barney Boisvert
    • Added example of rate limiting using onTaffyRequest
    • Support for direct streaming of binary results, such as image streaming, ala PlaceKitten, or a generated PDF (examples included).
    • Added notion of "unhandled paths" (similar to FW/1), where you can specify a set of subfolders inside your API that Taffy will not take over the request lifecycle.
    • Added streamBinary(), streamFile(), and streamImage() methods for streaming in memory files, files on disk, and images, respectively; as well as withMime() method for specifying the mime type of the streamed data.
  • Bugs fixed:
    • #19 - JSON input data not properly detected & deserialized into arguments
    • #23 - Various issues with ColdSpring integration - Thanks to Brian Panulla
    • #31 - Error failsafe to display general exceptions in an api-friendly manner.
    • #32 - Issues with periods in token values (such as email addresses or IP addresses).
    • #33 - Error when attempting to redirect from api root to dashboard on internal web server (JRun)
    • #34 - Exception in error handling code for duplicate URI patterns on CF8 and earlier.
    • #38 - Fixed handling of request body for some verbs
    • #49 - Fix for parsing query strings with key-value pairs missing a value (a=1&b=&c=3) - Thanks to Greg Moser
    • #50 Added WEB-INF to git ignore file, for J2EE/Railo users. - Thanks to Dave Long
    • #55 - Support Apache request proxying by stripping the context root from the resources path if it's non-blank - Thanks to Will Coleda
    • Fix errors on startup if Application context is shared with another app & Taffy doesn't get properly initialized.
  • Deprecated features
    • Both registerMimeType() and setDefaultMime() are deprecated as of version 1.1; slated to be removed in 2.0. Use Configuration via Metadata instead.

Version 1.1-rc1

Published: October 27, 2011

Version 1.0

Released: August 23, 2010 - Announcement

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.