mirror of
				https://github.com/scm-manager/scm-manager.git
				synced 2025-10-31 10:35:56 +01:00 
			
		
		
		
	Use better names
The name 'workdir' is now only used for a concrete directory, where a clone can be created in. The new name 'working copy' is used for a concrete instance of such a directory, where a clone has been created in for a repository stored in SCM-Manager. Such a working copy can be cached and reused for further changes.
This commit is contained in:
		| @@ -21,13 +21,13 @@ | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
|      | ||||
| 
 | ||||
| package sonia.scm.repository; | ||||
| 
 | ||||
| import sonia.scm.repository.spi.SvnContext; | ||||
| import sonia.scm.repository.util.WorkdirFactory; | ||||
| import sonia.scm.repository.util.WorkingCopyFactory; | ||||
| 
 | ||||
| import java.io.File; | ||||
| 
 | ||||
| public interface SvnWorkDirFactory extends WorkdirFactory<File, File, SvnContext> { | ||||
| public interface SvnWorkingCopyFactory extends WorkingCopyFactory<File, File, SvnContext> { | ||||
| } | ||||
| @@ -29,26 +29,23 @@ import org.tmatesoft.svn.core.SVNException; | ||||
| import org.tmatesoft.svn.core.SVNURL; | ||||
| import org.tmatesoft.svn.core.wc.SVNClientManager; | ||||
| import org.tmatesoft.svn.core.wc.SVNRevision; | ||||
| import org.tmatesoft.svn.core.wc.SVNWCClient; | ||||
| import org.tmatesoft.svn.core.wc2.SvnCheckout; | ||||
| import org.tmatesoft.svn.core.wc2.SvnOperationFactory; | ||||
| import org.tmatesoft.svn.core.wc2.SvnTarget; | ||||
| import sonia.scm.repository.InternalRepositoryException; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.util.CacheSupportingWorkdirProvider; | ||||
| import sonia.scm.repository.util.SimpleWorkdirFactory; | ||||
| import sonia.scm.repository.SvnWorkingCopyFactory; | ||||
| import sonia.scm.repository.util.WorkingCopyPool; | ||||
| import sonia.scm.repository.util.SimpleWorkingCopyFactory; | ||||
| 
 | ||||
| import javax.inject.Inject; | ||||
| import javax.servlet.ServletContextEvent; | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| public class SimpleSvnWorkDirFactory extends SimpleWorkdirFactory<File, File, SvnContext> implements SvnWorkDirFactory { | ||||
| public class SimpleSvnWorkingCopyFactory extends SimpleWorkingCopyFactory<File, File, SvnContext> implements SvnWorkingCopyFactory { | ||||
| 
 | ||||
|   @Inject | ||||
|   public SimpleSvnWorkDirFactory(CacheSupportingWorkdirProvider workdirProvider) { | ||||
|     super(workdirProvider); | ||||
|   public SimpleSvnWorkingCopyFactory(WorkingCopyPool workingCopyPool) { | ||||
|     super(workingCopyPool); | ||||
|   } | ||||
| 
 | ||||
|   @Override | ||||
| @@ -99,6 +96,6 @@ public class SimpleSvnWorkDirFactory extends SimpleWorkdirFactory<File, File, Sv | ||||
|   } | ||||
| 
 | ||||
|   @Override | ||||
|   protected void closeWorkdirInternal(File workdir) { | ||||
|   protected void closeWorkingCopyInternal(File workingCopy) { | ||||
|   } | ||||
| } | ||||
| @@ -33,7 +33,7 @@ import org.tmatesoft.svn.core.wc.SVNWCClient; | ||||
| import org.tmatesoft.svn.core.wc.SVNWCUtil; | ||||
| import sonia.scm.repository.InternalRepositoryException; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.SvnWorkingCopyFactory; | ||||
| import sonia.scm.repository.util.WorkingCopy; | ||||
|  | ||||
| import java.io.File; | ||||
| @@ -43,19 +43,19 @@ import java.nio.file.Path; | ||||
| public class SvnModifyCommand implements ModifyCommand { | ||||
|  | ||||
|   private SvnContext context; | ||||
|   private SvnWorkDirFactory workDirFactory; | ||||
|   private SvnWorkingCopyFactory workingCopyFactory; | ||||
|   private Repository repository; | ||||
|  | ||||
|   SvnModifyCommand(SvnContext context, SvnWorkDirFactory workDirFactory) { | ||||
|   SvnModifyCommand(SvnContext context, SvnWorkingCopyFactory workingCopyFactory) { | ||||
|     this.context = context; | ||||
|     this.repository = context.getRepository(); | ||||
|     this.workDirFactory = workDirFactory; | ||||
|     this.workingCopyFactory = workingCopyFactory; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public String execute(ModifyCommandRequest request) { | ||||
|     SVNClientManager clientManager = SVNClientManager.newInstance(); | ||||
|     try (WorkingCopy<File, File> workingCopy = workDirFactory.createWorkingCopy(context, null)) { | ||||
|     try (WorkingCopy<File, File> workingCopy = workingCopyFactory.createWorkingCopy(context, null)) { | ||||
|       File workingDirectory = workingCopy.getDirectory(); | ||||
|       modifyWorkingDirectory(request, clientManager, workingDirectory); | ||||
|       return commitChanges(clientManager, workingDirectory, request.getCommitMessage()); | ||||
|   | ||||
| @@ -28,7 +28,7 @@ import com.google.common.collect.ImmutableSet; | ||||
| import com.google.common.io.Closeables; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.SvnRepositoryHandler; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.SvnWorkingCopyFactory; | ||||
| import sonia.scm.repository.api.Command; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
| @@ -54,10 +54,10 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider | ||||
|  | ||||
|   @Inject | ||||
|   SvnRepositoryServiceProvider(SvnRepositoryHandler handler, | ||||
|     Repository repository, SvnWorkDirFactory workdirFactory) | ||||
|     Repository repository, SvnWorkingCopyFactory workingCopyFactory) | ||||
|   { | ||||
|     this.context = new SvnContext(repository, handler.getDirectory(repository.getId())); | ||||
|     this.workDirFactory = workdirFactory; | ||||
|     this.workingCopyFactory = workingCopyFactory; | ||||
|   } | ||||
|  | ||||
|   //~--- methods -------------------------------------------------------------- | ||||
| @@ -153,7 +153,7 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider | ||||
|   } | ||||
|  | ||||
|   public ModifyCommand getModifyCommand() { | ||||
|     return new SvnModifyCommand(context, workDirFactory); | ||||
|     return new SvnModifyCommand(context, workingCopyFactory); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -185,5 +185,5 @@ public class SvnRepositoryServiceProvider extends RepositoryServiceProvider | ||||
|   /** Field description */ | ||||
|   private final SvnContext context; | ||||
|  | ||||
|   private final SvnWorkDirFactory workDirFactory; | ||||
|   private final SvnWorkingCopyFactory workingCopyFactory; | ||||
| } | ||||
|   | ||||
| @@ -21,25 +21,25 @@ | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
|      | ||||
|  | ||||
| package sonia.scm.repository.spi; | ||||
|  | ||||
| import com.google.inject.Inject; | ||||
| import sonia.scm.plugin.Extension; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.SvnRepositoryHandler; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.SvnWorkingCopyFactory; | ||||
|  | ||||
| @Extension | ||||
| public class SvnRepositoryServiceResolver implements RepositoryServiceResolver { | ||||
|  | ||||
|   private SvnRepositoryHandler handler; | ||||
|   private SvnWorkDirFactory workdirFactory; | ||||
|   private SvnWorkingCopyFactory workingCopyFactory; | ||||
|  | ||||
|   @Inject | ||||
|   public SvnRepositoryServiceResolver(SvnRepositoryHandler handler, SvnWorkDirFactory workdirFactory) { | ||||
|   public SvnRepositoryServiceResolver(SvnRepositoryHandler handler, SvnWorkingCopyFactory workingCopyFactory) { | ||||
|     this.handler = handler; | ||||
|     this.workdirFactory = workdirFactory; | ||||
|     this.workingCopyFactory = workingCopyFactory; | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
| @@ -47,7 +47,7 @@ public class SvnRepositoryServiceResolver implements RepositoryServiceResolver { | ||||
|     SvnRepositoryServiceProvider provider = null; | ||||
|  | ||||
|     if (SvnRepositoryHandler.TYPE_NAME.equalsIgnoreCase(repository.getType())) { | ||||
|       provider = new SvnRepositoryServiceProvider(handler, repository, workdirFactory); | ||||
|       provider = new SvnRepositoryServiceProvider(handler, repository, workingCopyFactory); | ||||
|     } | ||||
|  | ||||
|     return provider; | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
|      | ||||
|  | ||||
| package sonia.scm.web; | ||||
|  | ||||
| import com.google.inject.servlet.ServletModule; | ||||
| @@ -29,8 +29,8 @@ import org.mapstruct.factory.Mappers; | ||||
| import sonia.scm.api.v2.resources.SvnConfigDtoToSvnConfigMapper; | ||||
| import sonia.scm.api.v2.resources.SvnConfigToSvnConfigDtoMapper; | ||||
| import sonia.scm.plugin.Extension; | ||||
| import sonia.scm.repository.SvnWorkDirFactory; | ||||
| import sonia.scm.repository.spi.SimpleSvnWorkDirFactory; | ||||
| import sonia.scm.repository.SvnWorkingCopyFactory; | ||||
| import sonia.scm.repository.spi.SimpleSvnWorkingCopyFactory; | ||||
|  | ||||
| /** | ||||
|  * | ||||
| @@ -43,6 +43,6 @@ public class SvnServletModule extends ServletModule { | ||||
|   protected void configureServlets() { | ||||
|     bind(SvnConfigDtoToSvnConfigMapper.class).to(Mappers.getMapper(SvnConfigDtoToSvnConfigMapper.class).getClass()); | ||||
|     bind(SvnConfigToSvnConfigDtoMapper.class).to(Mappers.getMapper(SvnConfigToSvnConfigDtoMapper.class).getClass()); | ||||
|     bind(SvnWorkDirFactory.class).to(SimpleSvnWorkDirFactory.class); | ||||
|     bind(SvnWorkingCopyFactory.class).to(SimpleSvnWorkingCopyFactory.class); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -30,7 +30,7 @@ import org.junit.Test; | ||||
| import org.junit.rules.TemporaryFolder; | ||||
| import org.tmatesoft.svn.core.SVNException; | ||||
| import sonia.scm.repository.Repository; | ||||
| import sonia.scm.repository.util.NoneCachingWorkdirProvider; | ||||
| import sonia.scm.repository.util.NoneCachingWorkingCopyPool; | ||||
| import sonia.scm.repository.util.WorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkingCopy; | ||||
| 
 | ||||
| @@ -39,7 +39,7 @@ import java.io.IOException; | ||||
| 
 | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
| 
 | ||||
| public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
| public class SimpleSvnWorkingCopyFactoryTest extends AbstractSvnCommandTestBase { | ||||
| 
 | ||||
|   @Rule | ||||
|   public TemporaryFolder temporaryFolder = new TemporaryFolder(); | ||||
| @@ -54,7 +54,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
| 
 | ||||
|   @Test | ||||
|   public void shouldCheckoutLatestRevision() throws SVNException, IOException { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|     SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); | ||||
| 
 | ||||
|     try (WorkingCopy<File, File> workingCopy = factory.createWorkingCopy(createContext(), null)) { | ||||
|       assertThat(new File(workingCopy.getWorkingRepository(), "a.txt")) | ||||
| @@ -66,7 +66,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
| 
 | ||||
|   @Test | ||||
|   public void cloneFromPoolshouldNotBeReused() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|     SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); | ||||
| 
 | ||||
|     File firstDirectory; | ||||
|     try (WorkingCopy<File, File> workingCopy = factory.createWorkingCopy(createContext(), null)) { | ||||
| @@ -80,7 +80,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
| 
 | ||||
|   @Test | ||||
|   public void shouldDeleteCloneOnClose() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|     SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); | ||||
| 
 | ||||
|     File directory; | ||||
|     File workingRepository; | ||||
| @@ -95,7 +95,7 @@ public class SimpleSvnWorkDirFactoryTest extends AbstractSvnCommandTestBase { | ||||
| 
 | ||||
|   @Test | ||||
|   public void shouldReturnRepository() { | ||||
|     SimpleSvnWorkDirFactory factory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(workdirProvider)); | ||||
|     SimpleSvnWorkingCopyFactory factory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(workdirProvider)); | ||||
|     Repository scmRepository = factory.getScmRepository(createContext()); | ||||
|     assertThat(scmRepository).isSameAs(repository); | ||||
|   } | ||||
| @@ -33,7 +33,7 @@ import org.junit.Test; | ||||
| import org.junit.rules.TemporaryFolder; | ||||
| import sonia.scm.AlreadyExistsException; | ||||
| import sonia.scm.repository.Person; | ||||
| import sonia.scm.repository.util.NoneCachingWorkdirProvider; | ||||
| import sonia.scm.repository.util.NoneCachingWorkingCopyPool; | ||||
| import sonia.scm.repository.util.WorkdirProvider; | ||||
| import sonia.scm.repository.util.WorkingCopy; | ||||
|  | ||||
| @@ -49,7 +49,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|   private SvnModifyCommand svnModifyCommand; | ||||
|   private SvnContext context; | ||||
|   private SimpleSvnWorkDirFactory workDirFactory; | ||||
|   private SimpleSvnWorkingCopyFactory workingCopyFactory; | ||||
|  | ||||
|   @Rule | ||||
|   public TemporaryFolder temporaryFolder = new TemporaryFolder(); | ||||
| @@ -57,8 +57,8 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|   @Before | ||||
|   public void initSvnModifyCommand() { | ||||
|     context = createContext(); | ||||
|     workDirFactory = new SimpleSvnWorkDirFactory(new NoneCachingWorkdirProvider(new WorkdirProvider(context.getDirectory()))); | ||||
|     svnModifyCommand = new SvnModifyCommand(context, workDirFactory); | ||||
|     workingCopyFactory = new SimpleSvnWorkingCopyFactory(new NoneCachingWorkingCopyPool(new WorkdirProvider(context.getDirectory()))); | ||||
|     svnModifyCommand = new SvnModifyCommand(context, workingCopyFactory); | ||||
|   } | ||||
|  | ||||
|   @Before | ||||
| @@ -81,7 +81,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|     request.setAuthor(new Person("Arthur Dent", "dent@hitchhiker.com")); | ||||
|  | ||||
|     svnModifyCommand.execute(request); | ||||
|     WorkingCopy<File, File> workingCopy = workDirFactory.createWorkingCopy(context, null); | ||||
|     WorkingCopy<File, File> workingCopy = workingCopyFactory.createWorkingCopy(context, null); | ||||
|     assertThat(new File(workingCopy.getWorkingRepository().getAbsolutePath() + "/a.txt")).doesNotExist(); | ||||
|     assertThat(new File(workingCopy.getWorkingRepository().getAbsolutePath() + "/c")).exists(); | ||||
|   } | ||||
| @@ -97,7 +97,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|     svnModifyCommand.execute(request); | ||||
|  | ||||
|     WorkingCopy<File, File> workingCopy = workDirFactory.createWorkingCopy(context, null); | ||||
|     WorkingCopy<File, File> workingCopy = workingCopyFactory.createWorkingCopy(context, null); | ||||
|     assertThat(new File(workingCopy.getWorkingRepository(), "Test123")).exists(); | ||||
|   } | ||||
|  | ||||
| @@ -124,7 +124,7 @@ public class SvnModifyCommandTest extends AbstractSvnCommandTestBase { | ||||
|  | ||||
|     svnModifyCommand.execute(request); | ||||
|  | ||||
|     WorkingCopy<File, File> workingCopy = workDirFactory.createWorkingCopy(context, null); | ||||
|     WorkingCopy<File, File> workingCopy = workingCopyFactory.createWorkingCopy(context, null); | ||||
|     assertThat(new File(workingCopy.getWorkingRepository(), "a.txt")).exists(); | ||||
|     assertThat(new File(workingCopy.getWorkingRepository(), "a.txt")).hasContent(""); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user