Mercurial > hg > mercurial
view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/RepoFactory.java @ 883:39ff04730ccc
Report more vcs operation progress
Instead of setting progress in each operation, create HgRepo via
OpeationContext which adds progress to command settings.
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Sun, 05 Oct 2014 11:15:34 +0200 |
parents | ce67edf7bae9 |
children | 7bf4d943d5bb |
line wrap: on
line source
/* * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; import jetbrains.buildServer.vcs.VcsException; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; /** * @author dmitry.neverov */ public class RepoFactory implements HgRepoFactory { protected final ServerPluginConfig myConfig; protected final CommandSettingsForRoot myCommandSettingsFactory; protected final HgPathProvider myHgPathProvider; public RepoFactory(@NotNull ServerPluginConfig config, @NotNull CommandSettingsForRoot commandSettingsFactory, @NotNull HgPathProvider hgPathProvider) throws IOException { myConfig = config; myCommandSettingsFactory = commandSettingsFactory; myHgPathProvider = hgPathProvider; } @NotNull protected ServerHgRepo create(@NotNull File workingDir, @NotNull String hgPath, @NotNull AuthSettings authSettings, @NotNull CommandSettingsFactory commandSettingsFactory, @NotNull ServerPluginConfig config) { return new ServerHgRepo(commandSettingsFactory, config, workingDir, hgPath, authSettings); } @NotNull public ServerHgRepo createRepo(@NotNull HgVcsRoot root, @NotNull File workingDir) throws VcsException { return create(workingDir, myHgPathProvider.getHgPath(root), root.getAuthSettings(), myCommandSettingsFactory.forRoot(root), myConfig); } @NotNull public ServerHgRepo createRepo(@NotNull HgVcsRoot root, @NotNull File workingDir, @NotNull MercurialProgress progress) throws VcsException { CommandSettingsFactory settingsFactory = myCommandSettingsFactory.forRoot(root); return create(workingDir, myHgPathProvider.getHgPath(root), root.getAuthSettings(), new FactoryWithProgess(settingsFactory, progress), myConfig); } public void dispose() { } private static class FactoryWithProgess implements CommandSettingsFactory { private final CommandSettingsFactory myDelegate; private final MercurialProgress myProgress; public FactoryWithProgess(@NotNull CommandSettingsFactory delegate, @NotNull MercurialProgress progress) { myDelegate = delegate; myProgress = progress; } @NotNull public CommandSettings create() { CommandSettings commandSettings = myDelegate.create(); commandSettings.setProgress(myProgress); return commandSettings; } } }