コード例 #1
0
  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;
  }