2010-06-05: Parsley 2.3.M1 improves Extension APIs
This release marks the begin for a new release schedule where bigger feature updates are delivered in several milestones, with each of them primarily focussing on one functional area. The first milestone released today improves the API for developing extensions and a few other core features listed below. The primary focus for the M2 release will be metadata configuration support for the XML-Object-Mapper and for the M3 release it will be the new family of tags for decoupled bindings in Flex Applications. The final 2.3.0 release will then add the smaller additions and enhancements planned for version 2.3.
Since this milestone includes several large-scale refactorings in core APIs, it is recommended to thoroughly test this version in case you want to use it in production. The likeliness of bugs is slightly higher than with the previous production release (2.2.2). It's expected though that the M2 release will already be good for production use, since from now on the remaining 2.3 releases will be about additions and enhancements and not about larger refactorings of existing functionality. But even if you decide not to use this release in production, it would be great if you would test it with any existing applications using 2.2.x releases and report back any errors.
A lot of the older Extension APIs have now been deprecated. If you created custom tags for previous versions, don't worry if you now get a lot of deprecation warnings when compiling. These are actually well-behaved deprecations: they just signal that this API will be removed in a later release, but in most cases everything should still work as expected.
The following list summarizes the major additions and enhancements of this release:
- There is a new
<DynamicObject>tag that allows to declare dynamic objects in MXML or XML configuration files. Previously dynamic objects could only be added to the Context programmatically. Furthermore this object type (which gets used a lot) has become a core concept and four methods for obtaining dynamic objects have been added to the Context interface. Finally their lifecycle is now synchronized in case they get injected into short-lived objects like DynamicCommands. They will be removed from the Context as soon as the obejct they were injected into gets removed.
For more details see Enhancements for Dynamic Objects - There is a new configuration DSL which simplifies the code you usually write in custom tag implementations to modify
an existing ObjectDefinition. There is also a corresponding ContextBuilder DSL that allows you to easily create
an entire Context from scratch programmatically. This is useful when the primary recommended mechanism (the
<ContextBuilder>tag is not the most convenient option, e.g. in UnitTests or Flash Applications.
For more details see Configuration DSL - Finally there was a major cleanup for IOC kernel APIs. The full effect of this cleanup will become clearer once deprecations have been removed. For example there are now just two types of ObjectDefinitions left: one for dynamic objects and one for singleton definitions. These turned out to be the ones actually getting used in real world applications, and all the other sub-interfaces of ObjectDefinition which only offered subtle differences could be removed. Still the overall functionality is more powerful despite these simplifications since the capabilities of dynamic objects have been enhanced.
For the complete list of smaller enhancements and fixes you may browse through the Jira tickets for the new release.
If you have direct bookmarks to the manual or API docs please update them, since the URL has changed for 2.3.x versions, to keep the old documentation available for those still using 2.0, 2.1 or 2.2.
You can download the new version here.