Expose conflict errors

This commit is contained in:
René Pfeuffer
2019-03-08 08:58:09 +01:00
parent 67431b1e2b
commit b0f95fbcc6
2 changed files with 11 additions and 1 deletions

View File

@@ -52,6 +52,13 @@ export class NotFoundError extends BackendError {
super(content, "NotFoundError", statusCode); super(content, "NotFoundError", statusCode);
} }
} }
export class ConflictError extends BackendError {
constructor(content: BackendErrorContent, statusCode: number) {
super(content, "ConflictError", statusCode);
}
}
export function createBackendError( export function createBackendError(
content: BackendErrorContent, content: BackendErrorContent,
statusCode: number statusCode: number
@@ -59,6 +66,8 @@ export function createBackendError(
switch (statusCode) { switch (statusCode) {
case 404: case 404:
return new NotFoundError(content, statusCode); return new NotFoundError(content, statusCode);
case 409:
return new ConflictError(content, statusCode);
default: default:
return new BackendError(content, "BackendError", statusCode); return new BackendError(content, "BackendError", statusCode);
} }

View File

@@ -4,6 +4,7 @@ import com.webcohesion.enunciate.metadata.rs.ResponseCode;
import com.webcohesion.enunciate.metadata.rs.StatusCodes; import com.webcohesion.enunciate.metadata.rs.StatusCodes;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import sonia.scm.ConcurrentModificationException;
import sonia.scm.repository.NamespaceAndName; import sonia.scm.repository.NamespaceAndName;
import sonia.scm.repository.api.MergeCommandBuilder; import sonia.scm.repository.api.MergeCommandBuilder;
import sonia.scm.repository.api.MergeCommandResult; import sonia.scm.repository.api.MergeCommandResult;
@@ -73,7 +74,7 @@ public class MergeResource {
if (mergeCommandResult.isMergeable()) { if (mergeCommandResult.isMergeable()) {
return Response.noContent().build(); return Response.noContent().build();
} else { } else {
return Response.status(HttpStatus.SC_CONFLICT).build(); throw new ConcurrentModificationException("revision", mergeCommand.getTargetRevision());
} }
} }
} }