mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged V3.3-BUG-FIX to HEAD
21043: Merged V3.3 to V3.3-BUG-FIX 21041: Fix for ALF-3832 - regression of encoded AVM path characters not working if present in username ids git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21044 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -23,6 +23,7 @@ import java.io.InputStream;
|
|||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
@@ -39,6 +40,7 @@ import org.alfresco.service.cmr.repository.ContentWriter;
|
|||||||
import org.alfresco.service.cmr.search.SearchService;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.springframework.extensions.surf.util.URLDecoder;
|
||||||
import org.springframework.extensions.webscripts.Status;
|
import org.springframework.extensions.webscripts.Status;
|
||||||
import org.springframework.extensions.webscripts.WebScriptException;
|
import org.springframework.extensions.webscripts.WebScriptException;
|
||||||
import org.springframework.extensions.webscripts.WebScriptResponse;
|
import org.springframework.extensions.webscripts.WebScriptResponse;
|
||||||
@@ -384,12 +386,24 @@ public class AVMRemoteStore extends BaseRemoteStore
|
|||||||
{
|
{
|
||||||
final Writer out = res.getWriter();
|
final Writer out = res.getWriter();
|
||||||
int cropPoint = store.length() + this.rootPath.length() + 1;
|
int cropPoint = store.length() + this.rootPath.length() + 1;
|
||||||
SortedMap<String, AVMNodeDescriptor> listing = this.avmService.getDirectoryListing(node, pattern);
|
StringBuilder buf = new StringBuilder(pattern.length() + 8);
|
||||||
|
for (StringTokenizer t = new StringTokenizer(pattern, "*"); t.hasMoreTokens(); /**/)
|
||||||
|
{
|
||||||
|
buf.append(encodePath(t.nextToken()));
|
||||||
|
if (t.hasMoreTokens())
|
||||||
|
{
|
||||||
|
buf.append('*');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String encpattern = buf.toString();
|
||||||
|
boolean encoded = (encpattern.length() != pattern.length());
|
||||||
|
SortedMap<String, AVMNodeDescriptor> listing = this.avmService.getDirectoryListing(node, encpattern);
|
||||||
for (AVMNodeDescriptor n : listing.values())
|
for (AVMNodeDescriptor n : listing.values())
|
||||||
{
|
{
|
||||||
if (n.isFile())
|
if (n.isFile())
|
||||||
{
|
{
|
||||||
out.write(n.getPath().substring(cropPoint));
|
String p = n.getPath().substring(cropPoint);
|
||||||
|
out.write(encoded ? URLDecoder.decode(p) : p);
|
||||||
out.write("\n");
|
out.write("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user