From 4a82c541b293e198c602e598297f9d21efab19a9 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Fri, 21 Feb 2020 12:49:43 +0100 Subject: [PATCH] Sort svn files --- .../scm/repository/spi/SvnBrowseCommand.java | 6 ++++- .../repository/spi/SvnBrowseCommandTest.java | 27 +++++++------------ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java index 1daaf5af61..a6e131fa4a 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnBrowseCommand.java @@ -51,9 +51,12 @@ import sonia.scm.repository.SubRepository; import sonia.scm.repository.SvnUtil; import sonia.scm.util.Util; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; +import static java.util.Comparator.comparing; import static org.tmatesoft.svn.core.SVNErrorCode.FS_NO_SUCH_REVISION; import static sonia.scm.ContextEntry.ContextBuilder.entity; import static sonia.scm.NotFoundException.notFound; @@ -130,7 +133,8 @@ public class SvnBrowseCommand extends AbstractSvnCommand FileObject parent, String basePath) throws SVNException { - Collection entries = svnRepository.getDir(parent.getPath(), revisionNumber, null, (Collection) null); + List entries = new ArrayList<>(svnRepository.getDir(parent.getPath(), revisionNumber, null, (Collection) null)); + entries.sort(comparing(SVNDirEntry::getName)); for (Iterator iterator = entries.iterator(); resultCount < request.getLimit() + request.getOffset() && iterator.hasNext(); ++resultCount) { SVNDirEntry entry = iterator.next(); FileObject child = createFileObject(request, svnRepository, revisionNumber, entry, basePath); diff --git a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java index 589f0d4107..0fc39c8174 100644 --- a/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java +++ b/scm-plugins/scm-svn-plugin/src/test/java/sonia/scm/repository/spi/SvnBrowseCommandTest.java @@ -39,6 +39,7 @@ import sonia.scm.repository.FileObject; import java.io.IOException; import java.util.Collection; +import java.util.Iterator; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; @@ -77,8 +78,9 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase Collection foList = foList1; - FileObject a = getFileObject(foList, "a.txt"); - FileObject c = getFileObject(foList, "c"); + Iterator iterator = foList.iterator(); + FileObject a = iterator.next(); + FileObject c = iterator.next(); assertFalse(a.isDirectory()); assertEquals("a.txt", a.getName()); @@ -113,20 +115,9 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase assertFalse(foList.isEmpty()); assertEquals(2, foList.size()); - FileObject d = null; - FileObject e = null; - - for (FileObject f : foList) - { - if ("d.txt".equals(f.getName())) - { - d = f; - } - else if ("e.txt".equals(f.getName())) - { - e = f; - } - } + Iterator iterator = foList.iterator(); + FileObject d = iterator.next(); + FileObject e = iterator.next(); assertNotNull(d); assertFalse(d.isDirectory()); @@ -198,7 +189,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase Collection foList = result.getFile().getChildren(); - assertThat(foList).extracting("name").containsExactlyInAnyOrder("a.txt"); + assertThat(foList).extracting("name").containsExactly("a.txt"); assertThat(result.getFile().isTruncated()).isTrue(); } @@ -212,7 +203,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase Collection foList = result.getFile().getChildren(); - assertThat(foList).extracting("name").containsExactlyInAnyOrder("c"); + assertThat(foList).extracting("name").containsExactly("c"); } /**