camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From acosent...@apache.org
Subject [01/23] camel git commit: CAMEL-7982: camel-git - A generic git component, add operation
Date Sat, 18 Jul 2015 09:09:18 GMT
Repository: camel
Updated Branches:
  refs/heads/master ebf05e07c -> 46d61b8c5


CAMEL-7982: camel-git - A generic git component, add operation


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/13b7373f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/13b7373f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/13b7373f

Branch: refs/heads/master
Commit: 13b7373f42fc5c0feea70ee5422b72d44e9e55cf
Parents: 91b8b57
Author: Andrea Cosentino <ancosen@gmail.com>
Authored: Sat Jul 18 11:05:54 2015 +0200
Committer: Andrea Cosentino <ancosen@gmail.com>
Committed: Sat Jul 18 11:08:13 2015 +0200

----------------------------------------------------------------------
 .../camel/component/git/GitConstants.java       |  1 +
 .../camel/component/git/GitOperation.java       |  1 +
 .../apache/camel/component/git/GitProducer.java | 27 +++++++++++-
 .../github/producer/GitProducerTest.java        | 46 ++++++++++++++++++++
 4 files changed, 73 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/13b7373f/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 88331c7..c96959b 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
@@ -18,4 +18,5 @@ package org.apache.camel.component.git;
 
 public interface GitConstants {
 	public static final String GIT_OPERATION = "CamelGitOperation";
+	public static final String GIT_FILE_NAME = "CamelGitFilename";
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/13b7373f/components/camel-git/src/main/java/org/apache/camel/component/git/GitOperation.java
----------------------------------------------------------------------
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitOperation.java
b/components/camel-git/src/main/java/org/apache/camel/component/git/GitOperation.java
index 2b951c0..62b19a4 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitOperation.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitOperation.java
@@ -20,4 +20,5 @@ public interface GitOperation {
 
     public final static String CLONE_OPERATION = "clone";
     public final static String INIT_OPERATION = "init";
+    public final static String ADD_OPERATION = "add";
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/13b7373f/components/camel-git/src/main/java/org/apache/camel/component/git/GitProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-git/src/main/java/org/apache/camel/component/git/GitProducer.java
b/components/camel-git/src/main/java/org/apache/camel/component/git/GitProducer.java
index e0fa4fe..1ccbac7 100644
--- a/components/camel-git/src/main/java/org/apache/camel/component/git/GitProducer.java
+++ b/components/camel-git/src/main/java/org/apache/camel/component/git/GitProducer.java
@@ -6,6 +6,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ObjectHelper;
 import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.lib.Repository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,13 +37,17 @@ public class GitProducer extends DefaultProducer{
 	    case GitOperation.INIT_OPERATION:
 	    	doInit(exchange, operation);
 	    	break;
+
+	    case GitOperation.ADD_OPERATION:
+	    	doAdd(exchange, operation);
+	    	break;	    	
 	    }
 	}
 	
     protected void doClone(Exchange exchange, String operation) {
     	Git result = null;
     	if (ObjectHelper.isEmpty(endpoint.getLocalPath())) {
-    		throw new IllegalArgumentException("Local path must specified to execute" + operation);
+    		throw new IllegalArgumentException("Local path must specified to execute " + operation);
     	}
     	try {
     		File localRepo = new File(endpoint.getLocalPath(), "");
@@ -62,7 +67,7 @@ public class GitProducer extends DefaultProducer{
     protected void doInit(Exchange exchange, String operation) {
     	Git result = null;
     	if (ObjectHelper.isEmpty(endpoint.getLocalPath())) {
-    		throw new IllegalArgumentException("Local path must specified to execute" + operation);
+    		throw new IllegalArgumentException("Local path must specified to execute " + operation);
     	}
     	try {
 			result = Git.init().setDirectory(new File(endpoint.getLocalPath(),"")).call();
@@ -73,4 +78,22 @@ public class GitProducer extends DefaultProducer{
 			result.close();
 		}
     }
+    
+    protected void doAdd(Exchange exchange, String operation) {
+    	String fileName = null;
+    	if (ObjectHelper.isEmpty(endpoint.getLocalPath())) {
+    		throw new IllegalArgumentException("Local path must specified to execute " + operation);
+    	}
+    	if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(GitConstants.GIT_FILE_NAME)))
{
+    		fileName = exchange.getIn().getHeader(GitConstants.GIT_FILE_NAME, String.class);
+    	} else {
+    		throw new IllegalArgumentException("File name must be specified to execute " + operation);
+    	}
+    	try {
+			Git.open(new File(endpoint.getLocalPath())).add().addFilepattern(fileName).call();
+		} catch (Exception e) {
+			LOG.error("There was an error in Git " + operation + " operation");
+			e.printStackTrace();
+		}
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/13b7373f/components/camel-git/src/test/java/org/apache/camel/component/github/producer/GitProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-git/src/test/java/org/apache/camel/component/github/producer/GitProducerTest.java
b/components/camel-git/src/test/java/org/apache/camel/component/github/producer/GitProducerTest.java
index 22e66b6..18965c8 100755
--- a/components/camel-git/src/test/java/org/apache/camel/component/github/producer/GitProducerTest.java
+++ b/components/camel-git/src/test/java/org/apache/camel/component/github/producer/GitProducerTest.java
@@ -17,14 +17,24 @@
 package org.apache.camel.component.github.producer;
 
 import java.io.File;
+import java.io.IOException;
 
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.git.GitConstants;
 import org.apache.camel.test.junit4.CamelTestSupport;
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.Status;
+import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
 import org.junit.Test;
 
 public class GitProducerTest extends CamelTestSupport{
 
 	private final static String GIT_LOCAL_REPO = "pippo";
+	private final static String FILENAME_TO_ADD = "filetest.txt";
 	
     @Override
     public void setUp() throws Exception {
@@ -56,6 +66,28 @@ public class GitProducerTest extends CamelTestSupport{
         assertEquals(gitDir.exists(), true);
     }
     
+    @Test
+    public void addTest() throws Exception {
+
+    	Repository repository = getTestRepository();
+        
+        File fileToAdd = new File(GIT_LOCAL_REPO, FILENAME_TO_ADD);
+        fileToAdd.createNewFile();
+        
+        template.send("direct:add", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(GitConstants.GIT_FILE_NAME, FILENAME_TO_ADD);
+            }
+        });
+        File gitDir = new File(GIT_LOCAL_REPO, ".git");
+        assertEquals(gitDir.exists(), true);
+        
+        Status status = new Git(repository).status().call();
+        assertTrue(status.getAdded().contains(FILENAME_TO_ADD));
+        repository.close();
+    }
+    
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {            
@@ -65,10 +97,24 @@ public class GitProducerTest extends CamelTestSupport{
                         .to("git://https://github.com/oscerd/json-webserver-example.git?localPath="
+ GIT_LOCAL_REPO + "&operation=clone");
                 from("direct:init")
                         .to("git://https://github.com/oscerd/json-webserver-example.git?localPath="
+ GIT_LOCAL_REPO + "&operation=init");
+                from("direct:add")
+                        .to("git://https://github.com/oscerd/json-webserver-example.git?localPath="
+ GIT_LOCAL_REPO + "&operation=add");
             } 
         };
     }
     
+    private Repository getTestRepository() throws IOException, IllegalStateException, GitAPIException
{
+        File gitRepo = new File(GIT_LOCAL_REPO, ".git");
+        Git.init().setDirectory(new File(GIT_LOCAL_REPO,"")).call();
+        // now open the resulting repository with a FileRepositoryBuilder
+        FileRepositoryBuilder builder = new FileRepositoryBuilder();
+        Repository repo = builder.setGitDir(gitRepo)
+                .readEnvironment() // scan environment GIT_* variables
+                .findGitDir() // scan up the file system tree
+                .build();
+        return repo;
+    }
+    
     static public boolean deleteDirectory(File path) {
         if( path.exists() ) {
           File[] files = path.listFiles();


Mime
View raw message