diff --git a/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java new file mode 100644 index 0000000000..8aa749a879 --- /dev/null +++ b/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java @@ -0,0 +1,92 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.repository.client; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; + +/** + * + * @author Sebastian Sdorra + */ +public abstract class AbstractRepositoryClient implements RepositoryClient +{ + + /** + * Constructs ... + * + * + * @param localRepository + * @param remoteRepository + */ + public AbstractRepositoryClient(File localRepository, String remoteRepository) + { + this.localRepository = localRepository; + this.remoteRepository = remoteRepository; + } + + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @return + */ + public File getLocalRepository() + { + return localRepository; + } + + /** + * Method description + * + * + * @return + */ + public String getRemoteRepository() + { + return remoteRepository; + } + + + //~--- fields --------------------------------------------------------------- + + /** Field description */ + protected File localRepository; + + /** Field description */ + protected String remoteRepository; +} diff --git a/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java index 00b49d6ea8..0dd6e153ff 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java @@ -80,7 +80,7 @@ import java.util.List; * * @author Sebastian Sdorra */ -public class GitRepositoryClient implements RepositoryClient +public class GitRepositoryClient extends AbstractRepositoryClient { /** @@ -100,6 +100,7 @@ public class GitRepositoryClient implements RepositoryClient String username, String password) throws URISyntaxException, IOException { + super(localRepository, remoteRepository); uri = new URIish(remoteRepository); if ((username != null) && (password != null)) diff --git a/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java index 6775053a8c..46bef711dc 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java @@ -48,7 +48,7 @@ import java.io.IOException; * * @author Sebastian Sdorra */ -public class HgRepositoryClient implements RepositoryClient +public class HgRepositoryClient extends AbstractRepositoryClient { /** @@ -63,7 +63,7 @@ public class HgRepositoryClient implements RepositoryClient HgRepositoryClient(File localRepository, String remoteRepository, String username, String password) { - this.localRepository = localRepository; + super(localRepository, remoteRepository); String scheme = remoteRepository.substring(0, remoteRepository.indexOf("://") + 3); @@ -217,9 +217,6 @@ public class HgRepositoryClient implements RepositoryClient /** Field description */ private String hg; - /** Field description */ - private File localRepository; - /** Field description */ private String remoteURL; } diff --git a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java index bbe6a5b371..30cea8891a 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java @@ -33,6 +33,10 @@ package sonia.scm.repository.client; +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; + /** * * @author Sebastian Sdorra @@ -77,4 +81,22 @@ public interface RepositoryClient * @throws RepositoryClientException */ public void init() throws RepositoryClientException; + + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @return + */ + public File getLocalRepository(); + + /** + * Method description + * + * + * @return + */ + public String getRemoteRepository(); } diff --git a/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java index 15d91f8aee..f61958f93d 100644 --- a/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java +++ b/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java @@ -57,7 +57,7 @@ import java.util.List; * * @author Sebastian Sdorra */ -public class SvnRepositoryClient implements RepositoryClient +public class SvnRepositoryClient extends AbstractRepositoryClient { /** @@ -75,7 +75,7 @@ public class SvnRepositoryClient implements RepositoryClient String username, String password) throws SVNException { - this.localRepository = localRepository; + super(localRepository, remoteRepository); DefaultSVNOptions options = new DefaultSVNOptions(); @@ -88,7 +88,7 @@ public class SvnRepositoryClient implements RepositoryClient client = SVNClientManager.newInstance(options); } - removeRepositoryURL = SVNURL.parseURIDecoded(remoteRepository); + remoteRepositoryURL = SVNURL.parseURIDecoded(remoteRepository); DAVRepositoryFactory.setup(); } @@ -128,7 +128,7 @@ public class SvnRepositoryClient implements RepositoryClient { SVNUpdateClient updateClient = client.getUpdateClient(); - updateClient.doCheckout(removeRepositoryURL, localRepository, + updateClient.doCheckout(remoteRepositoryURL, localRepository, SVNRevision.UNDEFINED, SVNRevision.HEAD, SVNDepth.FILES, false); } @@ -159,7 +159,7 @@ public class SvnRepositoryClient implements RepositoryClient { File file = new File(localRepository, name); - cc.doImport(file, removeRepositoryURL.appendPath(name, true), message, + cc.doImport(file, remoteRepositoryURL.appendPath(name, true), message, null, false, true, SVNDepth.FILES); } } @@ -191,8 +191,5 @@ public class SvnRepositoryClient implements RepositoryClient private List files = new ArrayList(); /** Field description */ - private File localRepository; - - /** Field description */ - private SVNURL removeRepositoryURL; + private SVNURL remoteRepositoryURL; }