send mercurial hook error messages to client

This commit is contained in:
Sebastian Sdorra
2013-04-02 21:57:23 +02:00
parent 2e54ff171d
commit db5a17fa9e
2 changed files with 45 additions and 0 deletions

View File

@@ -35,6 +35,7 @@ package sonia.scm.web;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.io.Closeables;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
@@ -61,6 +62,7 @@ import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -294,6 +296,10 @@ public class HgHookCallbackServlet extends HttpServlet
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
catch (Exception ex)
{
sendError(response, ex);
}
}
/**
@@ -350,6 +356,39 @@ public class HgHookCallbackServlet extends HttpServlet
}
}
/**
* Method description
*
*
* @param response
* @param ex
*
* @throws IOException
*/
private void sendError(HttpServletResponse response, Exception ex)
throws IOException
{
logger.warn("hook ended with exception", ex);
response.setStatus(HttpServletResponse.SC_CONFLICT);
String msg = ex.getMessage();
if (msg != null)
{
PrintWriter writer = null;
try
{
writer = response.getWriter();
writer.println(msg);
}
finally
{
Closeables.closeQuietly(writer);
}
}
}
//~--- get methods ----------------------------------------------------------
/**