Repository: struts Updated Branches: refs/heads/master 6dcff10a6 -> 82f61666f
WW-4767 Makes some methods protected instead private to allow override them when subclassing Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/82f61666 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/82f61666 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/82f61666 Branch: refs/heads/master Commit: 82f61666f8f8337f4aa23e5ed38d66aa12f87b4c Parents: 6dcff10 Author: Lukasz Lenart <lukaszlen...@apache.org> Authored: Thu Mar 23 07:14:32 2017 +0100 Committer: Lukasz Lenart <lukaszlen...@apache.org> Committed: Thu Mar 23 07:14:32 2017 +0100 ---------------------------------------------------------------------- .../multipart/AbstractMultiPartRequest.java | 17 +++++++++ .../multipart/JakartaMultiPartRequest.java | 32 ++++------------ .../JakartaStreamMultiPartRequest.java | 39 ++++++-------------- 3 files changed, 37 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/82f61666/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java index cc20523..10ed6cd 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java @@ -107,4 +107,21 @@ public abstract class AbstractMultiPartRequest implements MultiPartRequest { return errors; } + /** + * @param originalFileName file name + * @return the canonical name based on the supplied filename + */ + protected String getCanonicalName(final String originalFileName) { + String fileName = originalFileName; + + int forwardSlash = fileName.lastIndexOf("/"); + int backwardSlash = fileName.lastIndexOf("\\"); + if (forwardSlash != -1 && forwardSlash > backwardSlash) { + fileName = fileName.substring(forwardSlash + 1, fileName.length()); + } else { + fileName = fileName.substring(backwardSlash + 1, fileName.length()); + } + return fileName; + } + } http://git-wip-us.apache.org/repos/asf/struts/blob/82f61666/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java index e6fab1e..68bbd2b 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java @@ -87,12 +87,14 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest { } protected void processUpload(HttpServletRequest request, String saveDir) throws FileUploadException, UnsupportedEncodingException { - for (FileItem item : parseRequest(request, saveDir)) { - LOG.debug("Found file item: [{}]", item.getFieldName()); - if (item.isFormField()) { - processNormalFormField(item, request.getCharacterEncoding()); - } else { - processFileField(item); + if (ServletFileUpload.isMultipartContent(request)) { + for (FileItem item : parseRequest(request, saveDir)) { + LOG.debug("Found file item: [{}]", item.getFieldName()); + if (item.isFormField()) { + processNormalFormField(item, request.getCharacterEncoding()); + } else { + processFileField(item); + } } } } @@ -281,24 +283,6 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest { } /** - * Returns the canonical name of the given file. - * - * @param filename the given file - * @return the canonical name of the given file - */ - private String getCanonicalName(String filename) { - int forwardSlash = filename.lastIndexOf("/"); - int backwardSlash = filename.lastIndexOf("\\"); - if (forwardSlash != -1 && forwardSlash > backwardSlash) { - filename = filename.substring(forwardSlash + 1, filename.length()); - } else if (backwardSlash != -1 && backwardSlash >= forwardSlash) { - filename = filename.substring(backwardSlash + 1, filename.length()); - } - - return filename; - } - - /** * Creates a RequestContext needed by Jakarta Commons Upload. * * @param req the request. http://git-wip-us.apache.org/repos/asf/struts/blob/82f61666/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java index 11b5a0d..4703338 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java @@ -30,12 +30,12 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { /** * Map between file fields and file data. */ - private Map<String, List<FileInfo>> fileInfos = new HashMap<>(); + protected Map<String, List<FileInfo>> fileInfos = new HashMap<>(); /** * Map between non-file fields and values. */ - private Map<String, List<String>> parameters = new HashMap<>(); + protected Map<String, List<String>> parameters = new HashMap<>(); /* (non-Javadoc) * @see org.apache.struts2.dispatcher.multipart.MultiPartRequest#cleanUp() @@ -180,7 +180,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param saveDir location of the save dir * @throws Exception */ - private void processUpload(HttpServletRequest request, String saveDir) throws Exception { + protected void processUpload(HttpServletRequest request, String saveDir) throws Exception { // Sanity check that the request is a multi-part/form-data request. if (ServletFileUpload.isMultipartContent(request)) { @@ -233,7 +233,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param request the servlet request * @return true if request size is permitted */ - private boolean isRequestSizePermitted(HttpServletRequest request) { + protected boolean isRequestSizePermitted(HttpServletRequest request) { // if maxSize is specified as -1, there is no sanity check and it's // safe to return true for any request, delegating the failure // checks later in the upload process. @@ -248,7 +248,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param request the servlet request * @return the request content length. */ - private long getRequestSize(HttpServletRequest request) { + protected long getRequestSize(HttpServletRequest request) { long requestSize = 0; if (request != null) { requestSize = request.getContentLength(); @@ -263,7 +263,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param fileName file name * @param request the servlet request */ - private void addFileSkippedError(String fileName, HttpServletRequest request) { + protected void addFileSkippedError(String fileName, HttpServletRequest request) { String exceptionMessage = "Skipped file " + fileName + "; request size limit exceeded."; FileSizeLimitExceededException exception = new FileUploadBase.FileSizeLimitExceededException(exceptionMessage, getRequestSize(request), maxSize); LocalizedMessage message = buildErrorMessage(exception, new Object[]{fileName, getRequestSize(request), maxSize}); @@ -277,7 +277,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * * @param itemStream file item stream */ - private void processFileItemStreamAsFormField(FileItemStream itemStream) { + protected void processFileItemStreamAsFormField(FileItemStream itemStream) { String fieldName = itemStream.getFieldName(); try { List<String> values; @@ -300,7 +300,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param itemStream file item stream * @param location location */ - private void processFileItemStreamAsFileField(FileItemStream itemStream, String location) { + protected void processFileItemStreamAsFileField(FileItemStream itemStream, String location) { // Skip file uploads that don't have a file name - meaning that no file was selected. if (itemStream.getName() == null || itemStream.getName().trim().length() < 1) { LOG.debug("No file has been uploaded for the field: {}", itemStream.getFieldName()); @@ -334,7 +334,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @return temporary file based on the given filename and location * @throws IOException in case of IO errors */ - private File createTemporaryFile(String fileName, String location) throws IOException { + protected File createTemporaryFile(String fileName, String location) throws IOException { String name = fileName .substring(fileName.lastIndexOf('/') + 1) .substring(fileName.lastIndexOf('\\') + 1); @@ -364,7 +364,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @return true if stream was successfully * @throws IOException in case of IO errors */ - private boolean streamFileToDisk(FileItemStream itemStream, File file) throws IOException { + protected boolean streamFileToDisk(FileItemStream itemStream, File file) throws IOException { boolean result = false; try (InputStream input = itemStream.openStream(); OutputStream output = new BufferedOutputStream(new FileOutputStream(file), bufferSize)) { @@ -386,7 +386,7 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { * @param itemStream file item stream * @param file the file */ - private void createFileInfoFromItemStream(FileItemStream itemStream, File file) { + protected void createFileInfoFromItemStream(FileItemStream itemStream, File file) { // gather attributes from file upload stream. String fileName = itemStream.getName(); String fieldName = itemStream.getFieldName(); @@ -403,27 +403,12 @@ public class JakartaStreamMultiPartRequest extends AbstractMultiPartRequest { } /** - * @param fileName file name - * @return the canonical name based on the supplied filename - */ - private String getCanonicalName(String fileName) { - int forwardSlash = fileName.lastIndexOf("/"); - int backwardSlash = fileName.lastIndexOf("\\"); - if (forwardSlash != -1 && forwardSlash > backwardSlash) { - fileName = fileName.substring(forwardSlash + 1, fileName.length()); - } else { - fileName = fileName.substring(backwardSlash + 1, fileName.length()); - } - return fileName; - } - - /** * Internal data structure used to store a reference to information needed * to later pass post processing data to the <code>FileUploadInterceptor</code>. * * @since 7.0.0 */ - private static class FileInfo implements Serializable { + public static class FileInfo implements Serializable { private static final long serialVersionUID = 1083158552766906037L;