cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Inclusion of cayenne-lifecycle in 3.1
Date Wed, 26 Jan 2011 15:35:48 GMT
You may remember a discussion of the mixin concept. Since then I've integrated the cayenne-mixin
module into 2 of my projects and have been gradually migrating various custom-coded solutions
to cayenne-mixin. This resulted in a few cool generic features in Cayenne core (lifecycle
annotations, DataChannelFilter), as well as a number of new things in the mixin module. 

What we ended up with is a neat generic mechanism that I would call "annotations-based lifecycle
and workflow management". Mixins (the ability to add special runtime properties to existing
objects) are just one aspect of it, and I haven't solved any of the limitations that we discussed
before. Nevertheless the new framework is extremely useful for higher level event-driven programming
in Cayenne (lower level being managing per-event per-object lifecycle listeners).

It has a few generic concepts - UUID/Referenceable, ChangeSet, and a few defined "event handlers"
(or "workflow handlers") for audit management, cache invalidation. Users can create their
own business-specific extensions and their own lifecycle annotations (which I am doing actively
in my apps).

So I am suggestion to move cayenne-mixin to the main development tree from sandbox (under
the name "cayenne-lifecycle") and include it in 3.1 releases as a separate jar. This will
allow our users to get the "official" builds of cayenne-lifecycle, and hopefully won't create
release scheduling conflicts between the core and lifecycle.

My hope that this meta-programming facility will streamline implementation of many common
scenarios for our users.

View raw message