Extract Exception -> HTTP status code mapping for reuse
Extract private static method UploadPackServlet#statusCodeForThrowable to a public static method in the UploadPackErrorHandler interface so that implementers of this interface can reuse the default mapping. Change-Id: Ie4a0a006b0148d5b828d610c55d19ce407aab055
This commit is contained in:
parent
ac127a7932
commit
5bf7472e0c
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<component id="org.eclipse.jgit.http.server" version="2">
|
||||
<resource path="src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java" type="org.eclipse.jgit.http.server.UploadPackErrorHandler">
|
||||
<filter id="1210056707">
|
||||
<message_arguments>
|
||||
<message_argument value="6.1.1"/>
|
||||
<message_argument value="statusCodeForThrowable(Throwable)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
</component>
|
|
@ -9,13 +9,19 @@
|
|||
*/
|
||||
package org.eclipse.jgit.http.server;
|
||||
|
||||
import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.eclipse.jgit.errors.PackProtocolException;
|
||||
import org.eclipse.jgit.transport.ServiceMayNotContinueException;
|
||||
import org.eclipse.jgit.transport.UploadPack;
|
||||
import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
|
||||
|
||||
/**
|
||||
* Handle git-upload-pack errors.
|
||||
|
@ -34,6 +40,24 @@
|
|||
* @since 5.6
|
||||
*/
|
||||
public interface UploadPackErrorHandler {
|
||||
/**
|
||||
* Maps a thrown git related Exception to an appropriate HTTP status code.
|
||||
*
|
||||
* @param error
|
||||
* The thrown Exception.
|
||||
* @return the HTTP status code as an int
|
||||
* @since 6.1.1
|
||||
*/
|
||||
public static int statusCodeForThrowable(Throwable error) {
|
||||
if (error instanceof ServiceNotEnabledException) {
|
||||
return SC_FORBIDDEN;
|
||||
}
|
||||
if (error instanceof PackProtocolException) {
|
||||
// Internal git errors are not errors from an HTTP standpoint.
|
||||
return SC_OK;
|
||||
}
|
||||
return SC_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
/**
|
||||
* @param req
|
||||
* The HTTP request
|
||||
|
|
|
@ -11,8 +11,6 @@
|
|||
package org.eclipse.jgit.http.server;
|
||||
|
||||
import static javax.servlet.http.HttpServletResponse.SC_FORBIDDEN;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE;
|
||||
import static org.eclipse.jgit.http.server.GitSmartHttpTools.UPLOAD_PACK;
|
||||
|
@ -23,6 +21,7 @@
|
|||
import static org.eclipse.jgit.http.server.ServletUtils.consumeRequestBody;
|
||||
import static org.eclipse.jgit.http.server.ServletUtils.getInputStream;
|
||||
import static org.eclipse.jgit.http.server.ServletUtils.getRepository;
|
||||
import static org.eclipse.jgit.http.server.UploadPackErrorHandler.statusCodeForThrowable;
|
||||
import static org.eclipse.jgit.util.HttpSupport.HDR_USER_AGENT;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -152,17 +151,6 @@ public void destroy() {
|
|||
}
|
||||
}
|
||||
|
||||
private static int statusCodeForThrowable(Throwable error) {
|
||||
if (error instanceof ServiceNotEnabledException) {
|
||||
return SC_FORBIDDEN;
|
||||
}
|
||||
if (error instanceof PackProtocolException) {
|
||||
// Internal git errors is not an error from an HTTP standpoint.
|
||||
return SC_OK;
|
||||
}
|
||||
return SC_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
private final UploadPackErrorHandler handler;
|
||||
|
||||
UploadPackServlet(@Nullable UploadPackErrorHandler handler) {
|
||||
|
|
Loading…
Reference in New Issue