From 4ec7006108074d821848e5c94e518db2a2cf138a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 25 Mar 2019 11:28:29 +0100 Subject: [PATCH] Enhance branch object with default flag --- .../java/sonia/scm/repository/Branch.java | 19 +++++++++++++++++-- .../repository/spi/GitBranchesCommand.java | 2 +- .../client/spi/GitBranchCommand.java | 2 +- .../scm/repository/spi/HgBranchesCommand.java | 2 +- .../client/spi/HgBranchCommand.java | 2 +- .../sonia/scm/api/v2/resources/BranchDto.java | 1 + .../DefaultChangesetToChangesetDtoMapper.java | 2 +- .../v2/resources/BranchRootResourceTest.java | 4 ++-- .../BranchToBranchDtoMapperTest.java | 2 +- 9 files changed, 26 insertions(+), 10 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/Branch.java b/scm-core/src/main/java/sonia/scm/repository/Branch.java index ce1d43c82b..d8950c80ac 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Branch.java +++ b/scm-core/src/main/java/sonia/scm/repository/Branch.java @@ -66,7 +66,7 @@ public final class Branch implements Serializable * This constructor should only be called from JAXB. * */ - public Branch() {} + Branch() {} /** * Constructs a new branch. @@ -75,10 +75,19 @@ public final class Branch implements Serializable * @param name name of the branch * @param revision latest revision of the branch */ - public Branch(String name, String revision) + Branch(String name, String revision, boolean defaultBranch) { this.name = name; this.revision = revision; + this.defaultBranch = defaultBranch; + } + + public static Branch normalBranch(String name, String revision) { + return new Branch(name, revision, false); + } + + public static Branch defaultBranch(String name, String revision) { + return new Branch(name, revision, true); } //~--- methods -------------------------------------------------------------- @@ -162,6 +171,10 @@ public final class Branch implements Serializable return revision; } + public boolean isDefaultBranch() { + return defaultBranch; + } + //~--- fields --------------------------------------------------------------- /** name of the branch */ @@ -169,4 +182,6 @@ public final class Branch implements Serializable /** Field description */ private String revision; + + private boolean defaultBranch; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index 4922752b6f..110e02d431 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -92,7 +92,7 @@ public class GitBranchesCommand extends AbstractGitCommand if (branchName != null) { - branch = new Branch(branchName, GitUtil.getId(ref.getObjectId())); + branch = Branch.normalBranch(branchName, GitUtil.getId(ref.getObjectId())); } return branch; diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java index 5a721a7aa5..19197d009d 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java @@ -72,7 +72,7 @@ public class GitBranchCommand implements BranchCommand try { Ref ref = git.branchCreate().setName(name).call(); - return new Branch(name, GitUtil.getId(ref.getObjectId())); + return Branch.normalBranch(name, GitUtil.getId(ref.getObjectId())); } catch (GitAPIException ex) { diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java index 5c38205393..4ac4218168 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java @@ -88,7 +88,7 @@ public class HgBranchesCommand extends AbstractCommand node = changeset.getNode(); } - return new Branch(hgBranch.getName(), node); + return Branch.normalBranch(hgBranch.getName(), node); } }); diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java index 74d1b1f742..fa7371f840 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java @@ -53,7 +53,7 @@ public class HgBranchCommand implements BranchCommand public Branch branch(String name) throws IOException { com.aragost.javahg.commands.BranchCommand.on(repository).set(name); - return new Branch(name, repository.tip().getNode()); + return Branch.normalBranch(name, repository.tip().getNode()); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java index 343d9c8bc8..c27baf3666 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java @@ -12,6 +12,7 @@ public class BranchDto extends HalRepresentation { private String name; private String revision; + private boolean defaultBranch; BranchDto(Links links, Embedded embedded) { super(links, embedded); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java index 479a43aef1..1ae67c4282 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java @@ -60,7 +60,7 @@ public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMa } if (repositoryService.isSupported(Command.BRANCHES)) { embeddedBuilder.with("branches", branchCollectionToDtoMapper.getBranchDtoList(namespace, name, - getListOfObjects(source.getBranches(), branchName -> new Branch(branchName, source.getId())))); + getListOfObjects(source.getBranches(), branchName -> Branch.normalBranch(branchName, source.getId())))); } } embeddedBuilder.with("parents", getListOfObjects(source.getParents(), parent -> changesetToParentDtoMapper.map(new Changeset(parent, 0L, null), repository))); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java index 9216922e19..d432dee18f 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java @@ -125,7 +125,7 @@ public class BranchRootResourceTest extends RepositoryTestBase { @Test public void shouldFindExistingBranch() throws Exception { - when(branchesCommandBuilder.getBranches()).thenReturn(new Branches(new Branch("master", "revision"))); + when(branchesCommandBuilder.getBranches()).thenReturn(new Branches(Branch.normalBranch("master", "revision"))); MockHttpRequest request = MockHttpRequest.get(BRANCH_URL); MockHttpResponse response = new MockHttpResponse(); @@ -153,7 +153,7 @@ public class BranchRootResourceTest extends RepositoryTestBase { when(logCommandBuilder.setBranch(anyString())).thenReturn(logCommandBuilder); when(logCommandBuilder.getChangesets()).thenReturn(changesetPagingResult); Branches branches = mock(Branches.class); - List branchList = Lists.newArrayList(new Branch("master",id)); + List branchList = Lists.newArrayList(Branch.normalBranch("master",id)); when(branches.getBranches()).thenReturn(branchList); when(branchesCommandBuilder.getBranches()).thenReturn(branches); MockHttpRequest request = MockHttpRequest.get(BRANCH_URL + "/changesets/"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java index 3e64ab95b6..9c15271aa2 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java @@ -33,7 +33,7 @@ class BranchToBranchDtoMapperTest { }); mapper.setRegistry(registry); - Branch branch = new Branch("master", "42"); + Branch branch = Branch.normalBranch("master", "42"); BranchDto dto = mapper.map(branch, new NamespaceAndName("hitchhiker", "heart-of-gold")); assertThat(dto.getLinks().getLinkBy("ka").get().getHref()).isEqualTo("http://hitchhiker/heart-of-gold/master");