This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4296f8734414960a0a02cbe0f1f2229e75bc55dd Author: Andrea Cosentino <[email protected]> AuthorDate: Thu Nov 5 09:30:54 2020 +0100 CAMEL-15814 - Camel-Git: Commit consumer should be able to be based on specific branch --- .../git/consumer/AbstractGitConsumer.java | 2 +- .../component/git/consumer/GitCommitConsumer.java | 8 +++++- .../component/git/consumer/GitConsumerTest.java | 29 +++++++++++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java index 0fb735e..5916642 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/AbstractGitConsumer.java @@ -79,6 +79,6 @@ public abstract class AbstractGitConsumer extends ScheduledPollConsumer { return git; } - @Override + @Override protected abstract int poll() throws Exception; } diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java index 6712c66..b016175 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/consumer/GitCommitConsumer.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.component.git.GitEndpoint; +import org.apache.camel.util.ObjectHelper; import org.eclipse.jgit.revwalk.RevCommit; public class GitCommitConsumer extends AbstractGitConsumer { @@ -35,7 +36,12 @@ public class GitCommitConsumer extends AbstractGitConsumer { @Override protected int poll() throws Exception { int count = 0; - Iterable<RevCommit> commits = getGit().log().all().call(); + Iterable<RevCommit> commits; + if (ObjectHelper.isNotEmpty(((GitEndpoint)getEndpoint()).getBranchName())) { + commits = getGit().log().add(getGit().getRepository().resolve(((GitEndpoint)getEndpoint()).getBranchName())).call(); + } else { + commits = getGit().log().all().call(); + } for (RevCommit commit : commits) { if (!commitsConsumed.contains(commit.getId())) { Exchange e = getEndpoint().createExchange(); diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java index e5574f1..d7d6282 100644 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/consumer/GitConsumerTest.java @@ -66,6 +66,32 @@ public class GitConsumerTest extends GitTestSupport { assertEquals("Test test Commit", ex1.getMessage().getBody(RevCommit.class).getShortMessage()); git.close(); } + + @Test + public void commitConsumerNotExistingBranchTest() throws Exception { + // Init + MockEndpoint mockResultCommit = getMockEndpoint("mock:result-commit-notexistent"); + mockResultCommit.expectedMessageCount(0); + Git git = getGitTestRepository(); + File gitDir = new File(gitLocalRepo, ".git"); + assertEquals(true, gitDir.exists()); + File fileToAdd = new File(gitLocalRepo, filenameToAdd); + fileToAdd.createNewFile(); + git.add().addFilepattern(filenameToAdd).call(); + Status status = git.status().call(); + assertTrue(status.getAdded().contains(filenameToAdd)); + git.commit().setMessage(commitMessage).call(); + File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); + fileToAdd1.createNewFile(); + git.add().addFilepattern(filenameBranchToAdd).call(); + status = git.status().call(); + assertTrue(status.getAdded().contains(filenameBranchToAdd)); + git.commit().setMessage("Test test Commit").call(); + validateGitLogs(git, "Test test Commit", commitMessage); + // Test + mockResultCommit.assertIsSatisfied(); + git.close(); + } @Test public void tagConsumerTest() throws Exception { @@ -148,7 +174,8 @@ public class GitConsumerTest extends GitTestSupport { from("direct:commit").to("git://" + gitLocalRepo + "?operation=commit"); from("direct:create-branch").to("git://" + gitLocalRepo + "?operation=createBranch&branchName=" + branchTest); from("direct:create-tag").to("git://" + gitLocalRepo + "?operation=createTag&tagName=" + tagTest); - from("git://" + gitLocalRepo + "?type=commit").to("mock:result-commit"); + from("git://" + gitLocalRepo + "?type=commit&branchName=master").to("mock:result-commit"); + from("git://" + gitLocalRepo + "?type=commit&branchName=notexisting").to("mock:result-commit-notexistent"); from("git://" + gitLocalRepo + "?type=tag").to("mock:result-tag"); from("git://" + gitLocalRepo + "?type=branch").to("mock:result-branch"); }
