Author: snoopdave
Date: Sun Dec 7 07:17:42 2008
New Revision: 724139
URL: http://svn.apache.org/viewvc?rev=724139&view=rev
Log:
Addresses issue ROL-1634
https://issues.apache.org/roller/browse/ROL-1634
Fixing error messages for uploads
- Made file managers's canSave() method public so Resource action can call it
- Made Resource action report messages from canSave() per file
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManager.java
Sun Dec 7 07:17:42 2008
@@ -21,6 +21,7 @@
import java.io.InputStream;
import org.apache.roller.weblogger.pojos.ThemeResource;
import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.util.RollerMessages;
/**
@@ -89,6 +90,21 @@
/**
+ * Determine if file can be saved given current WebloggerConfig settings.
+ * @param weblog Weblog destination of upload
+ * @param path Proposed file path
+ * @param contentType Content type
+ * @param size Size in bytes
+ * @param errors For returned error messages
+ * @return True if file can be saved
+ */
+ public boolean canSave(Weblog weblog,
+ String path,
+ String contentType,
+ long size,
+ RollerMessages errors);
+
+ /**
* Save a file to weblog's uploads area, with can-save check.
*
* @param weblog The weblog we are working on.
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/FileManagerImpl.java
Sun Dec 7 07:17:42 2008
@@ -348,15 +348,15 @@
/**
* Determine if file can be saved given current WebloggerConfig settings.
*/
- private boolean canSave(Weblog weblog,
+ public boolean canSave(Weblog weblog,
String path,
String contentType,
long size,
- RollerMessages messages) {
+ RollerMessages errors) {
// first check, is uploading enabled?
if(!WebloggerRuntimeConfig.getBooleanProperty("uploads.enabled")) {
- messages.addError("error.upload.disabled");
+ errors.addError("error.upload.disabled");
return false;
}
@@ -367,7 +367,7 @@
log.debug("max allowed file size = "+maxFileBytes);
log.debug("attempted save file size = "+size);
if (size > maxFileBytes) {
- messages.addError("error.upload.filemax", maxFileMB.toString());
+ errors.addError("error.upload.filemax", maxFileMB.toString());
return false;
}
@@ -379,7 +379,7 @@
File uploadsDir = this.getRealFile(weblog, null);
long userDirSize = getDirSize(uploadsDir, true);
if (userDirSize + size > maxDirBytes) {
- messages.addError("error.upload.dirmax", maxDirMB.toString());
+ errors.addError("error.upload.dirmax", maxDirMB.toString());
return false;
}
} catch (Exception ex) {
@@ -394,7 +394,7 @@
String[] allowFiles =
StringUtils.split(StringUtils.deleteWhitespace(allows), ",");
String[] forbidFiles =
StringUtils.split(StringUtils.deleteWhitespace(forbids), ",");
if (!checkFileType(allowFiles, forbidFiles, path, contentType)) {
- messages.addError("error.upload.forbiddenFile", allows);
+ errors.addError("error.upload.forbiddenFile", allows);
return false;
}
@@ -403,7 +403,7 @@
// just make sure there is only 1 directory, we don't allow multi
// level directory hierarchies right now
if(path.lastIndexOf("/") != path.indexOf("/")) {
- messages.addError("error.upload.badPath");
+ errors.addError("error.upload.badPath");
return false;
}
}
@@ -462,7 +462,7 @@
// if this person hasn't listed any allows, then assume they want
// to allow *all* filetypes, except those listed under forbid
- if(allowFiles == null || allowFiles.length < 1) {
+ if (allowFiles == null || allowFiles.length < 1) {
allowFile = true;
}
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
URL:
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java?rev=724139&r1=724138&r2=724139&view=diff
==============================================================================
---
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
(original)
+++
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Resources.java
Sun Dec 7 07:17:42 2008
@@ -24,6 +24,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,6 +37,8 @@
import org.apache.roller.weblogger.pojos.ThemeResource;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.roller.weblogger.util.RollerMessages;
+import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
/**
@@ -183,7 +186,8 @@
}
FileManager fmgr = WebloggerFactory.getWeblogger().getFileManager();
-
+
+ RollerMessages errors = new RollerMessages();
List<String> uploaded = new ArrayList();
File[] uploads = getUploadedFiles();
if (uploads != null && uploads.length > 0) {
@@ -215,14 +219,17 @@
if(getPath() != null && getPath().trim().length() > 0) {
fileName = getPath() + "/" + fileName;
}
-
+
+ if (!fmgr.canSave(getActionWeblog(), fileName,
getUploadedFilesContentType()[i], uploads[i].length(), errors)) {
+ continue;
+ }
try {
fmgr.saveFile(getActionWeblog(),
fileName,
getUploadedFilesContentType()[i],
uploads[i].length(),
- new FileInputStream(uploads[i]));
+ new FileInputStream(uploads[i]), true);
uploaded.add(fileName);
@@ -243,10 +250,15 @@
}
}
+ for (Iterator it = errors.getErrors(); it.hasNext();) {
+ RollerMessage msg = (RollerMessage)it.next();
+ addError(msg.getKey(), Arrays.asList(msg.getArgs()));
+ }
+
if(uploaded.size() > 0) {
addMessage("uploadFiles.uploadedFiles");
-
- for(String upload : uploaded) {
+
+ for (String upload : uploaded) {
addMessage("uploadFiles.uploadedFile",
WebloggerFactory.getWeblogger().getUrlStrategy().getWeblogResourceURL(getActionWeblog(),
upload, true));
}