Hi all,
I made a little bit of progress. I’m doing this:
var myAuditFilter = new AuditFilter();
// Register the filter manually
runtime.getDataDomain().addFilter(myAuditFilter);
Then in AuditFilter implementation I have this method below only. The problem
is ObjDiff doesn’t seem to have any API to get the name of the property, before
and after values.
@Override
public GraphDiff onSync(
ObjectContext originatingContext,
GraphDiff diff,
int syncType,
DataChannelSyncFilterChain filterChain) {
if (diff instanceof ObjectStoreGraphDiff changes) {
// Let's peek
for (var entry : changes.getChangesByObjectId().entrySet()) {
Object objId = entry.getKey();
ObjectDiff objDiff = entry.getValue();
System.out.println("objId = " + objId);
System.out.println("objDiff = " + objDiff);
}
}
return filterChain.onSync(originatingContext, diff, syncType);
}
>
> On Oct 8, 2025, at 10:57 AM, Ricardo Parada <[email protected]> wrote:
>
> Good morning,
>
> I’m looking into replacing our framework developed for EOF that can generated
> an audit document describing what database operations are performed when
> saveChanges() is called.
>
> We capture the object identity, its entity and attributes changed including
> before and after values.
>
> I’m trying to do hook into Cayenne right now to just print the entities
> changed and the attributes before and after values to explore how we would do
> this in Cayenne.
>
> ChatGPT suggested implementing DataChannelSyncFilter and adding a module to
> set it up during configuration. It looks pretty close to what I need except
> it does not compile. So it may be hallucinating.
>
> I would prefer if the hook can be set up right there before calling
> commitChanges(). Because not everything is audited.
>
> Thanks in advance,
> Ricardo Parada