GraphDiff onSyncNoFilters( final ObjectContext originatingContext, final GraphDiff changes, int syncType) { DataChannelSyncCallbackAction callbackAction = DataChannelSyncCallbackAction.getCallbackAction( getEntityResolver().getCallbackRegistry(), originatingContext.getGraphManager(), changes, syncType); callbackAction.applyPreCommit(); GraphDiff result; switch (syncType) { case DataChannel.ROLLBACK_CASCADE_SYNC: result = onSyncRollback(originatingContext); break; // "cascade" and "no_cascade" are the same from the DataDomain // perspective, // including transaction handling logic case DataChannel.FLUSH_NOCASCADE_SYNC: case DataChannel.FLUSH_CASCADE_SYNC: result = (GraphDiff) runInTransaction( new Transformer() { public Object transform(Object input) { return onSyncFlush(originatingContext, changes); } }); break; default: throw new CayenneRuntimeException("Invalid synchronization type: " + syncType); } callbackAction.applyPostCommit(); return result; }