mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-01 19:15:52 +01:00
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:
@@ -278,7 +278,7 @@ public class GitBrowseCommand extends AbstractGitCommand
|
|||||||
convertToFileObject(fileObject, repo, request, revId, entry.getChildren());
|
convertToFileObject(fileObject, repo, request, revId, entry.getChildren());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resultCount > request.getOffset() || fileObject.isDirectory()) {
|
if (resultCount > request.getOffset() || (request.getOffset() == 0 && fileObject.isDirectory())) {
|
||||||
files.add(fileObject);
|
files.add(fileObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase {
|
|||||||
|
|
||||||
Collection<FileObject> foList = root.getChildren();
|
Collection<FileObject> foList = root.getChildren();
|
||||||
|
|
||||||
assertThat(foList).extracting("name").contains("f.txt");
|
assertThat(foList).extracting("name").containsExactly("f.txt");
|
||||||
assertFalse("result should not be marked as trunctated", root.isTruncated());
|
assertFalse("result should not be marked as trunctated", root.isTruncated());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -136,15 +136,18 @@ public class SvnBrowseCommand extends AbstractSvnCommand
|
|||||||
List<SVNDirEntry> entries = new ArrayList<>(svnRepository.getDir(parent.getPath(), revisionNumber, null, (Collection) null));
|
List<SVNDirEntry> entries = new ArrayList<>(svnRepository.getDir(parent.getPath(), revisionNumber, null, (Collection) null));
|
||||||
sort(entries, entry -> entry.getKind() == SVNNodeKind.DIR, SVNDirEntry::getName);
|
sort(entries, entry -> entry.getKind() == SVNNodeKind.DIR, SVNDirEntry::getName);
|
||||||
for (Iterator<SVNDirEntry> iterator = entries.iterator(); resultCount < request.getLimit() + request.getOffset() && iterator.hasNext(); ) {
|
for (Iterator<SVNDirEntry> iterator = entries.iterator(); resultCount < request.getLimit() + request.getOffset() && iterator.hasNext(); ) {
|
||||||
++resultCount;
|
|
||||||
SVNDirEntry entry = iterator.next();
|
SVNDirEntry entry = iterator.next();
|
||||||
FileObject child = createFileObject(request, svnRepository, revisionNumber, entry, basePath);
|
FileObject child = createFileObject(request, svnRepository, revisionNumber, entry, basePath);
|
||||||
|
|
||||||
|
if (!child.isDirectory()) {
|
||||||
|
++resultCount;
|
||||||
|
}
|
||||||
|
|
||||||
if (child.isDirectory() && request.isRecursive()) {
|
if (child.isDirectory() && request.isRecursive()) {
|
||||||
traverse(svnRepository, revisionNumber, request, child, createBasePath(child.getPath()));
|
traverse(svnRepository, revisionNumber, request, child, createBasePath(child.getPath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resultCount > request.getOffset()) {
|
if (resultCount > request.getOffset() || (request.getOffset() == 0 && child.isDirectory())) {
|
||||||
parent.addChild(child);
|
parent.addChild(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
|
|||||||
|
|
||||||
Collection<FileObject> foList = result.getFile().getChildren();
|
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();
|
assertThat(result.getFile().isTruncated()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,7 +203,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
|
|||||||
|
|
||||||
Collection<FileObject> foList = result.getFile().getChildren();
|
Collection<FileObject> foList = result.getFile().getChildren();
|
||||||
|
|
||||||
assertThat(foList).extracting("name").containsExactly("a.txt");
|
assertThat(foList).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -233,7 +233,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
|
|||||||
public void testRecursiveLimitInSubDir() throws IOException {
|
public void testRecursiveLimitInSubDir() throws IOException {
|
||||||
BrowseCommandRequest request = new BrowseCommandRequest();
|
BrowseCommandRequest request = new BrowseCommandRequest();
|
||||||
|
|
||||||
request.setLimit(2);
|
request.setLimit(1);
|
||||||
request.setRecursive(true);
|
request.setRecursive(true);
|
||||||
|
|
||||||
FileObject root = createCommand().getBrowserResult(request).getFile();
|
FileObject root = createCommand().getBrowserResult(request).getFile();
|
||||||
@@ -256,7 +256,7 @@ public class SvnBrowseCommandTest extends AbstractSvnCommandTestBase
|
|||||||
public void testRecursiveOffset() throws IOException {
|
public void testRecursiveOffset() throws IOException {
|
||||||
BrowseCommandRequest request = new BrowseCommandRequest();
|
BrowseCommandRequest request = new BrowseCommandRequest();
|
||||||
|
|
||||||
request.setOffset(2);
|
request.setOffset(1);
|
||||||
request.setRecursive(true);
|
request.setRecursive(true);
|
||||||
|
|
||||||
FileObject root = createCommand().getBrowserResult(request).getFile();
|
FileObject root = createCommand().getBrowserResult(request).getFile();
|
||||||
|
|||||||
Reference in New Issue
Block a user