[
https://issues.apache.org/jira/browse/CAY-2030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14934915#comment-14934915
]
ASF GitHub Bot commented on CAY-2030:
-------------------------------------
GitHub user andrus opened a pull request:
https://github.com/apache/cayenne/pull/75
CAY-2030 @PostCommit and capturing a stream of commit changes
(also refactoring integration tests in lifecycle to have a common
superclass)
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/objectstyle/cayenne CAY-2030
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/cayenne/pull/75.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #75
----
commit 8d01974897767535186ef10dbc888c74758194f1
Author: Andrus Adamchik <[email protected]>
Date: 2015-09-29T08:47:46Z
CAY-2030 @PostCommit and capturing a stream of commit changes
(also refactoring integration tests in lifecycle to have a common
superclass)
----
> @PostCommit and 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. ObjectChangeSet - an object that captures all changes for a single
> ObjectId (including the change of ID itself)
> 1. ChangeCaptureFilter : A filter that captures all changes before and after
> the commit (including generated PKs returned from DB) and stores them in a
> map of <ObjectId,ObjectChangeSet>. 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 annotation:
> {noformat}
> @PostCommit
> {noformat}
> 4. Listeners will be registered same way as other Cayenne listeners, and will
> currently take the entire change set of the commit. Listener method format:
> {noformat}
> // the arguments that can be injected in the listener method
> @PostCommit
> void postCommit(ObjectContext originatingContext, Map<ObjectId,
> ObjectChangeSet>)
> {noformat}
> 5. Context provider - a DI-supplied context provider that can give us client
> IP address, identity name, etc.
> For now there is no per-entity filtering, and the whole batch of audit data
> is generated and passed to the listener. It can do its own filtering of
> course.
> (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)