Implement new limit/offset rule for git and svn

Directories shall no longer be taken into account for limit/offset
calculations.
This commit is contained in:
Rene Pfeuffer
2020-03-03 17:06:55 +01:00
parent fa80c83109
commit cf43e3bc84
4 changed files with 11 additions and 8 deletions

View File

@@ -136,15 +136,18 @@ public class SvnBrowseCommand extends AbstractSvnCommand
List<SVNDirEntry> entries = new ArrayList<>(svnRepository.getDir(parent.getPath(), revisionNumber, null, (Collection) null));
sort(entries, entry -> entry.getKind() == SVNNodeKind.DIR, SVNDirEntry::getName);
for (Iterator<SVNDirEntry> iterator = entries.iterator(); resultCount < request.getLimit() + request.getOffset() && iterator.hasNext(); ) {
++resultCount;
SVNDirEntry entry = iterator.next();
FileObject child = createFileObject(request, svnRepository, revisionNumber, entry, basePath);
if (!child.isDirectory()) {
++resultCount;
}
if (child.isDirectory() && request.isRecursive()) {
traverse(svnRepository, revisionNumber, request, child, createBasePath(child.getPath()));
}
if (resultCount > request.getOffset()) {
if (resultCount > request.getOffset() || (request.getOffset() == 0 && child.isDirectory())) {
parent.addChild(child);
}
}

View File

@@ -189,7 +189,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
Collection<FileObject> foList = result.getFile().getChildren();
assertThat(foList).extracting("name").containsExactly("c");
assertThat(foList).extracting("name").containsExactly("c", "a.txt");
assertThat(result.getFile().isTruncated()).isTrue();
}
@@ -203,7 +203,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
Collection<FileObject> foList = result.getFile().getChildren();
assertThat(foList).extracting("name").containsExactly("a.txt");
assertThat(foList).isEmpty();
}
@Test
@@ -233,7 +233,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
public void testRecursiveLimitInSubDir() throws IOException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setLimit(2);
request.setLimit(1);
request.setRecursive(true);
FileObject root = createCommand().getBrowserResult(request).getFile();
@@ -256,7 +256,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
public void testRecursiveOffset() throws IOException {
BrowseCommandRequest request = new BrowseCommandRequest();
request.setOffset(2);
request.setOffset(1);
request.setRecursive(true);
FileObject root = createCommand().getBrowserResult(request).getFile();