From 4216a1aab2ea4b9620c454a0da256d5e53e44cf7 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Fri, 22 Aug 2008 13:58:24 +0000 Subject: [PATCH] URL encoding and decoding fix ups and optimizations. Added URLDecoder to mirror our optimized implementation of URLEncoder - based on optimized/modified JDK and W3 Consortium source code. urlEncode() and urlDecode() methods added to server-side JavaScript 'stringUtils' object. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10498 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/app/servlet/BaseDownloadContentServlet.java | 5 +++-- .../org/alfresco/web/app/servlet/BaseServlet.java | 12 ++---------- .../org/alfresco/web/bean/ajax/FileUploadBean.java | 4 ++-- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java b/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java index 10c1244f99..cd3335f58d 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseDownloadContentServlet.java @@ -27,7 +27,6 @@ package org.alfresco.web.app.servlet; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; -import java.net.URLDecoder; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; @@ -54,6 +53,7 @@ import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.security.AccessStatus; import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.namespace.QName; +import org.alfresco.util.URLDecoder; import org.alfresco.util.URLEncoder; import org.alfresco.web.app.Application; import org.apache.commons.logging.Log; @@ -156,7 +156,8 @@ public abstract class BaseDownloadContentServlet extends BaseServlet // assume 'workspace' or other NodeRef based protocol for remaining URL elements StoreRef storeRef = new StoreRef(t.nextToken(), t.nextToken()); - String id = URLDecoder.decode(t.nextToken(), "UTF-8"); + String id = URLDecoder.decode(t.nextToken()); + // build noderef from the appropriate URL elements nodeRef = new NodeRef(storeRef, id); diff --git a/source/java/org/alfresco/web/app/servlet/BaseServlet.java b/source/java/org/alfresco/web/app/servlet/BaseServlet.java index b4f6fe81e4..f3807598e8 100644 --- a/source/java/org/alfresco/web/app/servlet/BaseServlet.java +++ b/source/java/org/alfresco/web/app/servlet/BaseServlet.java @@ -25,8 +25,6 @@ package org.alfresco.web.app.servlet; import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -44,6 +42,7 @@ import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.util.URLDecoder; import org.alfresco.web.app.Application; import org.alfresco.web.bean.LoginBean; import org.alfresco.web.bean.repository.Repository; @@ -283,7 +282,7 @@ public abstract class BaseServlet extends HttpServlet // create a list of path elements (decode the URL as we go) for (int x = 1; x < args.length; x++) { - paths.add(decode ? URLDecoder.decode(args[x], "UTF-8") : args[x]); + paths.add(decode ? URLDecoder.decode(args[x]) : args[x]); } if (logger.isDebugEnabled()) @@ -302,13 +301,6 @@ public abstract class BaseServlet extends HttpServlet if (logger.isDebugEnabled()) logger.debug("Resolved webdav path to NodeRef: " + nodeRef); } - catch (UnsupportedEncodingException uee) - { - if (logger.isWarnEnabled()) - logger.warn("Failed to resolve webdav path", uee); - - nodeRef = null; - } catch (FileNotFoundException fne) { if (logger.isWarnEnabled()) diff --git a/source/java/org/alfresco/web/bean/ajax/FileUploadBean.java b/source/java/org/alfresco/web/bean/ajax/FileUploadBean.java index 6a1cabba7e..8ed9ce25a5 100644 --- a/source/java/org/alfresco/web/bean/ajax/FileUploadBean.java +++ b/source/java/org/alfresco/web/bean/ajax/FileUploadBean.java @@ -29,7 +29,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.Serializable; -import java.net.URLDecoder; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -51,6 +50,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.namespace.QName; import org.alfresco.util.TempFileProvider; +import org.alfresco.util.URLDecoder; import org.alfresco.web.app.servlet.BaseServlet; import org.alfresco.web.app.servlet.ajax.InvokeCommand; import org.alfresco.web.bean.repository.Repository; @@ -111,7 +111,7 @@ public class FileUploadBean implements Serializable } else if (item.isFormField() && item.getFieldName().equals("currentPath")) { - currentPath = URLDecoder.decode(item.getString(), "UTF-8"); + currentPath = URLDecoder.decode(item.getString()); } else {