May 01
Permalink

Agavi 1.0.1 released!

Agavi 1.0.1 is now available for download at www.agavi.org.

This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

The following are worth mentioning:

  • Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
  • Arrays that failed validation are now always purged correctly from request data.
  • Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
  • Caching callbacks in the Execution Filter are now passed the current Execution Container as last argument.
  • It’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
  • Support for document/literal wrapped style SOAP services has been improved.
  • Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
  • A memory leak in AgaviTranslationManager::getLocaleIdentifier() was fixed.
  • Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
  • The bundled Timezone database was updated to version 2009g.
  • Several other minor fixes and enhancements.

As usual, please check the CHANGELOG for a complete list of changes.

Apr 29
Permalink

Agavi 0.11 end-of-life schedule

Today we’re announcing the end-of-life and end-of-support dates for Agavi 0.11.

We will stop providing any changes and fixes after June 30, 2009. One last 0.11 version is scheduled for release shortly after this date.

Security fixes will be provided until December 31, 2009. Releases will be made when necessary.

We will continue merging timezone database updates from newer branches until December 31, unless the storage format or necessary infrastructure changes. However, no releases will be made just for those updates, so you will have to pull the data from the SVN repository branch if you want to remain on the Agavi 0.11 series.

Commercial support is available through our company, Bitextender GmbH, and we are also offering bugfix ports after the official end-of-life date. Please see the Support section on www.agavi.org for details.

We’d like to thank all of you who used Agavi 0.11.x over the last couple of years and helped make it what it is today with your input and feedback, and encourage everyone to upgrade to Agavi 1.0, which packs the same stability, and an even more impressive set of features.

Apr 24
Permalink

Agavi 1.0.1 RC2 released!

Agavi 1.0.1 RC2 is now available for download at http://www.agavi.org/

This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

The following are worth mentioning:

  • Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
  • Arrays that failed validation are now always purged correctly from request data.
  • Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
  • Caching callbacks in the Execution Filter are now passed the current Execution Container as last argument.
  • The bundled Timezone database was updated to version 2009f.
  • It’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
  • Support for document/literal wrapped style SOAP services has been improved.
  • Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
  • A memory leak in AgaviTranslationManager::getLocaleIdentifier() was fixed.
  • Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
  • Several other minor fixes and enhancements.

As usual, please check the CHANGELOG for a complete list of changes.

A final release is to follow soon; we’re waiting for a new timezone database release that is scheduled for early next week.

Mar 26
Permalink

Agavi 1.0.1 RC1 released!

Hello folks,

Agavi 1.0.1 RC1 is now available for download at www.agavi.org

This maintenance release fixes a number of issues over Agavi 1.0.0 and brings a couple of minor enhancements.

The following are worth mentioning:

  • Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
  • Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
  • The bundled Timezone database was updated to version 2009d.
  • Last but not least, it’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
  • Support for document/literal wrapped style SOAP services has been improved.
  • Two regressions related to AgaviRoutingCallback::onGenerate() have been fixed.
  • Handling of slashes and dots in Action, View and Model names has been unified - slashes are now always used internally.
  • Several other minor fixes and enhancements.

As usual, please check the CHANGELOG for a complete list of changes.

Stay strong,

David

Permalink

Agavi 0.11.7 released!

Agavi 0.11.7 is now available for download at www.agavi.org

This maintenance release fixes a number of issues over Agavi 0.11.6.

The following are worth mentioning:

  • Most notable, a race condition in configuration file compilation was fixed that could lead to corrupt compiled files on disk.
  • Exporting values from validators with argument bases is now possible, and it’s possible to control the exact use of keys in the process.
  • The bundled Timezone database was updated to version 2009d.
  • Last but not least, it’s now possible to set session_cache_expire(), session_cache_limiter() and session_module_name() through configuration.
  • Several other minor fixes.

As usual, please check the CHANGELOG for a complete list of changes.

Greetings,

David

Feb 26
Permalink

It's finally done: Agavi 1.0.0 has arrived!

We’re delighted to announce the release of Agavi version 1.0, available for download at www.agavi.org.

The list of notable features is too long to include in entirety here, so I’ll just list the most important ones:

  • New XML configuration infrastructure, now much more capable than before, with native XML support in config handlers, support for XSL transformations, XML Schema, RELAX NG and Schematron validations, separate envelope and content namespaces for configuration files. All fully backwards compatible.
  • Rewritten Routing, now supports arbitrary numbers of callbacks per route, allows “+rss” and “-rss” style gen() calls, supports objects and any other non-scalar value as gen() parameters. It also allows much more consistent and fine-grained control over encoding of values and supports modifications to the execution container from callbacks, and a response can now be returned from a callback to skip any execution.
  • New project configuration system with massive cleanups, support for custom build targets, much improved best practices, can be completely automated through command line arguments, supports Agavi’s deployment approach, allows for more fine-grained control of the build process.
  • Completely new convenience API for accessing validation results.
  • Experimental(!) unit testing system for projects.
  • Execution containers now have their own request method.
  • Support for command line applications.
  • Caching has support for callbacks to control group values and overall caching status dynamically, and sports hooks for stampede protection mechanisms.
  • A rewritten Sample Application with much more best practices and cleaner code.
  • Several improvements for SOAP and REST web services.

Please refer to the CHANGELOG and RELEASE_NOTES files for more detailed information; UPGRADING has a list of changes that might affect you if you’re upgrading from 0.11.x.

I’d like to thank everyone who supported us over all these years, and, of course, our thanks also go to anyone who has contributed to the project. Your support and your inspirations were essential in making the framework what it is today.

We already have great plans for future releases; I’ll keep you posted. A revamped tutorial manual (to be renamed “Guide” soon) will also be published soon.

Take care and make sure to celebrate this release with a bottle of beer, a glass of wine, or at least some cake :)

Feb 23
Permalink

Agavi 1.0.0 RC2 released!

Agavi 1.0.0 RC2 is now available for download at www.agavi.org.

This release fixes one regression in the routing, comes with several improvements to the best practices implemented in projects generated by the project configuration system, and now allows passing of a validation report object to Form Population Filter. Also, a last-minute change in RC1 that made “pattern” attributes optional in routing.xml has been reverted.

As you can see, the number of changes is quite minimal, wich means we’re now extremely close to a final 1.0 release, which you should expect to be released this week.

Feb 16
Permalink

Agavi 1.0.0 RC1 released!

I’m pleased to announce the immediate availability of Agavi 1.0.0 Release Candidate 1. Download it now at www.agavi.org!

We fixed a couple of regressions in beta8/beta9, but nothing dramatic, so updating should, as always, be smooth.

Speaking of which, I’d like to encourage everyone to give this release a try - we’ve been working hard over the last weeks and months to eliminate backwards compatibility problems, and we ourselves have updated several big and complex projects running 0.11 to run on 1.0 without problems. Please test this release thoroughly so we can release a final 1.0 soon!

With Agavi 1.0 now feature complete, the focus over the next couple of days will shift towards documentation and the website, so stay tuned for updates in those areas - we’ll keep you posted, of course!

Stay strong, Agavi nation, and thank you for being so very supportive and so very awesome!

Feb 10
Permalink

Agavi 1.0.0 beta 9 released!

Agavi 1.0.0 beta 9 is now available for download at www.agavi.org.

This release includes a relatively modest number of changes over 1.0.0 beta 8:

  • Testing infrastructure (experimental!) was declared “finished” (it will be changed and improved until at least 1.1)
  • Routing callbacks can now return an AgaviResponse from onMatched() and onNotMatched()
  • Cache group callbacks need to throw an exception of type AgaviUncacheableException now to prevent caching
  • Routing callbacks now have onNotMatched() called by the framework, even if the same callback’s onMatched() method returns false
  • Several regressions were fixed in the new Routing.

As always, the CHANGELOG has a complete list of all changes.

There is, however, one new feature that I’d like to devote special attention to:

A new API for accessing information about the result of a validation run is now available through AgaviValidationManager::getReport(). It is vastly more convenient and capable of the previous APIs which have been deprecated.

The primary instrument for accessing validation result information are query objects, which you can retrieve using AgaviValidationReport::createQuery(). They have methods for defining query filter rules (byArgument, byValidator, byMinSeverity, byErrorName), which form a fluent interface. Methods like has(), count() or getErrorMessages() are available to retrieve information from the resulting collection.

This new interface allows you to query any kind of result from the validation system in just one (albeit long) line of code, and we’re pretty excited about it, because, frankly, the old APIs were a bit of a mess and not very intuitive to use.

Be sure to check out ticket #1022 to see some examples on how to use the new interface.

We’ll release an RC1 very soon now, so stay tuned, friends!

Feb 05
Permalink

Agavi 1.0.0 beta 8 released, fixes vulnerability

Agavi 1.0.0 beta 8 is now available for download at www.agavi.org

This release fixes a number of issues and introduces a bunch of new features and enhancements over beta 7.

Most importantly, this release fixes an attack vector affecting AgaviWebRouting::gen(null) in combination with some web browsers that (in violation of RFC 3986 and earlier versions) do not urlencode certain characters in the URL when making requests to a web server, allowing attackers to craft potentially malicious URLs that lead to a possible cross-site scripting vulnerability. Current and previous versions of Microsoft Internet Explorer are known to exhibit this behavior. We’d like to thank Daniel Kubitza for advising us of this issue.

Please see the associated ticket #1019 for details, temporary workarounds and standalone patches against previous releases.

The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2009-0417 to this issue. This is a candidate for inclusion in the CVE list, which standardizes names for security problems.

As it also fixes a couple of bugs related to handling of request data and validation, upgrading is highly recommended for all users.

A couple of enhancements and changes over 1.0.0 beta 7 are worth mentioning:

  • A brand new Routing implementation (backwards compatible)
  • The move to the new XML config system is officially finished; AgaviReturnArrayConfigHandler remains an old-style handler for the time being
  • Complete support for multiple SOAP services in the same application
  • Command line support (request/response/routing)
  • Support for anti-stampede callbacks in Execution Filter
  • AgaviController::dispatch() accepts an AgaviExecutionContainer as optional second argument
  • Sample App was refactored completely and got some enhancements
  • Support for arbitrary HTTP POST Content Types
  • Automatically decode HTTP PUT payload into request parameters for application/x-www-form-urlencoded Content-Type in AgaviWebRequest
  • Allow relative min and max values using strtotime syntax in AgaviDateTimeValidator
  • Throw named error if “required” condition is not satisfied in validators
  • Streamline date formatting and parsing behaviors when using timezones

Of course, all of the enhancements, changes and fixes from the latest 0.11.6 release are also in this release. We have recently updated our CHANGELOG structure to list changes merged from older version branches under the destination version, so you can quickly get a precise overview of what changes exactly are included in a release.

For a full list of changes and descriptions of important changes, please refer to the CHANGELOG and RELEASE_NOTES.

We will roll another beta this week with a very, very sexy new validation report query API. Once that is done, Agavi 1.0 will be feature complete, and we can start the release candidate cycle.