/* * ==================================================================== * 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.wc; import java.io.File; import org.tmatesoft.svn.core.SVNURL; /** * The <code>ISVNExternalsHandler</code> provides interface for user defined callbacks which * are used to skip externals definitions processing in some operations. * * <p/> * Such handlers, if provided, are used in checkout/update, wc-to-url copying operations. * * @version 1.3 * @author TMate Software Ltd. * @since 1.2 */ public interface ISVNExternalsHandler { /** * Default implementation. * This implementation is used whenever there is no implementation provided by the user. * The <code>handleExternal()</code> method of this implementation always returns * <code>[externalRevision, externalPegRevision]</code>, i.e. those external revision and peg revision * which are passed to it. */ public static final ISVNExternalsHandler DEFAULT = new ISVNExternalsHandler() { public SVNRevision[] handleExternal(File externalPath, SVNURL externalURL, SVNRevision externalRevision, SVNRevision externalPegRevision, String externalsDefinition, SVNRevision externalsWorkingRevision) { return new SVNRevision[] { externalRevision, externalPegRevision }; } }; /** * Handles an external definition and says whether to skip it or not. * This method receives external definition parameters and returns whether * <span class="javakeyword">null</span> to indicate that this external definition must be excluded * from processing (for examle, not updated during an update), or a non- * <span class="javakeyword">null</span> array. This array should contain at least two {@link SVNRevision} * objects [revision, pegRevision] which will be used by the operation instead of * <code>externalRevision</code> and <code>externalPegRevision</code> respectively passed into * this handle method. * * <p/> * <code>externalWorkingRevision</code> is always {@link SVNRevision#UNDEFINED} for update/checkout operations. * * @param externalPath path of the external to be processed * @param externalURL URL of the external to be processed or <span class="javakeyword">null</span> * if external is about to be removed * @param externalRevision default revision to checkout/copy external at or update to * @param externalPegRevision default peg revision to use for checkout/update/copy of external * @param externalsDefinition raw <span class="javastring">svn:externals</span> property value * @param externalsWorkingRevision current external working copy revision (relevant only for wc-to-url * copying operations) * @return array of {@link SVNRevision}s in form of {revision, pegRevision} or * <span class="javakeyword">null</span> to skip processing * of this external */ public SVNRevision[] handleExternal(File externalPath, SVNURL externalURL, SVNRevision externalRevision, SVNRevision externalPegRevision, String externalsDefinition, SVNRevision externalsWorkingRevision); }