package org.tmatesoft.svn.core.wc2; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext; import org.tmatesoft.svn.core.internal.wc2.SvnWcGeneration; /** * This interface describes Svn* operation runner. * Provides context for the operation. * Defines runner's working copy generation, which is used by * for deciding whether it is applicable runner implementation of the operation. * * @author TMate Software Ltd. * @version 1.7 * * @param <V> type of the operation's return value * @param <T> type of the operation, subclass of {@link SvnOperation} * @see SvnOperation * @see SvnOperationFactory */ public interface ISvnOperationRunner<V, T extends SvnOperation<V>> { /** * Returns whether this runner is applicable for the operation on concrete working copy generation (1.7 or 1.6) * * @param operation operation that needs runner * @param wcGeneration working copy generation * @return <code>true</code> if the runner is applicable, otherwise <code>false</code> * @throws SVNException */ public boolean isApplicable(T operation, SvnWcGeneration wcGeneration) throws SVNException; /** * Implementation of operation's <code>run</code> method for concrete working copy generation * * @param operation operation that needs to be executed * @return execution result value of operation's return type * @throws SVNException */ public V run(T operation) throws SVNException; /** * Sets operation's context * * @param context context of the operation */ public void setWcContext(SVNWCContext context); /** * Resets runner's working copy generation. * * @param detectedWcGeneration new working copy generation for the runner */ public void reset(SvnWcGeneration detectedWcGeneration); /** * Returns runner's working copy generation it is able to operate on. * * @return working copy generation of the runner. */ public SvnWcGeneration getWcGeneration(); }