mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-06 13:35:44 +01:00
Use repository dao to find repository for given directory in hooks
This commit is contained in:
@@ -38,24 +38,21 @@ package org.eclipse.jgit.transport;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
import org.eclipse.jgit.errors.NoRemoteRepositoryException;
|
||||
import org.eclipse.jgit.errors.NotSupportedException;
|
||||
import org.eclipse.jgit.errors.TransportException;
|
||||
import org.eclipse.jgit.internal.JGitText;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.lib.RepositoryCache;
|
||||
|
||||
import sonia.scm.repository.GitRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryDAO;
|
||||
import sonia.scm.repository.spi.HookEventFacade;
|
||||
import sonia.scm.web.GitReceiveHook;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Sdorra
|
||||
@@ -75,24 +72,15 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
* Constructs ...
|
||||
*
|
||||
*/
|
||||
public ScmTransportProtocol() {}
|
||||
// public ScmTransportProtocol() {}
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param hookEventFacadeProvider
|
||||
*
|
||||
* @param repositoryHandlerProvider
|
||||
*/
|
||||
@Inject
|
||||
public ScmTransportProtocol(
|
||||
Provider<HookEventFacade> hookEventFacadeProvider,
|
||||
Provider<GitRepositoryHandler> repositoryHandlerProvider)
|
||||
RepositoryDAO repositoryDAO)
|
||||
{
|
||||
this.hookEventFacadeProvider = hookEventFacadeProvider;
|
||||
this.repositoryHandlerProvider = repositoryHandlerProvider;
|
||||
this.repositoryDAO = repositoryDAO;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
@@ -136,7 +124,7 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
*/
|
||||
@Override
|
||||
public Transport open(URIish uri, Repository local, String remoteName)
|
||||
throws NotSupportedException, TransportException
|
||||
throws TransportException
|
||||
{
|
||||
File localDirectory = local.getDirectory();
|
||||
File path = local.getFS().resolve(localDirectory, uri.getPath());
|
||||
@@ -150,8 +138,7 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
//J-
|
||||
return new TransportLocalWithHooks(
|
||||
hookEventFacadeProvider.get(),
|
||||
repositoryHandlerProvider.get(),
|
||||
local, uri, gitDir
|
||||
local, uri, gitDir, repositoryDAO
|
||||
);
|
||||
//J+
|
||||
}
|
||||
@@ -194,23 +181,12 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
private static class TransportLocalWithHooks extends TransportLocal
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param hookEventFacade
|
||||
* @param handler
|
||||
* @param local
|
||||
* @param uri
|
||||
* @param gitDir
|
||||
*/
|
||||
public TransportLocalWithHooks(HookEventFacade hookEventFacade,
|
||||
GitRepositoryHandler handler, Repository local, URIish uri, File gitDir)
|
||||
Repository local, URIish uri, File gitDir, RepositoryDAO repositoryDAO)
|
||||
{
|
||||
super(local, uri, gitDir);
|
||||
this.hookEventFacade = hookEventFacade;
|
||||
this.handler = handler;
|
||||
this.repositoryDAO = repositoryDAO;
|
||||
}
|
||||
|
||||
//~--- methods ------------------------------------------------------------
|
||||
@@ -228,9 +204,9 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
{
|
||||
ReceivePack pack = new ReceivePack(dst);
|
||||
|
||||
if ((hookEventFacade != null) && (handler != null))
|
||||
if (hookEventFacade != null)
|
||||
{
|
||||
GitReceiveHook hook = new GitReceiveHook(hookEventFacade, handler);
|
||||
GitReceiveHook hook = new GitReceiveHook(hookEventFacade, repositoryDAO);
|
||||
|
||||
pack.setPreReceiveHook(hook);
|
||||
pack.setPostReceiveHook(hook);
|
||||
@@ -241,11 +217,9 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
|
||||
//~--- fields -------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
private GitRepositoryHandler handler;
|
||||
|
||||
/** Field description */
|
||||
private HookEventFacade hookEventFacade;
|
||||
private RepositoryDAO repositoryDAO;
|
||||
}
|
||||
|
||||
|
||||
@@ -254,6 +228,5 @@ public class ScmTransportProtocol extends TransportProtocol
|
||||
/** Field description */
|
||||
private Provider<HookEventFacade> hookEventFacadeProvider;
|
||||
|
||||
/** Field description */
|
||||
private Provider<GitRepositoryHandler> repositoryHandlerProvider;
|
||||
private RepositoryDAO repositoryDAO;
|
||||
}
|
||||
|
||||
@@ -42,9 +42,8 @@ import org.eclipse.jgit.transport.ReceiveCommand;
|
||||
import org.eclipse.jgit.transport.ReceivePack;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sonia.scm.repository.GitRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryDAO;
|
||||
import sonia.scm.repository.RepositoryHookType;
|
||||
import sonia.scm.repository.RepositoryUtil;
|
||||
import sonia.scm.repository.spi.GitHookContextProvider;
|
||||
import sonia.scm.repository.spi.HookEventFacade;
|
||||
|
||||
@@ -68,19 +67,10 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param hookEventFacade
|
||||
* @param handler
|
||||
*/
|
||||
public GitReceiveHook(HookEventFacade hookEventFacade,
|
||||
GitRepositoryHandler handler)
|
||||
public GitReceiveHook(HookEventFacade hookEventFacade, RepositoryDAO repositoryDAO)
|
||||
{
|
||||
this.hookEventFacade = hookEventFacade;
|
||||
this.handler = handler;
|
||||
this.repositoryDAO = repositoryDAO;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
@@ -187,7 +177,7 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private String resolveRepositoryId(Repository repository) throws IOException
|
||||
private String resolveRepositoryId(Repository repository)
|
||||
{
|
||||
File directory;
|
||||
|
||||
@@ -200,14 +190,13 @@ public class GitReceiveHook implements PreReceiveHook, PostReceiveHook
|
||||
directory = repository.getWorkTree();
|
||||
}
|
||||
|
||||
return RepositoryUtil.getRepositoryId(handler, directory);
|
||||
return repositoryDAO.getIdForDirectory(directory);
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
private GitRepositoryHandler handler;
|
||||
|
||||
/** Field description */
|
||||
private HookEventFacade hookEventFacade;
|
||||
|
||||
private final RepositoryDAO repositoryDAO;
|
||||
}
|
||||
|
||||
@@ -36,21 +36,19 @@ package sonia.scm.web;
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.transport.ReceivePack;
|
||||
import org.eclipse.jgit.transport.resolver.ReceivePackFactory;
|
||||
import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException;
|
||||
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
|
||||
|
||||
import sonia.scm.repository.GitRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryDAO;
|
||||
import sonia.scm.repository.spi.HookEventFacade;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Sdorra
|
||||
@@ -59,19 +57,10 @@ public class GitReceivePackFactory
|
||||
implements ReceivePackFactory<HttpServletRequest>
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param hookEventFacade
|
||||
* @param handler
|
||||
*/
|
||||
@Inject
|
||||
public GitReceivePackFactory(HookEventFacade hookEventFacade,
|
||||
GitRepositoryHandler handler)
|
||||
public GitReceivePackFactory(HookEventFacade hookEventFacade, RepositoryDAO repositoryDAO)
|
||||
{
|
||||
hook = new GitReceiveHook(hookEventFacade, handler);
|
||||
hook = new GitReceiveHook(hookEventFacade, repositoryDAO);
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
|
||||
@@ -127,15 +127,7 @@ public class AbstractRemoteCommandTestBase
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}, new Provider<GitRepositoryHandler>()
|
||||
{
|
||||
|
||||
@Override
|
||||
public GitRepositoryHandler get()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}, null);
|
||||
Transport.register(proto);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user