Here is the design of the audit framework for everyone's review:
https://issues.apache.org/jira/browse/CAY-2030
The way it will work from the user perspective is this:
// bootstrap the filter by adding an extra Cayenne-provided module to
// runtime. Optionally add your own module that overrides context provider
// (e.g. to store request IP address and user name).
ServerRuntime r = ServerRuntimeBuilder.builder().addModule(new
WhateverModuleNameWeUse()).build();
// register listener
r.getDataDomain().addListener(new MyListener());
// listener code
class MyListener {
@PostCommit
void processAsChangeset(Map<ObjectId, ObjectChangeSet> map) {..}
// optionally can take a changeset serialized to JSON
@PostCommit
void processAsJSON(Map<ObjectId, String> map) {..}
}
Andrus