From 8129f2fad05746305c0b7f2806dffb5deb987a9d Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 11 Dec 2019 14:41:42 +0100 Subject: [PATCH] Add 'partial' flag to files --- .../src/main/java/sonia/scm/repository/FileObject.java | 10 ++++++++++ .../sonia/scm/repository/spi/GitBrowseCommand.java | 2 ++ .../sonia/scm/repository/spi/GitBrowseCommandTest.java | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/scm-core/src/main/java/sonia/scm/repository/FileObject.java b/scm-core/src/main/java/sonia/scm/repository/FileObject.java index 7dedebb13a..2f3241bf40 100644 --- a/scm-core/src/main/java/sonia/scm/repository/FileObject.java +++ b/scm-core/src/main/java/sonia/scm/repository/FileObject.java @@ -222,6 +222,10 @@ public class FileObject implements LastModifiedAware, Serializable return directory; } + public boolean isPartialResult() { + return partialResult; + } + //~--- set methods ---------------------------------------------------------- /** @@ -302,6 +306,10 @@ public class FileObject implements LastModifiedAware, Serializable this.subRepository = subRepository; } + public void setPartialResult(boolean partialResult) { + this.partialResult = partialResult; + } + public Collection getChildren() { return unmodifiableCollection(children); } @@ -338,6 +346,8 @@ public class FileObject implements LastModifiedAware, Serializable /** file path */ private String path; + private boolean partialResult = false; + /** sub repository informations */ @XmlElement(name = "subrepository") private SubRepository subRepository; diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java index bdeb425d15..06b724d820 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBrowseCommand.java @@ -210,6 +210,7 @@ public class GitBrowseCommand extends AbstractGitCommand // don't show message and date for directories to improve performance if (!file.isDirectory() &&!request.isDisableLastCommit()) { + file.setPartialResult(true); executor.execute(executionType -> { logger.trace("fetch last commit for {} at {}", path, revId.getName()); RevCommit commit = getLatestCommit(repo, revId, path); @@ -235,6 +236,7 @@ public class GitBrowseCommand extends AbstractGitCommand file.setLength(loader.getSize()); } + file.setPartialResult(false); if (commit != null) { file.setLastModified(GitUtil.getCommitTime(commit)); file.setDescription(commit.getShortMessage()); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java index 03f1e761c7..9b45cda16f 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java @@ -131,22 +131,27 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase { FileObject a = findFile(foList, "a.txt"); FileObject b = findFile(foList, "b.txt"); + assertTrue(a.isPartialResult()); assertNull("expected empty name before commit could have been read", a.getDescription()); assertNull("expected empty date before commit could have been read", a.getLastModified()); + assertTrue(b.isPartialResult()); assertNull("expected empty name before commit could have been read", b.getDescription()); assertNull("expected empty date before commit could have been read", b.getLastModified()); executor.next(); assertEquals(1, updatedResults.size()); + assertFalse(a.isPartialResult()); assertNotNull("expected correct name after commit could have been read", a.getDescription()); assertNotNull("expected correct date after commit could have been read", a.getLastModified()); + assertTrue(b.isPartialResult()); assertNull("expected empty name before commit could have been read", b.getDescription()); assertNull("expected empty date before commit could have been read", b.getLastModified()); executor.next(); assertEquals(2, updatedResults.size()); + assertFalse(b.isPartialResult()); assertNotNull("expected correct name after commit could have been read", b.getDescription()); assertNotNull("expected correct date after commit could have been read", b.getLastModified()); }