cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAY-2030) @PostCommit and capturing a stream of commit changes
Date Tue, 29 Sep 2015 09:29:05 GMT

    [ 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 <andrus@objectstyle.com>
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/dev@cayenne.apache.org/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)

Mime
View raw message