From 3c808bf17112c4636b1522d19f99cc63921803ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 14 May 2020 21:27:35 +0200 Subject: [PATCH] Use existing RepositoryProvider --- .../work/CachingAllWorkingCopyPool.java | 15 +++++++-------- .../work/NoneCachingWorkingCopyPool.java | 5 ++--- .../repository/work/SimpleWorkingCopyFactory.java | 5 ++--- .../scm/repository/work/WorkingCopyContext.java | 5 ++--- .../scm/repository/work/WorkingCopyPool.java | 5 ++--- .../work/CachingAllWorkingCopyPoolTest.java | 5 ++--- .../work/SimpleWorkingCopyFactoryTest.java | 6 +++--- .../java/sonia/scm/repository/spi/GitContext.java | 9 ++------- .../scm/repository/spi/HgCommandContext.java | 10 ++++------ .../spi/SimpleHgWorkingCopyFactory.java | 3 +-- .../java/sonia/scm/repository/spi/SvnContext.java | 10 ++-------- 11 files changed, 29 insertions(+), 49 deletions(-) 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 3cf5074e74..a91bf3319f 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 @@ -28,14 +28,13 @@ import com.google.common.base.Stopwatch; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.repository.InternalRepositoryException; -import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import sonia.scm.util.IOUtil; import javax.inject.Inject; import java.io.File; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Supplier; public class CachingAllWorkingCopyPool implements WorkingCopyPool { @@ -51,7 +50,7 @@ public class CachingAllWorkingCopyPool implements WorkingCopyPool { } @Override - public > ParentAndClone getWorkingCopy(WorkingCopyContext workingCopyContext) { + public ParentAndClone getWorkingCopy(WorkingCopyContext workingCopyContext) { String id = workingCopyContext.getScmRepository().getId(); File existingWorkdir = workdirs.remove(id); if (existingWorkdir != null) { @@ -66,13 +65,13 @@ public class CachingAllWorkingCopyPool implements WorkingCopyPool { } } try { - return createNewWorkdir(workingCopyContext); + return createNewWorkingCopy(workingCopyContext); } catch (WorkingCopyFailedException e) { throw new InternalRepositoryException(workingCopyContext.getScmRepository(), "failed to create working copy", e); } } - private ParentAndClone createNewWorkdir(WorkingCopyContext workingCopyContext) throws WorkingCopyFailedException { + private ParentAndClone createNewWorkingCopy(WorkingCopyContext workingCopyContext) throws WorkingCopyFailedException { Stopwatch stopwatch = Stopwatch.createStarted(); File newWorkdir = workdirProvider.createNewWorkdir(); SimpleWorkingCopyFactory.WorkingCopyInitializer initializer = workingCopyContext.getInitializer(); @@ -96,9 +95,9 @@ public class CachingAllWorkingCopyPool implements WorkingCopyPool { workdirs.clear(); } - private void deleteWorkdir(File existingWorkdir) { - if (existingWorkdir.exists()) { - IOUtil.deleteSilently(existingWorkdir); + private void deleteWorkdir(File workdir) { + if (workdir.exists()) { + IOUtil.deleteSilently(workdir); } } } 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 ccc3ddc658..9f99790c99 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 @@ -24,12 +24,11 @@ package sonia.scm.repository.work; -import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import sonia.scm.util.IOUtil; import javax.inject.Inject; import java.io.File; -import java.util.function.Supplier; public class NoneCachingWorkingCopyPool implements WorkingCopyPool { @@ -41,7 +40,7 @@ public class NoneCachingWorkingCopyPool implements WorkingCopyPool { } @Override - public > ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException { + public ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException { 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 cb6f233b1c..42bea961ad 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 @@ -27,12 +27,11 @@ package sonia.scm.repository.work; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.repository.InternalRepositoryException; -import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import java.io.File; -import java.util.function.Supplier; /** * This class is responsible to govern the creation, the reuse and the destruction @@ -180,7 +179,7 @@ SimpleGitWorkingCopyFactory->SimpleGitWorkingCopyFactory:closeRepository SimpleGitWorkingCopyFactory->WorkingCopyPool:contextClosed @enduml */ -public abstract class SimpleWorkingCopyFactory> implements WorkingCopyFactory, ServletContextListener { +public abstract class SimpleWorkingCopyFactory implements WorkingCopyFactory, ServletContextListener { private static final Logger LOG = LoggerFactory.getLogger(SimpleWorkingCopyFactory.class); diff --git a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyContext.java b/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyContext.java index 86fda237a3..e4574bc454 100644 --- a/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyContext.java +++ b/scm-core/src/main/java/sonia/scm/repository/work/WorkingCopyContext.java @@ -25,10 +25,9 @@ package sonia.scm.repository.work; import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; -import java.util.function.Supplier; - -public class WorkingCopyContext> { +public class WorkingCopyContext { private final String requestedBranch; private final C context; private final SimpleWorkingCopyFactory.WorkingCopyInitializer initializer; 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 4f261a5601..e5bbfbe4b1 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 @@ -24,13 +24,12 @@ package sonia.scm.repository.work; -import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import java.io.File; -import java.util.function.Supplier; public interface WorkingCopyPool { - > ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException; + ParentAndClone getWorkingCopy(WorkingCopyContext context) throws WorkingCopyFailedException; 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 102e4c2098..e80a9c346a 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 @@ -32,14 +32,13 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import java.io.File; import java.nio.file.Path; -import java.util.function.Supplier; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -56,7 +55,7 @@ class CachingAllWorkingCopyPoolTest { CachingAllWorkingCopyPool cachingAllWorkingCopyPool; @Mock - WorkingCopyContext> workingCopyContext; + WorkingCopyContext workingCopyContext; @Mock SimpleWorkingCopyFactory.WorkingCopyInitializer initializer; @Mock 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 158e8fbb72..00276fe83f 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 @@ -29,12 +29,12 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import sonia.scm.util.IOUtil; import java.io.Closeable; import java.io.File; import java.io.IOException; -import java.util.function.Supplier; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -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) throws WorkingCopyFailedException { workdir = workdirProvider.createNewWorkdir(); return context.getInitializer().initialize(workdir, context.getRequestedBranch()); } @@ -154,7 +154,7 @@ public class SimpleWorkingCopyFactoryTest { } } - private static class Context implements Supplier { + private static class Context implements RepositoryProvider { @Override public Repository get() { return REPOSITORY; diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitContext.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitContext.java index 3763e57939..c7f0327312 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitContext.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitContext.java @@ -24,28 +24,23 @@ package sonia.scm.repository.spi; -//~--- non-JDK imports -------------------------------------------------------- - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import sonia.scm.api.v2.resources.GitRepositoryConfigStoreProvider; import sonia.scm.repository.GitRepositoryConfig; import sonia.scm.repository.GitUtil; import sonia.scm.repository.Repository; - -//~--- JDK imports ------------------------------------------------------------ +import sonia.scm.repository.RepositoryProvider; import java.io.Closeable; import java.io.File; import java.io.IOException; -import java.util.function.Supplier; /** * * @author Sebastian Sdorra */ -public class GitContext implements Closeable, Supplier +public class GitContext implements Closeable, RepositoryProvider { /** diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCommandContext.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCommandContext.java index 4c563a9b48..39181d3d67 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCommandContext.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgCommandContext.java @@ -27,28 +27,26 @@ package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- import com.aragost.javahg.Repository; - import com.google.common.base.Strings; - import sonia.scm.repository.HgConfig; import sonia.scm.repository.HgHookManager; import sonia.scm.repository.HgRepositoryHandler; +import sonia.scm.repository.RepositoryProvider; import sonia.scm.web.HgUtil; -//~--- JDK imports ------------------------------------------------------------ - import java.io.Closeable; import java.io.File; import java.io.IOException; import java.util.Map; import java.util.function.BiConsumer; -import java.util.function.Supplier; + +//~--- JDK imports ------------------------------------------------------------ /** * * @author Sebastian Sdorra */ -public class HgCommandContext implements Closeable, Supplier +public class HgCommandContext implements Closeable, RepositoryProvider { /** Field description */ 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 51ae48716f..ae8a25426f 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,16 +32,15 @@ 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.work.SimpleWorkingCopyFactory; import sonia.scm.repository.work.WorkingCopyFailedException; import sonia.scm.repository.work.WorkingCopyPool; -import sonia.scm.repository.work.SimpleWorkingCopyFactory; import sonia.scm.repository.work.WorkingCopyPool.ParentAndClone; import sonia.scm.util.IOUtil; import sonia.scm.web.HgRepositoryEnvironmentBuilder; import javax.inject.Inject; import javax.inject.Provider; -import javax.xml.stream.events.StartDocument; import java.io.File; import java.io.IOException; import java.util.Map; diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnContext.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnContext.java index 87827c624b..639bf25e8a 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnContext.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnContext.java @@ -24,30 +24,24 @@ package sonia.scm.repository.spi; -//~--- non-JDK imports -------------------------------------------------------- - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.io.SVNRepository; import org.tmatesoft.svn.core.io.SVNRepositoryFactory; - import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryProvider; import sonia.scm.repository.SvnUtil; -//~--- JDK imports ------------------------------------------------------------ - import java.io.Closeable; import java.io.File; -import java.util.function.Supplier; /** * * @author Sebastian Sdorra */ -public class SvnContext implements Closeable, Supplier { +public class SvnContext implements Closeable, RepositoryProvider { private static final Logger LOG = LoggerFactory.getLogger(SvnContext.class);