[
https://issues.apache.org/jira/browse/CAY-2030?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrus Adamchik updated CAY-2030:
---------------------------------
Summary: Capturing a stream of commit changes (was: @PostCommit and
capturing a stream of commit changes)
> Capturing a stream of commit changes
> ------------------------------------
>
> Key: CAY-2030
> URL: https://issues.apache.org/jira/browse/CAY-2030
> Project: Cayenne
> Issue Type: Task
> Reporter: Andrus Adamchik
> Assignee: Andrus Adamchik
>
> Per http://www.mail-archive.com/[email protected]/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?)
> {noformat}public interface PostCommitListener {
> void onPostCommit(ObjectContext originatingContext, ChangeMap changes);
> }
> {noformat}
> 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)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)