mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-05-06 23:47:39 +02:00
Assisted Injection for commands
Co-authored-by: Eduard Heimbuch<eduard.heimbuch@cloudogu.com> Co-authored-by: Laura Gorzitze<laura.gorzitze@cloudogu.com> Pushed-by: Eduard Heimbuch<eduard.heimbuch@cloudogu.com> Pushed-by: Laura Gorzitze<laura.gorzitze@cloudogu.com>
This commit is contained in:
@@ -28,6 +28,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
@@ -66,7 +67,7 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
@Inject
|
||||
public GitBlameCommand(GitContext context)
|
||||
public GitBlameCommand(@Assisted GitContext context)
|
||||
{
|
||||
super(context);
|
||||
}
|
||||
@@ -148,4 +149,9 @@ public class GitBlameCommand extends AbstractGitCommand implements BlameCommand
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BlameCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.CannotDeleteCurrentBranchException;
|
||||
@@ -71,7 +72,10 @@ public class GitBranchCommand extends AbstractGitCommand implements BranchComman
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
@Inject
|
||||
GitBranchCommand(GitContext context, HookContextFactory hookContextFactory, ScmEventBus eventBus, GitChangesetConverterFactory converterFactory) {
|
||||
GitBranchCommand(@Assisted GitContext context,
|
||||
HookContextFactory hookContextFactory,
|
||||
ScmEventBus eventBus,
|
||||
GitChangesetConverterFactory converterFactory) {
|
||||
super(context);
|
||||
this.hookContextFactory = hookContextFactory;
|
||||
this.eventBus = eventBus;
|
||||
@@ -201,4 +205,8 @@ public class GitBranchCommand extends AbstractGitCommand implements BranchComman
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BranchCommand create(GitContext context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
|
||||
import org.eclipse.jgit.errors.MissingObjectException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
@@ -46,7 +47,7 @@ import static sonia.scm.NotFoundException.notFound;
|
||||
public class GitBranchDetailsCommand extends AbstractGitCommand implements BranchDetailsCommand {
|
||||
|
||||
@Inject
|
||||
GitBranchDetailsCommand(GitContext context) {
|
||||
GitBranchDetailsCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -97,4 +98,9 @@ public class GitBranchDetailsCommand extends AbstractGitCommand implements Branc
|
||||
throw new InternalRepositoryException(context.getRepository(), "could not compute ahead/behind", e);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BranchDetailsCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
@@ -55,7 +56,7 @@ public class GitBranchesCommand extends AbstractGitCommand implements BranchesCo
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitBranchesCommand.class);
|
||||
|
||||
@Inject
|
||||
public GitBranchesCommand(GitContext context) {
|
||||
public GitBranchesCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -120,5 +121,10 @@ public class GitBranchesCommand extends AbstractGitCommand implements BranchesCo
|
||||
Optional<Ref> getRepositoryHeadRef(Git git) {
|
||||
return GitUtil.getRepositoryHeadRef(git.getRepository());
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BranchesCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.google.common.base.Stopwatch;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.attributes.Attributes;
|
||||
import org.eclipse.jgit.lfs.LfsPointer;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
@@ -113,7 +114,7 @@ public class GitBrowseCommand extends AbstractGitCommand
|
||||
private int resultCount = 0;
|
||||
|
||||
@Inject
|
||||
public GitBrowseCommand(GitContext context, LfsBlobStoreFactory lfsBlobStoreFactory, SyncAsyncExecutorProvider executorProvider) {
|
||||
public GitBrowseCommand(@Assisted GitContext context, LfsBlobStoreFactory lfsBlobStoreFactory, SyncAsyncExecutorProvider executorProvider) {
|
||||
this(context, lfsBlobStoreFactory, executorProvider.createExecutorWithDefaultTimeout());
|
||||
}
|
||||
|
||||
@@ -560,4 +561,9 @@ public class GitBrowseCommand extends AbstractGitCommand
|
||||
children.add(treeEntry);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BrowseCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
*/
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import sonia.scm.ContextEntry;
|
||||
import sonia.scm.repository.api.BundleResponse;
|
||||
import sonia.scm.repository.api.ExportFailedException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
@@ -38,7 +40,8 @@ public class GitBundleCommand extends AbstractGitCommand implements BundleComman
|
||||
|
||||
private static final String TAR_ARCHIVE = "tar";
|
||||
|
||||
public GitBundleCommand(GitContext context) {
|
||||
@Inject
|
||||
public GitBundleCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -66,4 +69,9 @@ public class GitBundleCommand extends AbstractGitCommand implements BundleComman
|
||||
private boolean shouldIncludeFile(Path filePath) {
|
||||
return !filePath.getFileName().toString().equals("config");
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
BundleCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.errors.MissingObjectException;
|
||||
import org.eclipse.jgit.lfs.LfsPointer;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
@@ -63,7 +64,7 @@ public class GitCatCommand extends AbstractGitCommand implements CatCommand {
|
||||
private final LfsBlobStoreFactory lfsBlobStoreFactory;
|
||||
|
||||
@Inject
|
||||
public GitCatCommand(GitContext context, LfsBlobStoreFactory lfsBlobStoreFactory) {
|
||||
public GitCatCommand(@Assisted GitContext context, LfsBlobStoreFactory lfsBlobStoreFactory) {
|
||||
super(context);
|
||||
this.lfsBlobStoreFactory = lfsBlobStoreFactory;
|
||||
}
|
||||
@@ -225,4 +226,9 @@ public class GitCatCommand extends AbstractGitCommand implements CatCommand {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
CatCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.revwalk.RevCommit;
|
||||
@@ -47,7 +48,7 @@ public class GitChangesetsCommand extends AbstractGitCommand implements Changese
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
@Inject
|
||||
GitChangesetsCommand(GitContext context, GitChangesetConverterFactory converterFactory) {
|
||||
GitChangesetsCommand(@Assisted GitContext context, GitChangesetConverterFactory converterFactory) {
|
||||
super(context);
|
||||
this.converterFactory = converterFactory;
|
||||
}
|
||||
@@ -122,4 +123,9 @@ public class GitChangesetsCommand extends AbstractGitCommand implements Changese
|
||||
return Long.compare(commitTime1, commitTime2);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
ChangesetsCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.diff.DiffEntry;
|
||||
import org.eclipse.jgit.diff.DiffFormatter;
|
||||
import org.eclipse.jgit.util.QuotedString;
|
||||
@@ -43,7 +44,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
||||
|
||||
@Inject
|
||||
GitDiffCommand(GitContext context) {
|
||||
GitDiffCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -185,4 +186,9 @@ public class GitDiffCommand extends AbstractGitCommand implements DiffCommand {
|
||||
target.flush();
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
DiffCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.diff.DiffEntry;
|
||||
import org.eclipse.jgit.diff.DiffFormatter;
|
||||
import org.eclipse.jgit.errors.AmbiguousObjectException;
|
||||
@@ -50,7 +51,7 @@ import static java.util.Optional.ofNullable;
|
||||
public class GitDiffResultCommand extends AbstractGitCommand implements DiffResultCommand {
|
||||
|
||||
@Inject
|
||||
GitDiffResultCommand(GitContext context) {
|
||||
GitDiffResultCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -197,4 +198,9 @@ public class GitDiffResultCommand extends AbstractGitCommand implements DiffResu
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
DiffResultCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import sonia.scm.repository.api.FileLock;
|
||||
import sonia.scm.repository.api.LockCommandResult;
|
||||
import sonia.scm.repository.api.UnlockCommandResult;
|
||||
@@ -39,7 +40,7 @@ public class GitFileLockCommand implements FileLockCommand {
|
||||
private final GitFileLockStoreFactory lockStoreFactory;
|
||||
|
||||
@Inject
|
||||
public GitFileLockCommand(GitContext context, GitFileLockStoreFactory lockStoreFactory) {
|
||||
public GitFileLockCommand(@Assisted GitContext context, GitFileLockStoreFactory lockStoreFactory) {
|
||||
this.context = context;
|
||||
this.lockStoreFactory = lockStoreFactory;
|
||||
}
|
||||
@@ -73,4 +74,9 @@ public class GitFileLockCommand implements FileLockCommand {
|
||||
private GitFileLockStore getLockStore() {
|
||||
return lockStoreFactory.create(context.getRepository());
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
FileLockCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.LogCommand;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import sonia.scm.repository.ChangesetPagingResult;
|
||||
@@ -45,7 +46,7 @@ public class GitIncomingCommand extends AbstractGitIncomingOutgoingCommand
|
||||
implements IncomingCommand {
|
||||
|
||||
@Inject
|
||||
GitIncomingCommand(GitContext context, GitRepositoryHandler handler, GitChangesetConverterFactory converterFactory) {
|
||||
GitIncomingCommand(@Assisted GitContext context, GitRepositoryHandler handler, GitChangesetConverterFactory converterFactory) {
|
||||
super(context, handler, converterFactory);
|
||||
}
|
||||
|
||||
@@ -95,4 +96,9 @@ public class GitIncomingCommand extends AbstractGitIncomingOutgoingCommand
|
||||
{
|
||||
return remoteId != null;
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
IncomingCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ package sonia.scm.repository.spi;
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.revwalk.RevCommit;
|
||||
@@ -74,7 +75,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
|
||||
*
|
||||
*/
|
||||
@Inject
|
||||
GitLogCommand(GitContext context, GitChangesetConverterFactory converterFactory)
|
||||
GitLogCommand(@Assisted GitContext context, GitChangesetConverterFactory converterFactory)
|
||||
{
|
||||
super(context);
|
||||
this.converterFactory = converterFactory;
|
||||
@@ -188,4 +189,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
LogCommand create(GitContext context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.MergeResult;
|
||||
import org.eclipse.jgit.api.Status;
|
||||
@@ -65,11 +66,11 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand
|
||||
);
|
||||
|
||||
@Inject
|
||||
GitMergeCommand(GitContext context, GitRepositoryHandler handler) {
|
||||
GitMergeCommand(@Assisted GitContext context, GitRepositoryHandler handler) {
|
||||
this(context, handler.getWorkingCopyFactory());
|
||||
}
|
||||
|
||||
GitMergeCommand(GitContext context, GitWorkingCopyFactory workingCopyFactory) {
|
||||
GitMergeCommand(@Assisted GitContext context, GitWorkingCopyFactory workingCopyFactory) {
|
||||
super(context);
|
||||
this.workingCopyFactory = workingCopyFactory;
|
||||
}
|
||||
@@ -214,4 +215,9 @@ public class GitMergeCommand extends AbstractGitCommand implements MergeCommand
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
MergeCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.eclipse.jgit.api.FetchCommand;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
@@ -113,7 +114,7 @@ public class GitMirrorCommand extends AbstractGitCommand implements MirrorComman
|
||||
private final LfsLoader lfsLoader;
|
||||
|
||||
@Inject
|
||||
GitMirrorCommand(GitContext context,
|
||||
GitMirrorCommand(@Assisted GitContext context,
|
||||
MirrorHttpConnectionProvider mirrorHttpConnectionProvider,
|
||||
GitChangesetConverterFactory converterFactory,
|
||||
GitTagConverter gitTagConverter,
|
||||
@@ -799,4 +800,9 @@ public class GitMirrorCommand extends AbstractGitCommand implements MirrorComman
|
||||
this.typeForLog = typeForLog;
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
MirrorCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.jgit.diff.DiffEntry;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
@@ -57,7 +58,7 @@ import static sonia.scm.ContextEntry.ContextBuilder.entity;
|
||||
public class GitModificationsCommand extends AbstractGitCommand implements ModificationsCommand {
|
||||
|
||||
@Inject
|
||||
GitModificationsCommand(GitContext context) {
|
||||
GitModificationsCommand(@Assisted GitContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@@ -156,4 +157,9 @@ public class GitModificationsCommand extends AbstractGitCommand implements Modif
|
||||
throw new UnsupportedModificationTypeException(entity(repository), MessageFormat.format("The modification type: {0} is not supported.", type));
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
ModificationsCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.util.concurrent.Striped;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
@@ -57,11 +58,11 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman
|
||||
private final GitRepositoryConfigStoreProvider gitRepositoryConfigStoreProvider;
|
||||
|
||||
@Inject
|
||||
GitModifyCommand(GitContext context, GitRepositoryHandler repositoryHandler, LfsBlobStoreFactory lfsBlobStoreFactory, GitRepositoryConfigStoreProvider gitRepositoryConfigStoreProvider) {
|
||||
GitModifyCommand(@Assisted GitContext context, GitRepositoryHandler repositoryHandler, LfsBlobStoreFactory lfsBlobStoreFactory, GitRepositoryConfigStoreProvider gitRepositoryConfigStoreProvider) {
|
||||
this(context, repositoryHandler.getWorkingCopyFactory(), lfsBlobStoreFactory, gitRepositoryConfigStoreProvider);
|
||||
}
|
||||
|
||||
GitModifyCommand(GitContext context, GitWorkingCopyFactory workingCopyFactory, LfsBlobStoreFactory lfsBlobStoreFactory, GitRepositoryConfigStoreProvider gitRepositoryConfigStoreProvider) {
|
||||
GitModifyCommand(@Assisted GitContext context, GitWorkingCopyFactory workingCopyFactory, LfsBlobStoreFactory lfsBlobStoreFactory, GitRepositoryConfigStoreProvider gitRepositoryConfigStoreProvider) {
|
||||
super(context);
|
||||
this.workingCopyFactory = workingCopyFactory;
|
||||
this.lfsBlobStoreFactory = lfsBlobStoreFactory;
|
||||
@@ -217,4 +218,9 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman
|
||||
throw new InternalRepositoryException(context.getRepository(), message, e);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
ModifyCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.LogCommand;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import sonia.scm.repository.ChangesetPagingResult;
|
||||
@@ -45,7 +46,7 @@ public class GitOutgoingCommand extends AbstractGitIncomingOutgoingCommand
|
||||
implements OutgoingCommand {
|
||||
|
||||
@Inject
|
||||
GitOutgoingCommand(GitContext context, GitRepositoryHandler handler, GitChangesetConverterFactory converterFactory)
|
||||
GitOutgoingCommand(@Assisted GitContext context, GitRepositoryHandler handler, GitChangesetConverterFactory converterFactory)
|
||||
{
|
||||
super(context, handler, converterFactory);
|
||||
}
|
||||
@@ -109,4 +110,9 @@ public class GitOutgoingCommand extends AbstractGitIncomingOutgoingCommand
|
||||
{
|
||||
return localId != null;
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
OutgoingCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ package sonia.scm.repository.spi;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
@@ -67,8 +68,8 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
|
||||
|
||||
@Inject
|
||||
public GitPullCommand(GitRepositoryHandler handler,
|
||||
GitContext context,
|
||||
PostReceiveRepositoryHookEventFactory postReceiveRepositoryHookEventFactory,
|
||||
@Assisted GitContext context,
|
||||
@Assisted PostReceiveRepositoryHookEventFactory postReceiveRepositoryHookEventFactory,
|
||||
LfsLoader lfsLoader,
|
||||
PullHttpConnectionProvider pullHttpConnectionProvider,
|
||||
GitRepositoryConfigStoreProvider storeProvider, GitHeadModifier gitHeadModifier) {
|
||||
@@ -266,4 +267,9 @@ public class GitPullCommand extends AbstractGitPushOrPullCommand
|
||||
return failureCount;
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
PullCommand create(GitContext context, PostReceiveRepositoryHookEventFactory postReceiveRepositoryHookEventFactory);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sonia.scm.repository.GitRepositoryHandler;
|
||||
@@ -37,7 +38,7 @@ public class GitPushCommand extends AbstractGitPushOrPullCommand implements Push
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitPushCommand.class);
|
||||
|
||||
@Inject
|
||||
public GitPushCommand(GitRepositoryHandler handler, GitContext context) {
|
||||
public GitPushCommand(GitRepositoryHandler handler, @Assisted GitContext context) {
|
||||
super(handler, context);
|
||||
this.handler = handler;
|
||||
}
|
||||
@@ -51,4 +52,9 @@ public class GitPushCommand extends AbstractGitPushOrPullCommand implements Push
|
||||
|
||||
return new PushResponse(push(open(), remoteUrl, request.getUsername(), request.getPassword(), request.isForce()));
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
PushCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Injector;
|
||||
import sonia.scm.repository.Feature;
|
||||
import sonia.scm.repository.api.Command;
|
||||
@@ -69,134 +68,130 @@ public class GitRepositoryServiceProvider extends RepositoryServiceProvider {
|
||||
Feature.FORCE_PUSH
|
||||
);
|
||||
|
||||
private final Injector injector;
|
||||
private final GitContext context;
|
||||
private final Injector commandInjector;
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
GitRepositoryServiceProvider(Injector injector, GitContext context) {
|
||||
this.injector = injector;
|
||||
this.context = context;
|
||||
commandInjector = injector.createChildInjector(new AbstractModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(GitContext.class).toInstance(context);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlameCommand getBlameCommand() {
|
||||
return new GitBlameCommand(context);
|
||||
return injector.getInstance(GitBlameCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BranchesCommand getBranchesCommand() {
|
||||
return new GitBranchesCommand(context);
|
||||
return injector.getInstance(GitBranchesCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BranchCommand getBranchCommand() {
|
||||
return commandInjector.getInstance(GitBranchCommand.class);
|
||||
return injector.getInstance(GitBranchCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BrowseCommand getBrowseCommand() {
|
||||
return commandInjector.getInstance(GitBrowseCommand.class);
|
||||
return injector.getInstance(GitBrowseCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CatCommand getCatCommand() {
|
||||
return commandInjector.getInstance(GitCatCommand.class);
|
||||
return injector.getInstance(GitCatCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DiffCommand getDiffCommand() {
|
||||
return new GitDiffCommand(context);
|
||||
return injector.getInstance(GitDiffCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DiffResultCommand getDiffResultCommand() {
|
||||
return new GitDiffResultCommand(context);
|
||||
return injector.getInstance(GitDiffResultCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IncomingCommand getIncomingCommand() {
|
||||
return commandInjector.getInstance(GitIncomingCommand.class);
|
||||
return injector.getInstance(GitIncomingCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogCommand getLogCommand() {
|
||||
return commandInjector.getInstance(GitLogCommand.class);
|
||||
return injector.getInstance(GitLogCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModificationsCommand getModificationsCommand() {
|
||||
return new GitModificationsCommand(context);
|
||||
return injector.getInstance(GitModificationsCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OutgoingCommand getOutgoingCommand() {
|
||||
return commandInjector.getInstance(GitOutgoingCommand.class);
|
||||
return injector.getInstance(GitOutgoingCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PullCommand getPullCommand() {
|
||||
return commandInjector.getInstance(GitPullCommand.class);
|
||||
PostReceiveRepositoryHookEventFactory postReceiveRepositoryHookEventFactory = injector.getInstance(PostReceiveRepositoryHookEventFactory.Factory.class).create(context);
|
||||
return injector.getInstance(GitPullCommand.Factory.class).create(context, postReceiveRepositoryHookEventFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PushCommand getPushCommand() {
|
||||
return commandInjector.getInstance(GitPushCommand.class);
|
||||
return injector.getInstance(GitPushCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagsCommand getTagsCommand() {
|
||||
return commandInjector.getInstance(GitTagsCommand.class);
|
||||
return injector.getInstance(GitTagsCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TagCommand getTagCommand() {
|
||||
return commandInjector.getInstance(GitTagCommand.class);
|
||||
return injector.getInstance(GitTagCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MergeCommand getMergeCommand() {
|
||||
return commandInjector.getInstance(GitMergeCommand.class);
|
||||
return injector.getInstance(GitMergeCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModifyCommand getModifyCommand() {
|
||||
return commandInjector.getInstance(GitModifyCommand.class);
|
||||
return injector.getInstance(GitModifyCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BundleCommand getBundleCommand() {
|
||||
return new GitBundleCommand(context);
|
||||
return injector.getInstance(GitBundleCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnbundleCommand getUnbundleCommand() {
|
||||
return commandInjector.getInstance(GitUnbundleCommand.class);
|
||||
return injector.getInstance(GitUnbundleCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MirrorCommand getMirrorCommand() {
|
||||
return commandInjector.getInstance(GitMirrorCommand.class);
|
||||
return injector.getInstance(GitMirrorCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileLockCommand getFileLockCommand() {
|
||||
return commandInjector.getInstance(GitFileLockCommand.class);
|
||||
return injector.getInstance(GitFileLockCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BranchDetailsCommand getBranchDetailsCommand() {
|
||||
return commandInjector.getInstance(GitBranchDetailsCommand.class);
|
||||
return injector.getInstance(GitBranchDetailsCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChangesetsCommand getChangesetsCommand() {
|
||||
return commandInjector.getInstance(GitChangesetsCommand.class);
|
||||
return injector.getInstance(GitChangesetsCommand.Factory.class).create(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
@@ -80,7 +81,7 @@ public class GitTagCommand extends AbstractGitCommand implements TagCommand {
|
||||
private final GitChangesetConverterFactory converterFactory;
|
||||
|
||||
@Inject
|
||||
GitTagCommand(GitContext context, HookContextFactory hookContextFactory, ScmEventBus eventBus, GitChangesetConverterFactory converterFactory) {
|
||||
GitTagCommand(@Assisted GitContext context, HookContextFactory hookContextFactory, ScmEventBus eventBus, GitChangesetConverterFactory converterFactory) {
|
||||
super(context);
|
||||
this.hookContextFactory = hookContextFactory;
|
||||
this.eventBus = eventBus;
|
||||
@@ -254,4 +255,9 @@ public class GitTagCommand extends AbstractGitCommand implements TagCommand {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
TagCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.repository.spi;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
@@ -54,7 +55,7 @@ public class GitTagsCommand extends AbstractGitCommand implements TagsCommand {
|
||||
* @param context
|
||||
*/
|
||||
@Inject
|
||||
public GitTagsCommand(GitContext context, GitTagConverter gitTagConverter) {
|
||||
public GitTagsCommand(@Assisted GitContext context, GitTagConverter gitTagConverter) {
|
||||
super(context);
|
||||
this.gitTagConverter = gitTagConverter;
|
||||
}
|
||||
@@ -73,4 +74,9 @@ public class GitTagsCommand extends AbstractGitCommand implements TagsCommand {
|
||||
throw new InternalRepositoryException(repository, "could not read tags from repository", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
TagsCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.io.ByteSource;
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.GitAPIException;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
@@ -52,7 +53,7 @@ public class GitUnbundleCommand extends AbstractGitCommand implements UnbundleCo
|
||||
private final GitRepositoryHookEventFactory eventFactory;
|
||||
|
||||
@Inject
|
||||
GitUnbundleCommand(GitContext context, GitRepositoryHookEventFactory eventFactory) {
|
||||
GitUnbundleCommand(@Assisted GitContext context, GitRepositoryHookEventFactory eventFactory) {
|
||||
super(context);
|
||||
this.eventFactory = eventFactory;
|
||||
}
|
||||
@@ -107,4 +108,9 @@ public class GitUnbundleCommand extends AbstractGitCommand implements UnbundleCo
|
||||
private void unbundleRepositoryFromRequest(UnbundleCommandRequest request, Path repositoryDir) throws IOException {
|
||||
extractTar(request.getArchive().openBufferedStream(), repositoryDir).run();
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
UnbundleCommand create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.inject.assistedinject.Assisted;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.transport.FetchResult;
|
||||
import sonia.scm.ContextEntry;
|
||||
@@ -38,14 +39,14 @@ import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
class PostReceiveRepositoryHookEventFactory {
|
||||
public class PostReceiveRepositoryHookEventFactory {
|
||||
|
||||
private final ScmEventBus eventBus;
|
||||
private final GitRepositoryHookEventFactory eventFactory;
|
||||
private final GitContext context;
|
||||
|
||||
@Inject
|
||||
PostReceiveRepositoryHookEventFactory(ScmEventBus eventBus, GitRepositoryHookEventFactory eventFactory, GitContext context) {
|
||||
PostReceiveRepositoryHookEventFactory(ScmEventBus eventBus, GitRepositoryHookEventFactory eventFactory, @Assisted GitContext context) {
|
||||
this.eventBus = eventBus;
|
||||
this.eventFactory = eventFactory;
|
||||
this.context = context;
|
||||
@@ -81,4 +82,9 @@ class PostReceiveRepositoryHookEventFactory {
|
||||
.map(r -> r.getLeaf().getName().substring("refs/heads/".length()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public interface Factory {
|
||||
PostReceiveRepositoryHookEventFactory create(GitContext context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ package sonia.scm.web;
|
||||
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.inject.assistedinject.FactoryModuleBuilder;
|
||||
import com.google.inject.servlet.ServletModule;
|
||||
import org.eclipse.jgit.transport.ScmTransportProtocol;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
@@ -34,7 +35,54 @@ import sonia.scm.api.v2.resources.GitConfigToGitConfigDtoMapper;
|
||||
import sonia.scm.api.v2.resources.GitRepositoryConfigMapper;
|
||||
import sonia.scm.plugin.Extension;
|
||||
import sonia.scm.repository.GitWorkingCopyFactory;
|
||||
import sonia.scm.repository.spi.BlameCommand;
|
||||
import sonia.scm.repository.spi.BranchCommand;
|
||||
import sonia.scm.repository.spi.BranchDetailsCommand;
|
||||
import sonia.scm.repository.spi.BranchesCommand;
|
||||
import sonia.scm.repository.spi.BrowseCommand;
|
||||
import sonia.scm.repository.spi.BundleCommand;
|
||||
import sonia.scm.repository.spi.CatCommand;
|
||||
import sonia.scm.repository.spi.ChangesetsCommand;
|
||||
import sonia.scm.repository.spi.DiffCommand;
|
||||
import sonia.scm.repository.spi.DiffResultCommand;
|
||||
import sonia.scm.repository.spi.FileLockCommand;
|
||||
import sonia.scm.repository.spi.GitBlameCommand;
|
||||
import sonia.scm.repository.spi.GitBranchCommand;
|
||||
import sonia.scm.repository.spi.GitBranchDetailsCommand;
|
||||
import sonia.scm.repository.spi.GitBranchesCommand;
|
||||
import sonia.scm.repository.spi.GitBrowseCommand;
|
||||
import sonia.scm.repository.spi.GitBundleCommand;
|
||||
import sonia.scm.repository.spi.GitCatCommand;
|
||||
import sonia.scm.repository.spi.GitChangesetsCommand;
|
||||
import sonia.scm.repository.spi.GitDiffCommand;
|
||||
import sonia.scm.repository.spi.GitDiffResultCommand;
|
||||
import sonia.scm.repository.spi.GitFileLockCommand;
|
||||
import sonia.scm.repository.spi.GitIncomingCommand;
|
||||
import sonia.scm.repository.spi.GitLogCommand;
|
||||
import sonia.scm.repository.spi.GitMergeCommand;
|
||||
import sonia.scm.repository.spi.GitMirrorCommand;
|
||||
import sonia.scm.repository.spi.GitModificationsCommand;
|
||||
import sonia.scm.repository.spi.GitModifyCommand;
|
||||
import sonia.scm.repository.spi.GitOutgoingCommand;
|
||||
import sonia.scm.repository.spi.GitPullCommand;
|
||||
import sonia.scm.repository.spi.GitPushCommand;
|
||||
import sonia.scm.repository.spi.GitTagCommand;
|
||||
import sonia.scm.repository.spi.GitTagsCommand;
|
||||
import sonia.scm.repository.spi.GitUnbundleCommand;
|
||||
import sonia.scm.repository.spi.IncomingCommand;
|
||||
import sonia.scm.repository.spi.LogCommand;
|
||||
import sonia.scm.repository.spi.MergeCommand;
|
||||
import sonia.scm.repository.spi.MirrorCommand;
|
||||
import sonia.scm.repository.spi.ModificationsCommand;
|
||||
import sonia.scm.repository.spi.ModifyCommand;
|
||||
import sonia.scm.repository.spi.OutgoingCommand;
|
||||
import sonia.scm.repository.spi.PostReceiveRepositoryHookEventFactory;
|
||||
import sonia.scm.repository.spi.PullCommand;
|
||||
import sonia.scm.repository.spi.PushCommand;
|
||||
import sonia.scm.repository.spi.SimpleGitWorkingCopyFactory;
|
||||
import sonia.scm.repository.spi.TagCommand;
|
||||
import sonia.scm.repository.spi.TagsCommand;
|
||||
import sonia.scm.repository.spi.UnbundleCommand;
|
||||
import sonia.scm.web.lfs.LfsBlobStoreFactory;
|
||||
|
||||
/**
|
||||
@@ -57,5 +105,32 @@ public class GitServletModule extends ServletModule {
|
||||
bind(GitRepositoryConfigMapper.class).to(Mappers.getMapper(GitRepositoryConfigMapper.class).getClass());
|
||||
|
||||
bind(GitWorkingCopyFactory.class).to(SimpleGitWorkingCopyFactory.class);
|
||||
|
||||
install(new FactoryModuleBuilder().implement(BranchCommand.class, GitBranchCommand.class).build(GitBranchCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(BlameCommand.class, GitBlameCommand.class).build(GitBlameCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(BranchesCommand.class, GitBranchesCommand.class).build(GitBranchesCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(BrowseCommand.class, GitBrowseCommand.class).build(GitBrowseCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(CatCommand.class, GitCatCommand.class).build(GitCatCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(DiffCommand.class, GitDiffCommand.class).build(GitDiffCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(DiffResultCommand.class, GitDiffResultCommand.class).build(GitDiffResultCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(IncomingCommand.class, GitIncomingCommand.class).build(GitIncomingCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(LogCommand.class, GitLogCommand.class).build(GitLogCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(ModificationsCommand.class, GitModificationsCommand.class).build(GitModificationsCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(OutgoingCommand.class, GitOutgoingCommand.class).build(GitOutgoingCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(PullCommand.class, GitPullCommand.class).build(GitPullCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(PostReceiveRepositoryHookEventFactory.class, PostReceiveRepositoryHookEventFactory.class).build(PostReceiveRepositoryHookEventFactory.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(PushCommand.class, GitPushCommand.class).build(GitPushCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(TagsCommand.class, GitTagsCommand.class).build(GitTagsCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(TagCommand.class, GitTagCommand.class).build(GitTagCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(MergeCommand.class, GitMergeCommand.class).build(GitMergeCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(ModifyCommand.class, GitModifyCommand.class).build(GitModifyCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(BundleCommand.class, GitBundleCommand.class).build(GitBundleCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(UnbundleCommand.class, GitUnbundleCommand.class).build(GitUnbundleCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(MirrorCommand.class, GitMirrorCommand.class).build(GitMirrorCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(FileLockCommand.class, GitFileLockCommand.class).build(GitFileLockCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(BranchDetailsCommand.class, GitBranchDetailsCommand.class).build(GitBranchDetailsCommand.Factory.class));
|
||||
install(new FactoryModuleBuilder().implement(ChangesetsCommand.class, GitChangesetsCommand.class).build(GitChangesetsCommand.Factory.class));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ package sonia.scm.repository.spi;
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Module;
|
||||
import com.google.inject.assistedinject.FactoryModuleBuilder;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
@@ -59,6 +61,7 @@ class GitRepositoryServiceProviderTest {
|
||||
}
|
||||
|
||||
private GitRepositoryServiceProvider createProvider() {
|
||||
|
||||
return new GitRepositoryServiceProvider(createParentInjector(), context);
|
||||
}
|
||||
|
||||
@@ -67,6 +70,9 @@ class GitRepositoryServiceProviderTest {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(GitRepositoryHandler.class).toInstance(handler);
|
||||
FactoryModuleBuilder builder = new FactoryModuleBuilder();
|
||||
Module module = builder.implement(PushCommand.class, GitPushCommand.class).build(GitPushCommand.Factory.class);
|
||||
install(module);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user