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:
Kevin Roast
2010-07-09 14:55:09 +00:00
parent 8604e6e57d
commit f3e4183cc8

View File

@@ -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");
} }
} }