/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.replicator;
import org.tmatesoft.svn.core.SVNCancelException;
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
/**
* The <b>ISVNReplicationHandler</b> is the interface for the handlers
* which are registered to a repository replicator to keep track of the
* replicating process.
*
* @version 1.3
* @author TMate Software Ltd.
* @since 1.2
*/
public interface ISVNReplicationHandler {
/**
* Notifies this handler that the replicator is about to start a next
* revision copying operation. Log information taken from the source
* repository (from where the copy is performed) for that revision
* is provided.
*
* @param source the notifier
* @param logEntry log info about revision changes, author, etc.
* @throws SVNException
*/
public void revisionReplicating(SVNRepositoryReplicator source, SVNLogEntry logEntry) throws SVNException;
/**
* Notifies this handler that the replicator has just finished replicating
* the current revision copying operation. Commit information of the new revision
* committed to the destination repository is provided.
*
* @param source the notifier
* @param commitInfo commit information
* @throws SVNException
*/
public void revisionReplicated(SVNRepositoryReplicator source, SVNCommitInfo commitInfo) throws SVNException;
/**
* Checks if the replicating operation is cancelled. During each
* replicating iteration the replicator simply calls this method. A
* handler implementation should decide if the operation must be
* interrupted or not, and if for some reason it must be stopped (for example,
* a user said it must be cancelled), then the implementor should simply
* throw an <b>SVNCancelException</b>. That will terminate the operation.
* However it won't roll back all the previously iterations committed
* to the destination repository.
*
* @throws SVNCancelException if the replicating operation is cancelled
*/
public void checkCancelled() throws SVNCancelException;
}