WW-4767 Makes some methods protected instead private to allow override them when subclassing

This commit is contained in:
Lukasz Lenart
2017-03-23 07:14:32 +01:00
parent 6dcff10a68
commit 82f61666f8
3 changed files with 37 additions and 51 deletions
@@ -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;
}
}
@@ -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);
}
}
}
}
@@ -280,24 +282,6 @@ public class JakartaMultiPartRequest extends AbstractMultiPartRequest {
return null;
}
/**
* 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.
*
@@ -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();
@@ -402,28 +402,13 @@ 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;