Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Per http://www.mail-archive.com/dev@cayenne.apache.org/msg07968.html trying to implement a proper transaction audit. After some thought, I think it should work as follows:
0. A new object design for change tracking: ChangeMap/ ObjectChange / ObjectPropertyChange
1. PostCommitFilter : A filter that captures all changes before and after the commit (including generated PKs returned from DB) and generates a ChangeMap. Will notify the listeners after the commit.
2. A Module that registers the filter (once CAY-2028 is done, the module should also take care of ordering the filter to go inside transaction).
3. Listener interface (TODO: eventually switch to annotations?)
public interface PostCommitListener { void onPostCommit(ObjectContext originatingContext, ChangeMap changes); }
4. PostCommitModuleBuilder to add post commit extensions.
5. Listeners will be added via PostCommitModuleBuilder. TODO: combine with our normal listeners and switch to annotations.
6. For per-entity filtering and further customization reuse @Auditable annotation . Add "confidential" property to @Auditable to allow to securely log changes for properties like passwords, etc.
(since most people would want to run this filter within a TX, an effective usage of this is dependent on CAY-2028; however the implementation is not)
Attachments
Issue Links
- is related to
-
CAY-2028 Wrap DataChannelFilter calls in the main transaction
- Closed