1 package com.atlassian.plugins.rest.common.multipart;
2
3 import com.google.common.annotations.VisibleForTesting;
4 import com.google.common.base.Suppliers;
5 import com.google.common.base.Supplier;
6 import javax.ws.rs.WebApplicationException;
7 import javax.ws.rs.core.Response;
8
9
10
11
12
13
14 public class FileSizeLimitExceededException extends WebApplicationException {
15 private final static int PAYLOAD_TOO_LARGE = 413;
16 private final static int NOT_FOUND = Response.Status.NOT_FOUND.getStatusCode();
17 public final static String LEGACY_MODE_KEY =
18 "atlassian.rest.filesize.exceeded.statuscode.legacy.enabled";
19
20 @VisibleForTesting
21 @Deprecated
22 final static Supplier<Boolean> legacyMode =
23 Suppliers.memoize(() -> Boolean.getBoolean(LEGACY_MODE_KEY));
24
25 private static int getStatusCode() {
26 return legacyMode.get() ? NOT_FOUND : PAYLOAD_TOO_LARGE;
27 }
28
29 public FileSizeLimitExceededException(String message) {
30 super(Response.status(getStatusCode()).entity(message).build());
31 }
32 }