Package org.apache.cayenne

## Interface DataChannelSyncFilter

- All Known Subinterfaces:
    `DataChannelFilter`
  All Known Implementing Classes:
    `TransactionFilter`
  Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface DataChannelSyncFilter

  An interface of a filter that allows to intercept DataChannel sync operations. Sync filters allow to implement chains of custom processors around a DataChannel.

  Example:

       public class MySyncFilter implements DataChannelSyncFilter {
           public GraphDiff onSync(ObjectContext originatingContext,
                                   GraphDiff changes,
                                   int syncType,
                                   DataChannelSyncFilterChain filterChain) {
               System.out.println("Do something before sync");
               // process changes or return some custom diff
               GraphDiff diff = filterChain.onSync(originatingContext, changes, syncType);
               System.out.println("Do something after sync");
               return diff;
           }
       }

  Since:
    4.1
  See Also:
    `DataChannelQueryFilter`, `ServerModule.contributeDomainSyncFilters(org.apache.cayenne.di.Binder)`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `GraphDiff` | `onSync​(ObjectContext originatingContext, GraphDiff changes, int syncType, DataChannelSyncFilterChain filterChain)` |

- - ### Method Detail

    - #### onSync

          GraphDiff onSync​(ObjectContext originatingContext,
                           GraphDiff changes,
                           int syncType,
                           DataChannelSyncFilterChain filterChain)

      Parameters:
        `originatingContext` - originating context of changes
        `changes` - diff that is being processed
        `syncType` - type of sync; possible values: `DataChannel.FLUSH_NOCASCADE_SYNC`, `DataChannel.FLUSH_CASCADE_SYNC`, `DataChannel.ROLLBACK_CASCADE_SYNC`
        `filterChain` - chain of sync filters to invoke after this filter
      Returns:
        final context diff
      See Also:
        `DataChannel.FLUSH_NOCASCADE_SYNC`, `DataChannel.FLUSH_CASCADE_SYNC`, `DataChannel.ROLLBACK_CASCADE_SYNC`