You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/03/01 21:44:52 UTC
[camel-karavan] 01/02: Git progect pull for #647
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit eaaff7921dcd6ecb552af4b428821ed02052c933
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Feb 28 15:11:46 2023 -0500
Git progect pull for #647
---
.../org/apache/camel/karavan/api/GitResource.java | 18 +++++++++++++-
.../apache/camel/karavan/service/GitService.java | 12 +++++++++
.../camel/karavan/service/ImportService.java | 29 +++++++++++++++++++---
3 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/GitResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/GitResource.java
index 9bd7d21a..3e9de9c2 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/api/GitResource.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/GitResource.java
@@ -16,24 +16,33 @@
*/
package org.apache.camel.karavan.api;
+import org.apache.camel.karavan.model.GitRepo;
import org.apache.camel.karavan.model.Project;
+import org.apache.camel.karavan.model.ProjectFile;
import org.apache.camel.karavan.service.GitService;
+import org.apache.camel.karavan.service.ImportService;
import org.jboss.logging.Logger;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
+
@Path("/api/git")
public class GitResource {
@Inject
GitService gitService;
+ @Inject
+ ImportService importService;
+
private static final Logger LOGGER = Logger.getLogger(GitResource.class.getName());
@@ -41,7 +50,14 @@ public class GitResource {
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Project push(HashMap<String, String> params) throws Exception {
- System.out.println(params);
return gitService.commitAndPushProject(params.get("projectId"), params.get("message"));
}
+
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/{projectId}")
+ public Project pull(@PathParam("projectId") String projectId) throws Exception {
+ return importService.importProject(projectId);
+ }
}
\ No newline at end of file
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
index 26f2c821..57765e4d 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
@@ -55,6 +55,7 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
+import java.util.stream.Collectors;
@ApplicationScoped
public class GitService {
@@ -130,6 +131,14 @@ public class GitService {
}
public List<GitRepo> readProjectsFromRepository() {
+ return readProjectsFromRepository(null);
+ }
+
+ public GitRepo readProjectFromRepository(String projectId) {
+ return readProjectsFromRepository(projectId).get(0);
+ }
+
+ private List<GitRepo> readProjectsFromRepository(String filter) {
LOGGER.info("Read projects...");
GitConfig gitConfig = getGitConfig();
LOGGER.info("Read projects from repository " + gitConfig.getUri());
@@ -143,6 +152,9 @@ public class GitService {
git = clone(folder, gitConfig.getUri(), gitConfig.getBranch(), cred);
checkout(git, false, null, null, gitConfig.getBranch());
List<String> projects = readProjectsFromFolder(folder);
+ if (filter != null) {
+ projects = projects.stream().filter(s -> s.equals(filter)).collect(Collectors.toList());
+ }
for (String project : projects) {
Map<String, String> filesRead = readProjectFilesFromFolder(folder, project);
List<GitRepoFile> files = new ArrayList<>(filesRead.size());
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java
index a56d40ae..3ebc09c4 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java
@@ -17,7 +17,6 @@
package org.apache.camel.karavan.service;
import io.quarkus.vertx.ConsumeEvent;
-import io.smallrye.mutiny.tuples.Tuple2;
import org.apache.camel.karavan.model.GitRepo;
import org.apache.camel.karavan.model.GitRepoFile;
import org.apache.camel.karavan.model.Project;
@@ -30,7 +29,6 @@ import javax.inject.Inject;
import java.time.Instant;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
@ApplicationScoped
public class ImportService {
@@ -85,6 +83,29 @@ public class ImportService {
addTemplatesProject("");
}
+ public Project importProject(String projectId) {
+ LOGGER.info("Import project from Git " + projectId);
+ try {
+ GitRepo repo = gitService.readProjectFromRepository(projectId);
+ Project project;
+ String folderName = repo.getName();
+ String propertiesFile = getPropertiesFile(repo);
+ String projectName = getProjectName(propertiesFile);
+ String projectDescription = getProjectDescription(propertiesFile);
+ String runtime = getProjectRuntime(propertiesFile);
+ project = new Project(folderName, projectName, projectDescription, runtime, repo.getCommitId(), repo.getLastCommitTimestamp());
+ infinispanService.saveProject(project, true);
+ repo.getFiles().forEach(repoFile -> {
+ ProjectFile file = new ProjectFile(repoFile.getName(), repoFile.getBody(), folderName, repoFile.getLastCommitTimestamp());
+ infinispanService.saveProjectFile(file);
+ });
+ return project;
+ } catch (Exception e) {
+ LOGGER.error("Error during project import", e);
+ return null;
+ }
+ }
+
void addKameletsProject(String data) {
LOGGER.info("Add custom kamelets project if not exists");
try {
@@ -92,7 +113,7 @@ public class ImportService {
if (kamelets == null) {
kamelets = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "quarkus", "", Instant.now().toEpochMilli());
infinispanService.saveProject(kamelets, true);
- gitService.commitAndPushProject(kamelets);
+ gitService.commitAndPushProject("kamelets", "Add custom kamelets");
}
} catch (Exception e) {
LOGGER.error("Error during custom kamelets project creation", e);
@@ -112,7 +133,7 @@ public class ImportService {
ProjectFile file = new ProjectFile(name, value, Project.NAME_TEMPLATES, Instant.now().toEpochMilli());
infinispanService.saveProjectFile(file);
});
- gitService.commitAndPushProject(templates);
+ gitService.commitAndPushProject("templates", "Add default templates");
}
} catch (Exception e) {
LOGGER.error("Error during templates project creation", e);