mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-10 23:45:44 +01:00
Adjust to repository storage with id
This commit is contained in:
@@ -34,20 +34,18 @@ package sonia.scm.repository.spi;
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import com.aragost.javahg.Repository;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.repository.HgHookManager;
|
||||
import sonia.scm.repository.HgRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryHookType;
|
||||
import sonia.scm.repository.spi.javahg.HgLogChangesetCommand;
|
||||
import sonia.scm.web.HgUtil;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
import java.io.File;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Sdorra
|
||||
@@ -63,22 +61,12 @@ public class HgHookChangesetProvider implements HookChangesetProvider
|
||||
|
||||
//~--- constructors ---------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Constructs ...
|
||||
*
|
||||
*
|
||||
* @param handler
|
||||
* @param repositoryName
|
||||
* @param hookManager
|
||||
* @param startRev
|
||||
* @param type
|
||||
*/
|
||||
public HgHookChangesetProvider(HgRepositoryHandler handler,
|
||||
String repositoryName, HgHookManager hookManager, String startRev,
|
||||
String id, HgHookManager hookManager, String startRev,
|
||||
RepositoryHookType type)
|
||||
{
|
||||
this.handler = handler;
|
||||
this.repositoryName = repositoryName;
|
||||
this.id = id;
|
||||
this.hookManager = hookManager;
|
||||
this.startRev = startRev;
|
||||
this.type = type;
|
||||
@@ -136,7 +124,7 @@ public class HgHookChangesetProvider implements HookChangesetProvider
|
||||
private Repository open()
|
||||
{
|
||||
File directory = handler.getConfig().getRepositoryDirectory();
|
||||
File repositoryDirectory = new File(directory, repositoryName);
|
||||
File repositoryDirectory = new File(directory, id);
|
||||
|
||||
// use HG_PENDING only for pre receive hooks
|
||||
boolean pending = type == RepositoryHookType.PRE_RECEIVE;
|
||||
@@ -155,7 +143,7 @@ public class HgHookChangesetProvider implements HookChangesetProvider
|
||||
private HgHookManager hookManager;
|
||||
|
||||
/** Field description */
|
||||
private String repositoryName;
|
||||
private String id;
|
||||
|
||||
/** Field description */
|
||||
private HookChangesetResponse response;
|
||||
|
||||
@@ -38,16 +38,16 @@ import sonia.scm.repository.HgRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryHookType;
|
||||
import sonia.scm.repository.api.HgHookBranchProvider;
|
||||
import sonia.scm.repository.api.HgHookMessageProvider;
|
||||
import sonia.scm.repository.api.HgHookTagProvider;
|
||||
import sonia.scm.repository.api.HookBranchProvider;
|
||||
import sonia.scm.repository.api.HookFeature;
|
||||
import sonia.scm.repository.api.HookMessageProvider;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
import sonia.scm.repository.api.HookTagProvider;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
import sonia.scm.repository.api.HgHookTagProvider;
|
||||
import sonia.scm.repository.api.HookTagProvider;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Mercurial implementation of {@link HookContextProvider}.
|
||||
@@ -67,17 +67,16 @@ public class HgHookContextProvider extends HookContextProvider
|
||||
* Constructs a new instance.
|
||||
*
|
||||
* @param handler mercurial repository handler
|
||||
* @param repositoryName name of changed repository
|
||||
* @param namespaceAndName namespace and name of changed repository
|
||||
* @param hookManager mercurial hook manager
|
||||
* @param startRev start revision
|
||||
* @param type type of hook
|
||||
*/
|
||||
public HgHookContextProvider(HgRepositoryHandler handler,
|
||||
String repositoryName, HgHookManager hookManager, String startRev,
|
||||
String id, HgHookManager hookManager, String startRev,
|
||||
RepositoryHookType type)
|
||||
{
|
||||
this.hookChangesetProvider = new HgHookChangesetProvider(handler,
|
||||
repositoryName, hookManager, startRev, type);
|
||||
this.hookChangesetProvider = new HgHookChangesetProvider(handler, id, hookManager, startRev, type);
|
||||
}
|
||||
|
||||
//~--- get methods ----------------------------------------------------------
|
||||
|
||||
@@ -40,13 +40,10 @@ import com.google.common.io.Closeables;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import sonia.scm.repository.HgContext;
|
||||
import sonia.scm.repository.HgHookManager;
|
||||
import sonia.scm.repository.HgRepositoryHandler;
|
||||
@@ -62,19 +59,17 @@ import sonia.scm.security.Tokens;
|
||||
import sonia.scm.util.HttpUtil;
|
||||
import sonia.scm.util.Util;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
//~--- JDK imports ------------------------------------------------------------
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -187,7 +182,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
|
||||
if (m.matches())
|
||||
{
|
||||
String repositoryId = getRepositoryName(request);
|
||||
String id = getRepositoryId(request);
|
||||
String type = m.group(1);
|
||||
String challenge = request.getParameter(PARAM_CHALLENGE);
|
||||
|
||||
@@ -204,7 +199,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
authenticate(request, credentials);
|
||||
}
|
||||
|
||||
hookCallback(response, repositoryId, type, challenge, node);
|
||||
hookCallback(response, id, type, challenge, node);
|
||||
}
|
||||
else if (logger.isDebugEnabled())
|
||||
{
|
||||
@@ -227,13 +222,6 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param request
|
||||
* @param credentials
|
||||
*/
|
||||
private void authenticate(HttpServletRequest request, String credentials)
|
||||
{
|
||||
try
|
||||
@@ -270,18 +258,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param response
|
||||
* @param repositoryName
|
||||
* @param node
|
||||
* @param type
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private void fireHook(HttpServletResponse response, String repositoryName,
|
||||
private void fireHook(HttpServletResponse response, String id,
|
||||
String node, RepositoryHookType type)
|
||||
throws IOException
|
||||
{
|
||||
@@ -294,11 +271,10 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
contextProvider.get().setPending(true);
|
||||
}
|
||||
|
||||
context = new HgHookContextProvider(handler, repositoryName, hookManager,
|
||||
context = new HgHookContextProvider(handler, id, hookManager,
|
||||
node, type);
|
||||
|
||||
hookEventFacade.handle(HgRepositoryHandler.TYPE_NAME,
|
||||
repositoryName).fireHookEvent(type, context);
|
||||
hookEventFacade.handle(id).fireHookEvent(type, context);
|
||||
|
||||
printMessages(response, context);
|
||||
}
|
||||
@@ -306,7 +282,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
{
|
||||
if (logger.isErrorEnabled())
|
||||
{
|
||||
logger.error("could not find repository {}", repositoryName);
|
||||
logger.error("could not find repository with id {}", id);
|
||||
|
||||
if (logger.isTraceEnabled())
|
||||
{
|
||||
@@ -322,22 +298,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param response
|
||||
* @param repositoryName
|
||||
* @param typeName
|
||||
* @param challenge
|
||||
* @param node
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private void hookCallback(HttpServletResponse response,
|
||||
String repositoryName, String typeName, String challenge, String node)
|
||||
throws IOException
|
||||
{
|
||||
private void hookCallback(HttpServletResponse response, String id, String typeName, String challenge, String node) throws IOException {
|
||||
if (hookManager.isAcceptAble(challenge))
|
||||
{
|
||||
RepositoryHookType type = null;
|
||||
@@ -353,7 +314,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
|
||||
if (type != null)
|
||||
{
|
||||
fireHook(response, repositoryName, node, type);
|
||||
fireHook(response, id, node, type);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -403,12 +364,12 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param resonse
|
||||
* @param response
|
||||
* @param context
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private void printMessages(HttpServletResponse resonse,
|
||||
private void printMessages(HttpServletResponse response,
|
||||
HgHookContextProvider context)
|
||||
throws IOException
|
||||
{
|
||||
@@ -420,7 +381,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
|
||||
try
|
||||
{
|
||||
writer = resonse.getWriter();
|
||||
writer = response.getWriter();
|
||||
|
||||
printMessages(writer, msgs);
|
||||
}
|
||||
@@ -506,9 +467,9 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private String getRepositoryName(HttpServletRequest request)
|
||||
private String getRepositoryId(HttpServletRequest request)
|
||||
{
|
||||
String name = null;
|
||||
String id = null;
|
||||
String path = request.getParameter(PARAM_REPOSITORYPATH);
|
||||
|
||||
if (Util.isNotEmpty(path))
|
||||
@@ -520,11 +481,11 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
*/
|
||||
try
|
||||
{
|
||||
name = RepositoryUtil.getRepositoryName(handler, path);
|
||||
id = RepositoryUtil.getRepositoryId(handler, path);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
logger.error("could not find name of repository", ex);
|
||||
logger.error("could not find namespace and name of repository", ex);
|
||||
}
|
||||
}
|
||||
else if (logger.isWarnEnabled())
|
||||
@@ -532,7 +493,7 @@ public class HgHookCallbackServlet extends HttpServlet
|
||||
logger.warn("no repository path parameter found");
|
||||
}
|
||||
|
||||
return name;
|
||||
return id;
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user