Repository: camel Updated Branches: refs/heads/master 1fadfc8f2 -> 24dd79f01
[CAMEL-9390] Camel-git: Allow to specify username/email on a commit operation Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/24dd79f0 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/24dd79f0 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/24dd79f0 Branch: refs/heads/master Commit: 24dd79f0187bfefae92a398efb8ad40ad449a276 Parents: 1fadfc8 Author: Andrea Cosentino <anco...@gmail.com> Authored: Sat Dec 5 11:00:16 2015 +0100 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Sat Dec 5 11:00:16 2015 +0100 ---------------------------------------------------------------------- .../camel/component/git/GitConstants.java | 4 +++ .../component/git/producer/GitProducer.java | 27 ++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/24dd79f0/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 ce90b82..0d4f518 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 @@ -22,4 +22,8 @@ public interface GitConstants { String GIT_FILE_NAME = "CamelGitFilename"; String GIT_COMMIT_MESSAGE = "CamelGitCommitMessage"; + + String GIT_COMMIT_USERNAME = "CamelGitCommitUsername"; + + String GIT_COMMIT_EMAIL = "CamelGitCommitEmail"; } http://git-wip-us.apache.org/repos/asf/camel/blob/24dd79f0/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 3c225e8..0f10f29 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 @@ -29,6 +29,7 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ListBranchCommand.ListMode; import org.eclipse.jgit.api.PullResult; import org.eclipse.jgit.api.Status; +import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -224,16 +225,27 @@ public class GitProducer extends DefaultProducer { protected void doCommit(Exchange exchange, String operation) throws Exception { String commitMessage = null; + String username = null; + String email = null; if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_MESSAGE))) { commitMessage = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_MESSAGE, String.class); } else { throw new IllegalArgumentException("Commit message must be specified to execute " + operation); } + 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); + } try { if (ObjectHelper.isNotEmpty(endpoint.getBranchName())) { git.checkout().setCreateBranch(false).setName(endpoint.getBranchName()).call(); } - git.commit().setMessage(commitMessage).call(); + if (ObjectHelper.isNotEmpty(username) && ObjectHelper.isNotEmpty(email)) { + git.commit().setCommitter(username, email).setMessage(commitMessage).call(); + } else { + git.commit().setMessage(commitMessage).call(); + } } catch (Exception e) { LOG.error("There was an error in Git " + operation + " operation"); throw e; @@ -242,16 +254,27 @@ public class GitProducer extends DefaultProducer { protected void doCommitAll(Exchange exchange, String operation) throws Exception { String commitMessage = null; + String username = null; + String email = null; if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_COMMIT_MESSAGE))) { commitMessage = exchange.getIn().getHeader(GitConstants.GIT_COMMIT_MESSAGE, String.class); } else { throw new IllegalArgumentException("Commit message must be specified to execute " + operation); } + 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); + } try { if (ObjectHelper.isNotEmpty(endpoint.getBranchName())) { git.checkout().setCreateBranch(false).setName(endpoint.getBranchName()).call(); } - git.commit().setAll(true).setMessage(commitMessage).call(); + if (ObjectHelper.isNotEmpty(username) && ObjectHelper.isNotEmpty(email)) { + git.commit().setAll(true).setCommitter(username, email).setMessage(commitMessage).call(); + } else { + git.commit().setAll(true).setMessage(commitMessage).call(); + } } catch (Exception e) { LOG.error("There was an error in Git " + operation + " operation"); throw e;