/* * ==================================================================== * 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.internal.io.svn; import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.SVNErrorMessage; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.internal.wc.SVNErrorManager; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.util.SVNLogType; /** * @version 1.3 * @author TMate Software Ltd. */ public interface ISVNConnectorFactory { public static final ISVNConnectorFactory DEFAULT = new ISVNConnectorFactory() { public ISVNConnector createConnector(SVNRepository repository) throws SVNException { SVNURL location = repository.getLocation(); if ("svn+ssh".equals(location.getProtocol())) { return new SVNSSHConnector(); } else if (location.getProtocol().startsWith("svn+")) { String name = location.getProtocol().substring("svn+".length()); if (repository.getTunnelProvider() != null) { ISVNConnector connector = repository.getTunnelProvider().createTunnelConnector(location); if (connector != null) { return connector; } } SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.EXTERNAL_PROGRAM, "Cannot find tunnel specification for ''{0}''", name); SVNErrorManager.error(err, SVNLogType.NETWORK); } return new SVNPlainConnector(); } }; public ISVNConnector createConnector(SVNRepository repository) throws SVNException; }