Cairngorm 3 provides a set of optional Flex libraries released under the Cairngorm License.
These are designed to support the Cairngorm 3 architecture by providing utilities for i.e. navigation, Object Relational Mapping, validation, module loading, reduction of view behaviour, task processing and popup management.
The Cairngorm 3 Architecture described in Cairngorm Guidelines can also be applied with other third-party libraries and frameworks. Several of the Cairngorm 3 libraries are implemented as extensions to third-party frameworks such as Parsley, Swiz and Spring ActionScript.
However, other Cairngorm libraries, such as Observer, Popup, Task, Persistence, Design by Contract and Validation are independent of any third-party framework.
A short summary of each library follows, together with links to the download, source code and documentation.
The Design by Contract library allows to assert pre and post-conditions, following the idea of Design by Contract. Its use of conditional compilation ensures that production code remains unaffected.
The Cairngorm Observer library provides a set of non-visual components for declaration in MXML that observe other objects and react to changes in some way and execute view behaviour. These components help to reduce the amount of Script-block logic required in MXML components.
The Cairngorm Popup library contains components for managing the opening, closure and general behavior of popups. They are designed to minimize Script-block logic in MXML components and to reduce code duplication across applications that manage multiple popups.
The Cairngorm Task library provides an abstraction for performing tasks in sequence and parallel. It might be used for coordinating the start-up sequence of an application or for managing a series of asynchronous processes that need to be performed in a certain order.
The Cairngorm Validation library is designed to simplify validation of user input and other data. Instead of declaring validators individually in MXML and coordinating them manually, a group of validators can be defined using the ValidatorGroup component. The validity of the whole group can then be determined as one. Validator groups can be nested and detached from the view and applied to other layers of an application, such as a domain model. Additional components are provided for observing validation rules and updating view components to highlight validation errors.
The Cairngorm Navigation library provides utilities to ease the creation of point-to-point, hierarchical and deferred navigations, global and local history tracking, wizards, and enter and exit interceptions. It can reduce the amount of Script-block logic needed by allowing dedicated objects to control navigational concerns. The current version is implemented as a Parsley and a Swiz extension. A Spring ActionScript extension is currently in development .
The Cairngorm Module library is designed to simplify the configuration, rendering and loading of modular content. Additonally it offers flexiblity to communicate to modules. It contains infrastructure classes, view components, a mechanism for loading and communicating to modular content on-demand in response to Parsley messages.
The Persistence library eases the communication between an Adobe AIR application and an SQLite database. Both use different type systems (relational SQL versus object-oriented ActionScript). This Object Relational Mapping (ORM) library follows an iBATIS approach.
The integration library provides utilities to loosely-couple concerns of the communication with external environments with other client side architectural layers. Aside from sending and retrieving data, it also offers structures to manage global error handling, conflict resolution, and offers presentation components access progress and error information in a loosely coupled way. Supported are currently RPC, data management using LCDS, and LocalConnection. In the current version of the IntegrationParsley and IntegrationDMS libraries are dependent on Parsley. The Integration libray containing the IDataCache utility does not depend on the Parsley framework but uses the Spicelib utility library for reflection on metadata. You can use IDataCache with any IoC framework.
The release of Cairngorm 3.0.21 is published in a Cairngorm 3 maven repository at http://svn.code.sf.net/adobe/cairngorm/code/cairngorm3/maven-repository
Note that from Cairngorm 3.0.18 we decided to drop flex3 support.
For more information about retrieving and following the source code of the SVN repository, click here. You may build this version using Maven from the main build file available at http://svn.code.sf.net/adobe/cairngorm/code/cairngorm3/trunk/
A bug base is available here.