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
The following commit(s) were added to refs/heads/master by this push: new 2d3b486 CAMEL-12666: Create push tag operation 2d3b486 is described below commit 2d3b486dd7e15dba4b545e4b4e4920ded949d516 Author: valtoni <valt...@gmail.com> AuthorDate: Wed Jul 18 15:09:30 2018 -0300 CAMEL-12666: Create push tag operation --- .../camel-git/src/main/docs/git-component.adoc | 2 ++ .../camel/component/git/producer/GitOperation.java | 1 + .../camel/component/git/producer/GitProducer.java | 28 ++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/components/camel-git/src/main/docs/git-component.adoc b/components/camel-git/src/main/docs/git-component.adoc index fe84ad8..22b5a89 100644 --- a/components/camel-git/src/main/docs/git-component.adoc +++ b/components/camel-git/src/main/docs/git-component.adoc @@ -134,6 +134,8 @@ from("direct:start") .setHeader(GitConstants.GIT_COMMIT_MESSAGE, constant("first commit")) .to("git:///tmp/testRepo?operation=commit") .to("git:///tmp/testRepo?operation=push&remotePath=https://foo.com/test/test.git&username=xxx&password=xxx") + .to("git:///tmp/testRepo?operation=createTag&tagName=myTag") + .to("git:///tmp/testRepo?operation=pushTag&tagName=myTag&remoteName=origin") -------------------------------------------------------------------------------------------------------------------- ### Consumer Example diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java index d2373a7..d5f63fa 100644 --- a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java +++ b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitOperation.java @@ -31,6 +31,7 @@ public interface GitOperation { String STATUS_OPERATION = "status"; String LOG_OPERATION = "log"; String PUSH_OPERATION = "push"; + String PUSH_TAG_OPERATION = "pushTag"; String PULL_OPERATION = "pull"; String MERGE_OPERATION = "merge"; String SHOW_BRANCHES_OPERATION = "showBranches"; 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 07ef434..7ac108f 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 @@ -36,6 +36,7 @@ import org.eclipse.jgit.api.MergeResult; import org.eclipse.jgit.api.PullResult; import org.eclipse.jgit.api.RemoteAddCommand; import org.eclipse.jgit.api.Status; +import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; @@ -49,6 +50,7 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + public class GitProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(GitProducer.class); @@ -140,6 +142,10 @@ public class GitProducer extends DefaultProducer { doPush(exchange, operation); break; + case GitOperation.PUSH_TAG_OPERATION: + doPushTag(exchange, operation); + break; + case GitOperation.PULL_OPERATION: doPull(exchange, operation); break; @@ -407,6 +413,28 @@ public class GitProducer extends DefaultProducer { updateExchange(exchange, result); } + protected void doPushTag(Exchange exchange, String operation) throws Exception { + Iterable<PushResult> result = null; + try { + if (ObjectHelper.isEmpty(endpoint.getRemoteName())) { + throw new IllegalArgumentException("Remote name must be specified to execute " + operation); + } + if (ObjectHelper.isEmpty(endpoint.getTagName())) { + throw new IllegalArgumentException("Tag Name must be specified to execute " + operation); + } + if (ObjectHelper.isNotEmpty(endpoint.getUsername()) && ObjectHelper.isNotEmpty(endpoint.getPassword())) { + UsernamePasswordCredentialsProvider credentials = new UsernamePasswordCredentialsProvider(endpoint.getUsername(), endpoint.getPassword()); + result = git.push().setCredentialsProvider(credentials).setRemote(endpoint.getRemoteName()).add(Constants.R_TAGS + endpoint.getTagName()).call(); + } else { + result = git.push().setRemote(endpoint.getRemoteName()).add(Constants.R_TAGS + endpoint.getTagName()).call(); + } + } catch (Exception e) { + LOG.error("There was an error in Git " + operation + " operation"); + throw e; + } + updateExchange(exchange, result); + } + protected void doPull(Exchange exchange, String operation) throws Exception { PullResult result = null; try {