diff --git a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java index 030f2a5a09..e5bdfcad94 100644 --- a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java +++ b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java @@ -20,6 +20,8 @@ package org.alfresco.repo.node.getchildren; import java.io.Serializable; import java.text.Collator; +import java.text.ParseException; +import java.text.RuleBasedCollator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -371,7 +373,8 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions> sortProps) { this.sortProps = sortProps; - this.collator = Collator.getInstance(I18NUtil.getContentLocale()); + // try to overrider collator comparison rules + this.collator = updateCollatorRules(Collator.getInstance(I18NUtil.getContentLocale())); } public int compare(FilterSortNode n1, FilterSortNode n2) @@ -449,6 +452,32 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions inclusiveAspects, Set exclusiveAspects) { if (inclusiveAspects == null && exclusiveAspects == null) diff --git a/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java b/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java index 9d26529b3b..f025cc9840 100644 --- a/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/model/filefolder/FileFolderServiceImplTest.java @@ -1507,6 +1507,43 @@ public class FileFolderServiceImplTest extends TestCase checkPages(nodeRef1, pageSize, totalItems, true, 4); } + public void testListNotIgnoreSpaces() + { + String [] foldersToTest = new String[] { + "A B", + "AA", + "AC" + }; + + NodeRef testFolder = fileFolderService.create(workingRootNodeRef, "" + System.currentTimeMillis(), ContentModel.TYPE_FOLDER).getNodeRef(); + + // create provided nodes + for (String folder : foldersToTest) + { + fileFolderService.create(testFolder, folder, ContentModel.TYPE_FOLDER).getNodeRef(); + } + + PagingRequest pagingRequest = new PagingRequest(100, null); + // ensure sort by property name + List> sortProps = new ArrayList>(1); + sortProps.add(new Pair(ContentModel.PROP_NAME, true)); + // list nodes + PagingResults pagingResults = fileFolderService.list(testFolder, true, true, null, null, sortProps, pagingRequest); + List files = pagingResults.getPage(); + + assertEquals(files.size(), foldersToTest.length); + + for (int index = 0; index < files.size(); index++) + { + // ensure node order is expected + String folderName = files.get(index).getName(); + String excpectedFolderName = foldersToTest[index]; + assertEquals(folderName, excpectedFolderName); + } + + System.out.println(files); + } + private void checkPages(NodeRef parentRef, int pageSize, int totalItems, boolean hideCheckedOut, int checkedOutChildIdx) { Set ignoreQNameTypes = null;