diff --git a/utilities/testrunner/test-user-model.owl b/utilities/testrunner/test-user-model.owl index c6e9a3523..a84b13707 100644 --- a/utilities/testrunner/test-user-model.owl +++ b/utilities/testrunner/test-user-model.owl @@ -16,7 +16,7 @@ ACTIVE 1 0 - + @@ -28,7 +28,7 @@ ACTIVE 1 0 - + @@ -40,7 +40,7 @@ ACTIVE 1 0 - + @@ -52,7 +52,7 @@ ACTIVE 1 0 - + diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MultipartRequestWrapper.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MultipartRequestWrapper.java index 02a7eee72..861d400f8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MultipartRequestWrapper.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MultipartRequestWrapper.java @@ -18,8 +18,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import org.apache.commons.fileupload.FileItem; -import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; +import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; +import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.logging.Log; @@ -188,7 +189,7 @@ public class MultipartRequestWrapper extends HttpServletRequestWrapper { ParsingStrategy strategy) throws IOException { try { return upload.parseRequest(req); - } catch (FileSizeLimitExceededException e) { + } catch (FileSizeLimitExceededException | SizeLimitExceededException e) { if (strategy.stashFileSizeException()) { req.setAttribute(ATTRIBUTE_FILE_SIZE_EXCEPTION, e); return Collections.emptyList(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java index 9878fe0b9..b1f0da510 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/VitroRequest.java @@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import org.apache.commons.fileupload.FileItem; -import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; +import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -285,10 +285,14 @@ public class VitroRequest extends HttpServletRequestWrapper { return getFileSizeException() != null; } - public FileSizeLimitExceededException getFileSizeException() { + /** + * Could be either FileSizeLimitExceededException or + * SizeLimitExceededException, so return their common ancestor. + */ + public FileUploadException getFileSizeException() { Object e = getAttribute(ATTRIBUTE_FILE_SIZE_EXCEPTION); - if (e instanceof FileSizeLimitExceededException) { - return (FileSizeLimitExceededException) e; + if (e instanceof FileUploadException) { + return (FileUploadException) e; } else { return null; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java index 8b385314f..7daf6c025 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java @@ -188,12 +188,13 @@ public class ImageUploadController extends FreemarkerHttpServlet { */ @Override protected ResponseValues processRequest(VitroRequest vreq) { + Individual entity = null; try { + entity = validateEntityUri(vreq); + checkForFileTooBigException(vreq); String action = vreq.getParameter(PARAMETER_ACTION); - - Individual entity = validateEntityUri(vreq); if (ACTION_UPLOAD.equals(action)) { return doUploadImage(vreq, entity); } else if (ACTION_SAVE.equals(action)) { @@ -208,8 +209,8 @@ public class ImageUploadController extends FreemarkerHttpServlet { return doIntroScreen(vreq, entity); } } catch (UserMistakeException e) { - // Can't find the entity? Complain. - return showAddImagePageWithError(vreq, null, e.formatMessage(vreq)); + // Can't find the entity? Image too large? Complain. + return showAddImagePageWithError(vreq, entity, e.formatMessage(vreq)); } catch (Exception e) { // We weren't expecting this - log it, and apologize to the user. return new ExceptionResponseValues(e);