Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-2030

Capturing a stream of commit changes

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.0.M3
    • 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

          Activity

            People

              andrus Andrus Adamchik
              andrus Andrus Adamchik
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: