Create a Custom Callback Handler

Create a custom callback handler if the application requires a callback (for example, to allow the client framework to provide notification of synchronization results).

import com.sybase.persistence.DefaultCallbackHandler;
……
public class Test {
  public static void main(String[] args) {
    XXDB.loginToSync();
    XXDB.registerCallbackHandler(new MyCallbackHandler());
    GenericList sgs = new GenericList( 2 );
    sgs.add(SortDB.getSynchronizationGroup("sg1"));
    sgs.add(SortDB.getSynchronizationGroup("sg2"));
    XXDB.beginSynchronize(sgs, new SynchronizationNotification());
  }
}
class MyCallbackHandler extends DefaultCallbackHandler
{
  public int onSynchronize(GenericList groups, SynchronizationContext context)
  {
    if ( context == null )
      {
        return SynchronizationAction.CANCEL;
      }
    if (!(context.getUserContext() instanceof SynchronizationNotification))
      {
        return super.onSynchronize(groups, context);
      }
    switch (context.getStatus())
      {
        case SynchronizationStatus.STARTING:
          return beforeSynchronize(groups);
        case SynchronizationStatus.FINISHING:
          return afterSynchronize(groups);
        default:
          return SynchronizationAction.CONTINUE;
      }
  }
  private int beforeSynchronize(GenericList groups)
  {
    // ..... logic before sync
    if ( groups == null || groups.size() == 0 )
    {
      return SynchronizationAction.CANCEL;
    }
        
    return SynchronizationAction.CONTINUE;
  }
  private int afterSynchronize(GenericList groups)
  {
    // ..... logic after sync
    if ( groups == null || groups.size() == 0 )
    {
      return SynchronizationAction.CANCEL;
    }
    return SynchronizationAction.CONTINUE;
  }
}