diff --git a/scm-core/src/main/java/sonia/scm/repository/work/CachingAllWorkingCopyPool.java b/scm-core/src/main/java/sonia/scm/repository/work/CachingAllWorkingCopyPool.java index a91bf3319f..bb64a82d88 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/CachingAllWorkingCopyPool.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/CachingAllWorkingCopyPool.java @@ -27,7 +27,6 @@ package sonia.scm.repository.work; import com.google.common.base.Stopwatch; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sonia.scm.repository.InternalRepositoryException; import sonia.scm.repository.RepositoryProvider; import sonia.scm.util.IOUtil; @@ -64,14 +63,10 @@ public class CachingAllWorkingCopyPool implements WorkingCopyPool { deleteWorkdir(existingWorkdir); } } - try { - return createNewWorkingCopy(workingCopyContext); - } catch (WorkingCopyFailedException e) { - throw new InternalRepositoryException(workingCopyContext.getScmRepository(), "failed to create working copy", e); - } + return createNewWorkingCopy(workingCopyContext); } - private ParentAndClone createNewWorkingCopy(WorkingCopyContext workingCopyContext) throws WorkingCopyFailedException { + private ParentAndClone createNewWorkingCopy(WorkingCopyContext workingCopyContext) { Stopwatch stopwatch = Stopwatch.createStarted(); File newWorkdir = workdirProvider.createNewWorkdir(); SimpleWorkingCopyFactory.WorkingCopyInitializer initializer = workingCopyContext.getInitializer(); diff --git a/scm-core/src/main/java/sonia/scm/repository/work/NoneCachingWorkingCopyPool.java b/scm-core/src/main/java/sonia/scm/repository/work/NoneCachingWorkingCopyPool.java index 9f99790c99..630b36b470 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/NoneCachingWorkingCopyPool.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/NoneCachingWorkingCopyPool.java @@ -40,7 +40,7 @@ public class NoneCachingWorkingCopyPool implements WorkingCopyPool { } @Override - public ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException { + public ParentAndClone getWorkingCopy(WorkingCopyContext context) { return context.getInitializer().initialize(workdirProvider.createNewWorkdir(), context.getRequestedBranch()); } diff --git a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java index 42bea961ad..7e6a941871 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/SimpleWorkingCopyFactory.java @@ -191,13 +191,9 @@ public abstract class SimpleWorkingCopyFactory createWorkingCopy(C repositoryContext, String initialBranch) { - try { - WorkingCopyContext workingCopyContext = createWorkingCopyContext(repositoryContext, initialBranch); - WorkingCopyPool.ParentAndClone parentAndClone = workingCopyPool.getWorkingCopy(workingCopyContext); - return new WorkingCopy<>(parentAndClone.getClone(), parentAndClone.getParent(), () -> this.close(workingCopyContext, parentAndClone), parentAndClone.getDirectory()); - } catch (WorkingCopyFailedException e) { - throw new InternalRepositoryException(repositoryContext.get(), "could not create working copy for repository in temporary directory", e); - } + WorkingCopyContext workingCopyContext = createWorkingCopyContext(repositoryContext, initialBranch); + WorkingCopyPool.ParentAndClone parentAndClone = workingCopyPool.getWorkingCopy(workingCopyContext); + return new WorkingCopy<>(parentAndClone.getClone(), parentAndClone.getParent(), () -> this.close(workingCopyContext, parentAndClone), parentAndClone.getDirectory()); } private WorkingCopyContext createWorkingCopyContext(C repositoryContext, String initialBranch) { @@ -239,7 +235,7 @@ public abstract class SimpleWorkingCopyFactory { - WorkingCopyPool.ParentAndClone initialize(File target, String initialBranch) throws WorkingCopyFailedException; + WorkingCopyPool.ParentAndClone initialize(File target, String initialBranch); } @FunctionalInterface diff --git a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyFailedException.java b/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyFailedException.java deleted file mode 100644 index 985e348de7..0000000000 --- a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyFailedException.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2020-present Cloudogu GmbH and Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package sonia.scm.repository.work; - -public class WorkingCopyFailedException extends Exception { - public WorkingCopyFailedException(String message) { - super(message); - } - - public WorkingCopyFailedException(Throwable cause) { - super(cause); - } - - public WorkingCopyFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyPool.java b/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyPool.java index e5bbfbe4b1..c389fe6bae 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyPool.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyPool.java @@ -29,7 +29,7 @@ import sonia.scm.repository.RepositoryProvider; import java.io.File; public interface WorkingCopyPool { - ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException; + ParentAndClone getWorkingCopy(WorkingCopyContext context); void contextClosed(WorkingCopyContext workingCopyContext, File workdir); diff --git a/scm-core/src/test/java/sonia/scm/repository/work/CachingAllWorkingCopyPoolTest.java b/scm-core/src/test/java/sonia/scm/repository/work/CachingAllWorkingCopyPoolTest.java index e80a9c346a..51ed82a01a 100644 --- a/scm-core/src/test/java/sonia/scm/repository/work/CachingAllWorkingCopyPoolTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/work/CachingAllWorkingCopyPoolTest.java @@ -62,7 +62,7 @@ class CachingAllWorkingCopyPoolTest { SimpleWorkingCopyFactory.WorkingCopyReclaimer reclaimer; @BeforeEach - void initContext() throws SimpleWorkingCopyFactory.ReclaimFailedException, WorkingCopyFailedException { + void initContext() throws SimpleWorkingCopyFactory.ReclaimFailedException { lenient().when(workingCopyContext.getInitializer()).thenReturn(initializer); lenient().when(workingCopyContext.getReclaimer()).thenReturn(reclaimer); @@ -73,7 +73,7 @@ class CachingAllWorkingCopyPoolTest { } @Test - void shouldCreateNewWorkdirForTheFirstRequest(@TempDir Path temp) throws WorkingCopyFailedException { + void shouldCreateNewWorkdirForTheFirstRequest(@TempDir Path temp) { when(workingCopyContext.getScmRepository()).thenReturn(REPOSITORY); when(workdirProvider.createNewWorkdir()).thenReturn(temp.toFile()); @@ -83,7 +83,7 @@ class CachingAllWorkingCopyPoolTest { } @Test - void shouldCreateWorkdirOnlyOnceForTheSameRepository(@TempDir Path temp) throws SimpleWorkingCopyFactory.ReclaimFailedException, WorkingCopyFailedException { + void shouldCreateWorkdirOnlyOnceForTheSameRepository(@TempDir Path temp) throws SimpleWorkingCopyFactory.ReclaimFailedException { when(workingCopyContext.getScmRepository()).thenReturn(REPOSITORY); when(workdirProvider.createNewWorkdir()).thenReturn(temp.toFile()); @@ -97,7 +97,7 @@ class CachingAllWorkingCopyPoolTest { } @Test - void shouldCacheOnlyOneWorkdirForRepository(@TempDir Path temp) throws SimpleWorkingCopyFactory.ReclaimFailedException, WorkingCopyFailedException { + void shouldCacheOnlyOneWorkdirForRepository(@TempDir Path temp) throws SimpleWorkingCopyFactory.ReclaimFailedException { when(workingCopyContext.getScmRepository()).thenReturn(REPOSITORY); File firstDirectory = temp.resolve("first").toFile(); firstDirectory.mkdirs(); diff --git a/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java b/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java index 00276fe83f..2e8e8ef5d2 100644 --- a/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java +++ b/scm-core/src/test/java/sonia/scm/repository/work/SimpleWorkingCopyFactoryTest.java @@ -61,7 +61,7 @@ public class SimpleWorkingCopyFactoryTest { WorkdirProvider workdirProvider = new WorkdirProvider(temporaryFolder.newFolder()); WorkingCopyPool configurableTestWorkingCopyPool = new WorkingCopyPool() { @Override - public ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException { + public ParentAndClone getWorkingCopy(WorkingCopyContext context) { workdir = workdirProvider.createNewWorkdir(); return context.getInitializer().initialize(workdir, context.getRequestedBranch()); } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java index 02c735a42c..304a8893f9 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java @@ -33,7 +33,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.repository.InternalRepositoryException; import sonia.scm.repository.work.SimpleWorkingCopyFactory; -import sonia.scm.repository.work.WorkingCopyFailedException; import sonia.scm.repository.work.WorkingCopyPool; import java.io.File; @@ -55,7 +54,7 @@ class GitWorkingCopyInitializer implements SimpleWorkingCopyFactory.WorkingCopyI } @Override - public WorkingCopyPool.ParentAndClone initialize(File target, String initialBranch) throws WorkingCopyFailedException { + public WorkingCopyPool.ParentAndClone initialize(File target, String initialBranch) { LOG.trace("clone repository {}", context.getRepository().getId()); long start = System.nanoTime(); try { diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java index ae8a25426f..364c64ed69 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/SimpleHgWorkingCopyFactory.java @@ -32,8 +32,8 @@ import com.aragost.javahg.commands.PullCommand; import com.aragost.javahg.commands.StatusCommand; import com.aragost.javahg.commands.UpdateCommand; import com.aragost.javahg.commands.flags.CloneCommandFlags; +import sonia.scm.repository.InternalRepositoryException; import sonia.scm.repository.work.SimpleWorkingCopyFactory; -import sonia.scm.repository.work.WorkingCopyFailedException; import sonia.scm.repository.work.WorkingCopyPool; import sonia.scm.repository.work.WorkingCopyPool.ParentAndClone; import sonia.scm.util.IOUtil; @@ -66,7 +66,7 @@ public class SimpleHgWorkingCopyFactory extends SimpleWorkingCopyFactory initialize(File workingCopy, String initialBranch) throws WorkingCopyFailedException { + public WorkingCopyPool.ParentAndClone initialize(File workingCopy, String initialBranch) { final SvnOperationFactory svnOperationFactory = new SvnOperationFactory(); SVNURL source;