2009-04-28: Pimento 1.1.0 improves internal architecture
This release is a major update, since large parts of the internal I/O architecture have been rewritten. The internal design is now much cleaner than with 1.0 releases and in particular more robust for batch invocations. If you invoke multiple EntityManager operations or custom remote service methods within the same Flash execution frame they will now be bundled into a single HTTP request and single transaction. When converting entities to their snapshot representations which will be sent to the server, the framework now makes sure that any entity which might be used in more than one of the bundled invocations gets processed only once. This makes merge operations even more efficient. Furthermore there is now an internal check that entities with pending changes (merge operations not yet acknowledged by the server) cannot be used in a different remote call inbetween.
The only larger addition to the feature set is a new AS3 Metamodel API. This allows you to reflect
on persistent entities and all their managed property types. The entry point for the new API is the new EntityManager.metamodel
property.
Migrating from version 1.0.x to 1.1.x
If you are only using Cinnamon you don't have to change anything, the release is fully backwards-compatible.
For Pimento the AS3 side is also fully backwards-compatible, as the EntityManager interface only got some additional properties and
method without changing the existing ones. The only things that need to be adapted are server configuration (Spring XML and Java annotations).
For the Spring configuration you have to use the new templates included in the download and the sample app. Configuration is now split
into 2 files (jpa-spring.xml and pimento-spring.xml). The @Managed annotation has also been modified.
The Operation enumeration used to specify the permitted operations for an entity had to be simplified. It now only contains
the constants LOAD, PERSIST, MERGE and REMOVE.
You can download the new version here.
Release Notes - Pimento/Cinnamon - Version 1.1.0
Bug
- [PMT-204] - Type hierarchy for polymorphic associations and collections not handled correctly
New Feature
- [PMT-60] - Expose Entity Metamodel API in AS3
- [PMT-180] - Support for Non-JPA data sources
- [PMT-192] - Add createProxy method to AS3 EntityManager to allow to create an uninitialized proxy on the client
- [PMT-201] - Create ServiceRequestProxy for deferred or delegated Cinnamon requests
Improvement
- [PMT-65] - Refactor Pimento's internal AS3 APIs for configuration, initialization and wiring of services
- [PMT-177] - Improve Pimento Batch Request
- [PMT-178] - Refactor Transaction Management
- [PMT-188] - Concurrency control for entities with pending operations
- [PMT-193] - Pimento Interceptors should not be called from within JPA EntityListeners
- [PMT-195] - Refactor class hierarchy of snapshots in AS3 and Java
- [PMT-197] - Refactor handling of embedded types
- [PMT-198] - Create separate hierarchy of OperationHandler classes that manage parameters and return values of EntityManager operations
- [PMT-199] - Simplify configuration options for permitted operations for each entity
- [PMT-200] - Move DbUnit integration test support service to separate Spring configuration file
- [PMT-203] - PimentoConfig should throw event when it is fully initialized (all metadata has been loaded)
Task
- [PMT-186] - Update dependency to Spicelib 2.0.1
- [PMT-194] - Manual: Error in code example in section 5.3
- [PMT-202] - Manual: Document changes and additions in 1.1.0
- [PMT-207] - Manual: Include example for configuration with Parsley 2