Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 0E2BF200BCA for ; Mon, 21 Nov 2016 12:57:17 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 0D439160AEC; Mon, 21 Nov 2016 11:57:17 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 3D0E5160B19 for ; Mon, 21 Nov 2016 12:57:15 +0100 (CET) Received: (qmail 71302 invoked by uid 500); 21 Nov 2016 11:57:14 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 71192 invoked by uid 99); 21 Nov 2016 11:57:14 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 21 Nov 2016 11:57:14 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 238F5EEE3A; Mon, 21 Nov 2016 11:57:14 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: acosentino@apache.org To: commits@camel.apache.org Date: Mon, 21 Nov 2016 11:57:15 -0000 Message-Id: In-Reply-To: <8ab06cd7d2294a7abb7bea8bcc8d6776@git.apache.org> References: <8ab06cd7d2294a7abb7bea8bcc8d6776@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/3] camel git commit: Add allowEmpty endpoint option archived-at: Mon, 21 Nov 2016 11:57:17 -0000 Add allowEmpty endpoint option Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4034e2a7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4034e2a7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4034e2a7 Branch: refs/heads/master Commit: 4034e2a7854a0dc768c8786bf527e7d4474c38f1 Parents: cdd35f0 Author: Olivier Antibi Authored: Sun Nov 20 22:43:15 2016 +0100 Committer: Andrea Cosentino Committed: Mon Nov 21 12:54:10 2016 +0100 ---------------------------------------------------------------------- .../camel-git/src/main/docs/git-component.adoc | 6 +- .../camel/component/git/GitConstants.java | 2 + .../apache/camel/component/git/GitEndpoint.java | 15 + .../component/git/producer/GitProducer.java | 34 +- .../component/git/producer/GitProducerTest.java | 397 ++++++++++--------- 5 files changed, 261 insertions(+), 193 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/4034e2a7/components/camel-git/src/main/docs/git-component.adoc ---------------------------------------------------------------------- diff --git a/components/camel-git/src/main/docs/git-component.adoc b/components/camel-git/src/main/docs/git-component.adoc index 3ebe2ad..e7c26cb 100644 --- a/components/camel-git/src/main/docs/git-component.adoc +++ b/components/camel-git/src/main/docs/git-component.adoc @@ -40,7 +40,7 @@ The Git component has no options. // endpoint options: START -The Git component supports 13 endpoint options which are listed below: +The Git component supports 14 endpoint options which are listed below: {% raw %} [width="100%",cols="2,1,1m,1m,5",options="header"] @@ -57,6 +57,7 @@ The Git component supports 13 endpoint options which are listed below: | type | consumer | | GitType | The consumer type | exceptionHandler | consumer (advanced) | | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored. | exchangePattern | consumer (advanced) | | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange. +| allowEmpty | producer | true | boolean | The flag to manage empty git commits | operation | producer | | String | The operation to do on the repository | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). |======================================================================= @@ -85,6 +86,9 @@ Message Headers |CamelGitCommitEmail |`null` |String |Producer |The commit email in a commit operation |CamelGitCommitId |`null` |String |Producer |The commit id + +|CamelGitAlowEmpty |`null` |Boolean |Producer |The flag to manage empty git commits + |======================================================================= [[Git-ProducerExample]] http://git-wip-us.apache.org/repos/asf/camel/blob/4034e2a7/components/camel-git/src/main/java/org/apache/camel/component/git/GitConstants.java ---------------------------------------------------------------------- diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitConstants.java b/components/camel-git/src/main/java/org/apache/camel/component/git/GitConstants.java index 5e575ce..03f54ee 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitConstants.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitConstants.java @@ -28,4 +28,6 @@ public interface GitConstants { String GIT_COMMIT_EMAIL = "CamelGitCommitEmail"; String GIT_COMMIT_ID = "CamelGitCommitId"; + + String GIT_ALLOW_EMPTY = "CamelGitAllowEmpty"; } http://git-wip-us.apache.org/repos/asf/camel/blob/4034e2a7/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java index d25dbb2..44aeb26 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java @@ -61,6 +61,11 @@ public class GitEndpoint extends DefaultEndpoint { @UriParam private String remoteName; + @UriParam + // Set to true For backward compatibility , better to set to false (native git behavior) + @Metadata(defaultValue = "true", label = "producer") + private boolean allowEmpty = true; + @UriParam(enums = "clone,init,add,remove,commit,commitAll,createBranch,deleteBranch,createTag,deleteTag,status,log,push,pull,showBranches,cherryPick", label = "producer") private String operation; @@ -190,4 +195,14 @@ public class GitEndpoint extends DefaultEndpoint { this.remoteName = remoteName; } + /** + * The flag to manage empty git commits + */ + public boolean isAllowEmpty() { + return allowEmpty; + } + + public void setAllowEmpty(boolean allowEmpty) { + this.allowEmpty = allowEmpty; + } } http://git-wip-us.apache.org/repos/asf/camel/blob/4034e2a7/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java index be7ef1d..2047aeb 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java @@ -83,7 +83,7 @@ public class GitProducer extends DefaultProducer { } switch (operation) { - + case GitOperation.CLONE_OPERATION: doClone(exchange, operation); break; @@ -99,7 +99,7 @@ public class GitProducer extends DefaultProducer { case GitOperation.CHERRYPICK_OPERATION: doCherryPick(exchange, operation); break; - + case GitOperation.REMOVE_OPERATION: doRemove(exchange, operation); break; @@ -143,11 +143,11 @@ public class GitProducer extends DefaultProducer { case GitOperation.DELETE_TAG_OPERATION: doDeleteTag(exchange, operation); break; - + case GitOperation.SHOW_BRANCHES: doShowBranches(exchange, operation); break; - + default: throw new IllegalArgumentException("Unsupported operation " + operation); } @@ -242,19 +242,24 @@ public class GitProducer extends DefaultProducer { } else { throw new IllegalArgumentException("Commit message must be specified to execute " + operation); } - if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME)) + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME)) && ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_EMAIL))) { username = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME, String.class); email = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_EMAIL, String.class); } + boolean allowEmpty = endpoint.isAllowEmpty(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_ALLOW_EMPTY))) { + allowEmpty = exchange.getIn().getHeader(GitConstants.GIT_ALLOW_EMPTY, Boolean.class); + } + try { if (ObjectHelper.isNotEmpty(endpoint.getBranchName())) { git.checkout().setCreateBranch(false).setName(endpoint.getBranchName()).call(); } if (ObjectHelper.isNotEmpty(username) && ObjectHelper.isNotEmpty(email)) { - git.commit().setCommitter(username, email).setMessage(commitMessage).call(); + git.commit().setAllowEmpty(allowEmpty).setCommitter(username, email).setMessage(commitMessage).call(); } else { - git.commit().setMessage(commitMessage).call(); + git.commit().setAllowEmpty(allowEmpty).setMessage(commitMessage).call(); } } catch (Exception e) { LOG.error("There was an error in Git " + operation + " operation"); @@ -271,19 +276,24 @@ public class GitProducer extends DefaultProducer { } else { throw new IllegalArgumentException("Commit message must be specified to execute " + operation); } - if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME)) + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME)) && ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_EMAIL))) { username = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_USERNAME, String.class); email = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_EMAIL, String.class); } + boolean allowEmpty = endpoint.isAllowEmpty(); + if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_ALLOW_EMPTY))) { + allowEmpty = exchange.getIn().getHeader(GitConstants.GIT_ALLOW_EMPTY, Boolean.class); + } + try { if (ObjectHelper.isNotEmpty(endpoint.getBranchName())) { git.checkout().setCreateBranch(false).setName(endpoint.getBranchName()).call(); } if (ObjectHelper.isNotEmpty(username) && ObjectHelper.isNotEmpty(email)) { - git.commit().setAll(true).setCommitter(username, email).setMessage(commitMessage).call(); + git.commit().setAllowEmpty(allowEmpty).setAll(true).setCommitter(username, email).setMessage(commitMessage).call(); } else { - git.commit().setAll(true).setMessage(commitMessage).call(); + git.commit().setAllowEmpty(allowEmpty).setAll(true).setMessage(commitMessage).call(); } } catch (Exception e) { LOG.error("There was an error in Git " + operation + " operation"); @@ -410,7 +420,7 @@ public class GitProducer extends DefaultProducer { throw e; } } - + protected void doShowBranches(Exchange exchange, String operation) throws Exception { List result = null; try { @@ -421,7 +431,7 @@ public class GitProducer extends DefaultProducer { } exchange.getOut().setBody(result); } - + protected void doCherryPick(Exchange exchange, String operation) throws Exception { CherryPickResult result = null; String commitId = null; http://git-wip-us.apache.org/repos/asf/camel/blob/4034e2a7/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java index 6dc66ed..5491770 100755 --- a/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java +++ b/components/camel-git/src/test/java/org/apache/camel/component/git/producer/GitProducerTest.java @@ -17,8 +17,9 @@ package org.apache.camel.component.git.producer; import java.io.File; +import java.util.HashMap; import java.util.List; - +import java.util.Map; import org.apache.camel.CamelExecutionException; import org.apache.camel.Exchange; import org.apache.camel.Processor; @@ -34,22 +35,23 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.junit.Test; + public class GitProducerTest extends GitTestSupport { - + @Test public void cloneTest() throws Exception { template.sendBody("direct:clone", ""); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); } - + @Test public void initTest() throws Exception { template.sendBody("direct:init", ""); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); } - + @Test(expected = CamelExecutionException.class) public void doubleCloneOperationTest() throws Exception { template.sendBody("direct:clone", ""); @@ -57,7 +59,7 @@ public class GitProducerTest extends GitTestSupport { File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); } - + @Test public void pullTest() throws Exception { template.sendBody("direct:clone", ""); @@ -66,15 +68,15 @@ public class GitProducerTest extends GitTestSupport { PullResult pr = template.requestBody("direct:pull", "", PullResult.class); assertTrue(pr.isSuccessful()); } - + @Test public void addTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -83,20 +85,20 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); repository.close(); } - + @Test public void removeTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -105,10 +107,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:remove", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -117,7 +119,7 @@ public class GitProducerTest extends GitTestSupport { }); gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -132,22 +134,22 @@ public class GitProducerTest extends GitTestSupport { count++; } assertEquals(count, 1); - + status = new Git(repository).status().call(); assertFalse(status.getAdded().contains(filenameToAdd)); - + repository.close(); } - + @Test public void commitTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -156,10 +158,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -176,15 +178,51 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 1); repository.close(); } - + + @Test + public void commitTestEmpty() throws Exception { + Repository repository = getTestRepository(); + File gitDir = new File(gitLocalRepo, ".git"); + assertEquals(gitDir.exists(), true); + Git git = new Git(repository); + 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(); + template.requestBodyAndHeader("direct:commit", "", GitConstants.GIT_COMMIT_MESSAGE, commitMessage); + } + + @Test(expected = CamelExecutionException.class) + public void commitTestAllowEmptyFalse() throws Exception { + Repository repository = getTestRepository(); + File gitDir = new File(gitLocalRepo, ".git"); + assertEquals(gitDir.exists(), true); + Git git = new Git(repository); + 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(); + Map headers = new HashMap<>(); + headers.put(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); + headers.put(GitConstants.GIT_ALLOW_EMPTY, true); + template.requestBodyAndHeaders("direct:commit", "", headers); + headers.remove(GitConstants.GIT_ALLOW_EMPTY); + template.requestBodyAndHeaders("direct:commit-not-allow-empty", "", headers); + } + + @Test public void commitBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -193,10 +231,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -211,11 +249,9 @@ public class GitProducerTest extends GitTestSupport { count++; } assertEquals(count, 1); - Git git = new Git(repository); git.checkout().setCreateBranch(true).setName(branchTest). - setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); - + setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); template.send("direct:commit-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -236,24 +272,23 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 2); repository.close(); } - - + @Test public void commitAllTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameToAdd); } }); - + template.send("direct:commit-all", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -270,15 +305,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 1); repository.close(); } - + @Test public void commitAllDifferentBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -287,10 +322,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -305,21 +340,21 @@ public class GitProducerTest extends GitTestSupport { count++; } assertEquals(count, 1); - + Git git = new Git(repository); git.checkout().setCreateBranch(true).setName(branchTest). - setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); - + setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); + File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); fileToAdd1.createNewFile(); - + template.send("direct:add-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameBranchToAdd); } }); - + template.send("direct:commit-all-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -340,15 +375,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 2); repository.close(); } - + @Test public void removeFileBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -357,10 +392,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -375,21 +410,21 @@ public class GitProducerTest extends GitTestSupport { count++; } assertEquals(count, 1); - + Git git = new Git(repository); git.checkout().setCreateBranch(true).setName(branchTest). - setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); - + setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM).call(); + File fileToAdd1 = new File(gitLocalRepo, filenameBranchToAdd); fileToAdd1.createNewFile(); - + template.send("direct:add-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameBranchToAdd); } }); - + template.send("direct:commit-all-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -408,31 +443,31 @@ public class GitProducerTest extends GitTestSupport { count++; } assertEquals(count, 2); - + template.send("direct:remove-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameToAdd); } }); - + git = new Git(repository); git.checkout().setCreateBranch(false).setName(branchTest).call(); - + status = git.status().call(); assertFalse(status.getAdded().contains(filenameToAdd)); - + repository.close(); } - + @Test public void createBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -441,21 +476,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Git git = new Git(repository); - + template.sendBody("direct:create-branch", ""); - + List ref = git.branchList().call(); boolean branchCreated = false; for (Ref refInternal : ref) { @@ -466,15 +501,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(branchCreated, true); repository.close(); } - + @Test public void deleteBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -483,21 +518,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Git git = new Git(repository); - + template.sendBody("direct:create-branch", ""); - + List ref = git.branchList().call(); boolean branchCreated = false; for (Ref refInternal : ref) { @@ -506,9 +541,9 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(branchCreated, true); - + template.sendBody("direct:delete-branch", ""); - + ref = git.branchList().call(); branchCreated = false; for (Ref refInternal : ref) { @@ -519,15 +554,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(branchCreated, false); repository.close(); } - + @Test public void statusTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -536,21 +571,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = template.requestBody("direct:status", "", Status.class); assertTrue(status.getAdded().contains(filenameToAdd)); - + repository.close(); } - + @Test public void statusBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -559,21 +594,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = template.requestBody("direct:status", "", Status.class); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + template.sendBody("direct:create-branch", ""); - + Git git = new Git(repository); - + List ref = git.branchList().call(); boolean branchCreated = false; for (Ref refInternal : ref) { @@ -582,31 +617,31 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(branchCreated, true); - + File fileToAddDifferent = new File(gitLocalRepo, filenameBranchToAdd); fileToAddDifferent.createNewFile(); - + template.send("direct:add-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameBranchToAdd); } }); - + status = template.requestBody("direct:status-branch", "", Status.class); assertTrue(status.getAdded().contains(filenameBranchToAdd)); - + repository.close(); } - + @Test public void logTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -615,32 +650,32 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = template.requestBody("direct:status", "", Status.class); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Iterable revCommits = template.requestBody("direct:log", "", Iterable.class); for (RevCommit rev : revCommits) { assertEquals(rev.getShortMessage(), commitMessage); - } + } repository.close(); } - + @Test public void logBranchTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -649,26 +684,26 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = template.requestBody("direct:status", "", Status.class); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Iterable revCommits = template.requestBody("direct:log", "", Iterable.class); for (RevCommit rev : revCommits) { assertEquals(rev.getShortMessage(), commitMessage); } - + template.sendBody("direct:create-branch", ""); - + Git git = new Git(repository); - + List ref = git.branchList().call(); boolean branchCreated = false; for (Ref refInternal : ref) { @@ -677,24 +712,24 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(branchCreated, true); - + File fileToAddDifferent = new File(gitLocalRepo, filenameBranchToAdd); fileToAddDifferent.createNewFile(); - + template.send("direct:add-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, filenameBranchToAdd); } }); - + template.send("direct:commit-all-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessageAll); } }); - + revCommits = template.requestBody("direct:log-branch", "", Iterable.class); int count = 0; for (RevCommit rev : revCommits) { @@ -706,18 +741,18 @@ public class GitProducerTest extends GitTestSupport { } count++; } - + repository.close(); } - + @Test public void createTagTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -726,21 +761,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Git git = new Git(repository); - + template.sendBody("direct:create-tag", ""); - + List ref = git.tagList().call(); boolean tagCreated = false; for (Ref refInternal : ref) { @@ -751,15 +786,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(tagCreated, true); repository.close(); } - + @Test public void deleteTagTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -768,21 +803,21 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Git git = new Git(repository); - + template.sendBody("direct:create-tag", ""); - + List ref = git.tagList().call(); boolean tagCreated = false; for (Ref refInternal : ref) { @@ -791,9 +826,9 @@ public class GitProducerTest extends GitTestSupport { } } assertEquals(tagCreated, true); - + template.sendBody("direct:delete-tag", ""); - + ref = git.tagList().call(); boolean tagExists = false; for (Ref refInternal : ref) { @@ -804,15 +839,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(tagExists, false); repository.close(); } - + @Test public void showBranchesTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -821,43 +856,43 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_MESSAGE, commitMessage); } }); - + Git git = new Git(repository); - + template.sendBody("direct:create-branch", ""); - + List branches = template.requestBody("direct:show-branches", "", List.class); - + Boolean branchExists = false; - + for (Ref reference : branches) { if (("refs/heads/" + branchTest).equals(reference.getName())) { branchExists = true; } } assertTrue(branchExists); - + repository.close(); } - + @Test public void cherryPickTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -866,10 +901,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -879,39 +914,39 @@ public class GitProducerTest extends GitTestSupport { Iterable logs = new Git(repository).log() .call(); int count = 0; - + for (RevCommit rev : logs) { assertEquals(rev.getShortMessage(), commitMessage); count++; } assertEquals(count, 1); - + template.sendBody("direct:create-branch", ""); - + List branches = template.requestBody("direct:show-branches", "", List.class); - + Boolean branchExists = false; - + for (Ref reference : branches) { if (("refs/heads/" + branchTest).equals(reference.getName())) { branchExists = true; } } assertTrue(branchExists); - + File fileToAdd1 = new File(gitLocalRepo, "filetest1test.txt"); fileToAdd1.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, "filetest1test.txt"); } }); - + status = new Git(repository).status().call(); assertTrue(status.getAdded().contains("filetest1test.txt")); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -923,14 +958,14 @@ public class GitProducerTest extends GitTestSupport { count = 0; String id = ""; for (RevCommit rev : logs) { - if (count == 0) { + if (count == 0) { id = rev.getName(); assertEquals(rev.getShortMessage(), "Test second commit"); } count++; } assertEquals(count, 2); - + final String str = id; template.send("direct:cherrypick", new Processor() { @Override @@ -938,7 +973,7 @@ public class GitProducerTest extends GitTestSupport { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_ID, str); } }); - + Git git = new Git(repository); git.checkout().setCreateBranch(false).setName(branchTest).call(); logs = git.log() @@ -953,15 +988,15 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 2); repository.close(); } - + @Test public void cherryPickBranchToMasterTest() throws Exception { Repository repository = getTestRepository(); - + File fileToAdd = new File(gitLocalRepo, filenameToAdd); fileToAdd.createNewFile(); - + template.send("direct:add", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -970,10 +1005,10 @@ public class GitProducerTest extends GitTestSupport { }); File gitDir = new File(gitLocalRepo, ".git"); assertEquals(gitDir.exists(), true); - + Status status = new Git(repository).status().call(); assertTrue(status.getAdded().contains(filenameToAdd)); - + template.send("direct:commit", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -983,29 +1018,29 @@ public class GitProducerTest extends GitTestSupport { Iterable logs = new Git(repository).log() .call(); int count = 0; - + for (RevCommit rev : logs) { assertEquals(rev.getShortMessage(), commitMessage); count++; } assertEquals(count, 1); - + template.sendBody("direct:create-branch", ""); - + List branches = template.requestBody("direct:show-branches", "", List.class); - + Boolean branchExists = false; - + for (Ref reference : branches) { if (("refs/heads/" + branchTest).equals(reference.getName())) { branchExists = true; } } assertTrue(branchExists); - + File fileToAdd1 = new File(gitLocalRepo, "filetest1test.txt"); fileToAdd1.createNewFile(); - + template.send("direct:add-on-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -1016,7 +1051,7 @@ public class GitProducerTest extends GitTestSupport { git.checkout().setCreateBranch(false).setName(branchTest).call(); status = git.status().call(); assertTrue(status.getAdded().contains("filetest1test.txt")); - + template.send("direct:commit-branch", new Processor() { @Override public void process(Exchange exchange) throws Exception { @@ -1028,14 +1063,14 @@ public class GitProducerTest extends GitTestSupport { count = 0; String id = ""; for (RevCommit rev : logs) { - if (count == 0) { + if (count == 0) { id = rev.getName(); assertEquals(rev.getShortMessage(), "Test second commit"); } count++; } assertEquals(count, 2); - + final String str = id; template.send("direct:cherrypick-master", new Processor() { @Override @@ -1043,7 +1078,7 @@ public class GitProducerTest extends GitTestSupport { exchange.getIn().setHeader(GitConstants.GIT_COMMIT_ID, str); } }); - + git = new Git(repository); git.checkout().setCreateBranch(false).setName("refs/heads/master").call(); logs = git.log() @@ -1058,10 +1093,10 @@ public class GitProducerTest extends GitTestSupport { assertEquals(count, 2); repository.close(); } - + @Override protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { + return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:clone") @@ -1078,6 +1113,8 @@ public class GitProducerTest extends GitTestSupport { .to("git://" + gitLocalRepo + "?operation=add&branchName=" + branchTest); from("direct:commit") .to("git://" + gitLocalRepo + "?operation=commit"); + from("direct:commit-not-allow-empty") + .to("git://" + gitLocalRepo + "?operation=commit&allowEmpty=false"); from("direct:commit-branch") .to("git://" + gitLocalRepo + "?operation=commit&branchName=" + branchTest); from("direct:commit-all") @@ -1108,7 +1145,7 @@ public class GitProducerTest extends GitTestSupport { .to("git://" + gitLocalRepo + "?operation=cherryPick&branchName=refs/heads/master"); from("direct:pull") .to("git://" + gitLocalRepo + "?remoteName=origin&operation=pull"); - } + } }; }