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:37 UTC
[camel-quarkus] 06/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 99330d3364ea408ada45778bf55fcc9e6bef4447
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Oct 8 11:27:32 2019 +0200
#75: Adding camel-quarkus-catalog (work in progress)
---
.../quarkus/maven/PrepareCatalogQuarkusMojo.java | 158 ++++++++++++++++++++-
1 file changed, 157 insertions(+), 1 deletion(-)
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 03824cb..4609c78 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
@@ -103,13 +103,15 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo {
public void execute() throws MojoExecutionException, MojoFailureException {
Set<String> extensions = findExtensions();
executeComponents(extensions);
+ executeLanguages(extensions);
+ executeDataFormats(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 = null;
+ List catalogComponents;
try {
InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/components.properties");
String text = loadText(is);
@@ -177,10 +179,164 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo {
}
}
+ protected void executeLanguages(Set<String> extensions) throws MojoExecutionException, MojoFailureException {
+ // TODO: include core languages
+ getLog().info("Copying all Camel extension json descriptors");
+
+ // grab languages from camel-catalog
+ List catalogLanguages;
+ try {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/languages.properties");
+ String text = loadText(is);
+ catalogLanguages = Arrays.asList(text.split("\n"));
+ getLog().info("Loaded " + catalogLanguages.size() + " languages from camel-catalog");
+ } catch (IOException e) {
+ throw new MojoFailureException("Error loading resource from camel-catalog due " + e.getMessage(), e);
+ }
+
+ // make sure to create out dir
+ languagesOutDir.mkdirs();
+
+ for (String extension : extensions) {
+ if (!isCamelLanguage(catalogLanguages, extension)) {
+ continue;
+ }
+
+ // for quarkus we need to amend the json file to use the quarkus maven GAV
+ try {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/languages/" + extension + ".json");
+ String text = loadText(is);
+
+ 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(languagesOutDir, extension + ".json");
+ FileOutputStream fos = new FileOutputStream(to, false);
+
+ fos.write(text.getBytes());
+
+ fos.close();
+
+ } catch (IOException e) {
+ throw new MojoFailureException("Cannot write json file " + extension, e);
+ }
+ }
+
+ File all = new File(languagesOutDir, "../languages.properties");
+ try {
+ FileOutputStream fos = new FileOutputStream(all, false);
+
+ String[] names = languagesOutDir.list();
+ List<String> languages = new ArrayList<>();
+ // sort the names
+ for (String name : names) {
+ if (name.endsWith(".json")) {
+ // strip out .json from the name
+ String languageName = name.substring(0, name.length() - 5);
+ languages.add(languageName);
+ }
+ }
+
+ Collections.sort(languages);
+ for (String name : languages) {
+ fos.write(name.getBytes());
+ fos.write("\n".getBytes());
+ }
+
+ fos.close();
+
+ } catch (IOException e) {
+ throw new MojoFailureException("Error writing to file " + all);
+ }
+ }
+
+ protected void executeDataFormats(Set<String> extensions) throws MojoExecutionException, MojoFailureException {
+ // TODO: include core data formats
+ getLog().info("Copying all Camel extension json descriptors");
+
+ // grab dataformats from camel-catalog
+ List catalogDataFormats;
+ try {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/dataformats.properties");
+ String text = loadText(is);
+ catalogDataFormats = Arrays.asList(text.split("\n"));
+ getLog().info("Loaded " + catalogDataFormats.size() + " dataformats from camel-catalog");
+ } catch (IOException e) {
+ throw new MojoFailureException("Error loading resource from camel-catalog due " + e.getMessage(), e);
+ }
+
+ // make sure to create out dir
+ dataFormatsOutDir.mkdirs();
+
+ for (String extension : extensions) {
+ if (!isCamelDataFormat(catalogDataFormats, extension)) {
+ continue;
+ }
+
+ // for quarkus we need to amend the json file to use the quarkus maven GAV
+ try {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("org/apache/camel/catalog/dataformats/" + extension + ".json");
+ String text = loadText(is);
+
+ 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(dataFormatsOutDir, extension + ".json");
+ FileOutputStream fos = new FileOutputStream(to, false);
+
+ fos.write(text.getBytes());
+
+ fos.close();
+
+ } catch (IOException e) {
+ throw new MojoFailureException("Cannot write json file " + extension, e);
+ }
+ }
+
+ File all = new File(dataFormatsOutDir, "../dataformats.properties");
+ try {
+ FileOutputStream fos = new FileOutputStream(all, false);
+
+ String[] names = dataFormatsOutDir.list();
+ List<String> dataFormats = new ArrayList<>();
+ // sort the names
+ for (String name : names) {
+ if (name.endsWith(".json")) {
+ // strip out .json from the name
+ String dataFormatName = name.substring(0, name.length() - 5);
+ dataFormats.add(dataFormatName);
+ }
+ }
+
+ Collections.sort(dataFormats);
+ for (String name : dataFormats) {
+ fos.write(name.getBytes());
+ fos.write("\n".getBytes());
+ }
+
+ fos.close();
+
+ } catch (IOException e) {
+ throw new MojoFailureException("Error writing to file " + all);
+ }
+ }
+
private static boolean isCamelComponent(List<String> components, String name) {
return components.stream().anyMatch(c -> c.equals(name));
}
+ private static boolean isCamelLanguage(List<String> languages, String name) {
+ return languages.stream().anyMatch(c -> c.equals(name));
+ }
+
+ private static boolean isCamelDataFormat(List<String> dataFormats, String name) {
+ return dataFormats.stream().anyMatch(c -> c.equals(name));
+ }
+
private Set<String> findExtensions() {
Set<String> answer = new LinkedHashSet<>();