You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/10/08 13:09:39 UTC
[camel-quarkus] 08/12: #75: Adding camel-quarkus-catalog (work in
progress)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch catalog
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 5ce148335900bde5644695f48c590d93dbdeb8f3
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Oct 8 13:40:36 2019 +0200
#75: Adding camel-quarkus-catalog (work in progress)
---
.../quarkus/maven/PrepareCatalogQuarkusMojo.java | 76 +++++++++++++++++-----
1 file changed, 59 insertions(+), 17 deletions(-)
diff --git a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
index 1a1abaf..63163d7 100644
--- a/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
+++ b/tooling/maven/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java
@@ -27,11 +27,14 @@ import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -56,10 +59,13 @@ import static org.apache.camel.quarkus.maven.PackageHelper.loadText;
@Mojo(name = "prepare-catalog-quarkus", threadSafe = true, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class PrepareCatalogQuarkusMojo extends AbstractMojo {
+ // TODO: match by artifact-id instead of directory name (mail -> camel-mail JAR -> component names (alias files, so copy over)
+
private static final String[] EXCLUDE_EXTENSIONS = {
"http-common", "jetty-common", "support", "xml-common", "xstream-common"
};
+ private static final Pattern SCHEME_PATTERN = Pattern.compile("\"scheme\": \"(.*)\"");
private static final Pattern GROUP_PATTERN = Pattern.compile("\"groupId\": \"(org.apache.camel)\"");
private static final Pattern ARTIFACT_PATTERN = Pattern.compile("\"artifactId\": \"camel-(.*)\"");
private static final Pattern VERSION_PATTERN = Pattern.compile("\"version\": \"(.*)\"");
@@ -124,16 +130,16 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo {
public void execute() throws MojoExecutionException, MojoFailureException {
Set<String> extensions = findExtensions();
executeComponents(extensions);
- executeLanguages(extensions);
- executeDataFormats(extensions);
- executeOthers(extensions);
+// executeLanguages(extensions);
+// executeDataFormats(extensions);
+// executeOthers(extensions);
}
protected void executeComponents(Set<String> extensions) throws MojoExecutionException, MojoFailureException {
getLog().info("Copying all Camel extension json descriptors");
// grab components from camel-catalog
- List catalogComponents;
+ List<String> catalogComponents;
try {
InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/components.properties");
String text = loadText(is);
@@ -147,29 +153,65 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo {
componentsOutDir.mkdirs();
for (String extension : extensions) {
- if (!isCamelComponent(catalogComponents, extension)) {
+
+ // grab GAB
+ String artifactId = null;
+ try {
+ MavenProject extProject = getMavenProject("org.apache.camel.quarkus", "camel-quarkus-" + extension, project.getVersion());
+ // grab camel artifact
+ Optional<Dependency> artifact = extProject.getDependencies().stream()
+ .filter(p -> "org.apache.camel".equals(p.getGroupId()) && "compile".equals(p.getScope()))
+ .findFirst();
+ if (artifact.isPresent()) {
+ artifactId = artifact.get().getArtifactId();
+ }
+ } catch (ProjectBuildingException e) {
+ throw new MojoFailureException("Cannot read pom.xml for extension " + extension, e);
+ }
+
+ if (artifactId == null) {
continue;
}
+ getLog().info("Discovered camel-quarkus extension org.apache.camel.quarkus:" + artifactId);
+
// for quarkus we need to amend the json file to use the quarkus maven GAV
+ List<String> jsonFiles = new ArrayList<>();
try {
- InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/components/" + extension + ".json");
- String text = loadText(is);
+ for (String component : catalogComponents) {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/components/" + component + ".json");
+ String text = loadText(is);
+ // see if it its a
+ boolean match = text.contains("\"artifactId\": \"" + artifactId + "\"");
+ if (match) {
+ jsonFiles.add(text);
+ }
+ }
+ } catch (IOException e) {
+ throw new MojoFailureException("Cannot read camel-catalog", e);
+ }
- text = GROUP_PATTERN.matcher(text).replaceFirst("\"groupId\": \"org.apache.camel.quarkus\"");
- text = ARTIFACT_PATTERN.matcher(text).replaceFirst("\"artifactId\": \"camel-quarkus-$1\"");
- text = VERSION_PATTERN.matcher(text).replaceFirst("\"version\": \"" + project.getVersion() + "\"");
+ for (String text : jsonFiles) {
+ try {
+ text = GROUP_PATTERN.matcher(text).replaceFirst("\"groupId\": \"org.apache.camel.quarkus\"");
+ text = ARTIFACT_PATTERN.matcher(text).replaceFirst("\"artifactId\": \"camel-quarkus-$1\"");
+ text = VERSION_PATTERN.matcher(text).replaceFirst("\"version\": \"" + project.getVersion() + "\"");
- // write new json file
- File to = new File(componentsOutDir, extension + ".json");
- FileOutputStream fos = new FileOutputStream(to, false);
+ Matcher matcher = SCHEME_PATTERN.matcher(text);
+ if (matcher.find()) {
+ String scheme = matcher.group(1);
- fos.write(text.getBytes());
+ // write new json file
+ File to = new File(componentsOutDir, scheme + ".json");
+ FileOutputStream fos = new FileOutputStream(to, false);
- fos.close();
+ fos.write(text.getBytes());
- } catch (IOException e) {
- throw new MojoFailureException("Cannot write json file " + extension, e);
+ fos.close();
+ }
+ } catch (IOException e) {
+ throw new MojoFailureException("Cannot write json file " + extension, e);
+ }
}
}