This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git

commit c84b80bd56aed35c6c77c8577bed3b4415576b78
Author: nicolaferraro <[email protected]>
AuthorDate: Fri Apr 30 14:08:59 2021 +0200

    add utility library
---
 .gitignore                                         |  30 ++++-
 .../wrapper/MavenWrapperDownloader.java            |   0
 .../.mvn => .mvn}/wrapper/maven-wrapper.jar        | Bin
 .../.mvn => .mvn}/wrapper/maven-wrapper.properties |   0
 camel-kamelets-catalog/.gitignore                  |  28 -----
 insert-field-action.kamelet.yaml                   |  46 ++++++++
 library/camel-kamelets-catalog/pom.xml             | 121 +++++++++++++++++++++
 .../camel/kamelets/catalog/KameletsCatalog.java    |   0
 .../kamelets/catalog/model/KameletLabelNames.java  |   0
 .../kamelets/catalog/model/KameletTypeEnum.java    |   0
 .../kamelets/aws-ddb-streams-source.kamelet.yaml   |   0
 .../aws-kinesis-firehose-sink.kamelet.yaml         |   0
 .../kamelets/aws-kinesis-sink.kamelet.yaml         |   0
 .../kamelets/aws-kinesis-source.kamelet.yaml       |   0
 .../kamelets/aws-lambda-sink.kamelet.yaml          |   0
 .../resources/kamelets/aws-s3-sink.kamelet.yaml    |   0
 .../resources/kamelets/aws-s3-source.kamelet.yaml  |   0
 .../kamelets/aws-sns-fifo-sink.kamelet.yaml        |   0
 .../resources/kamelets/aws-sns-sink.kamelet.yaml   |   0
 .../kamelets/aws-sqs-batch-sink.kamelet.yaml       |   0
 .../kamelets/aws-sqs-fifo-sink.kamelet.yaml        |   0
 .../resources/kamelets/aws-sqs-sink.kamelet.yaml   |   0
 .../resources/kamelets/aws-sqs-source.kamelet.yaml |   0
 .../kamelets/azure-eventhubs-sink.kamelet.yaml     |   0
 .../kamelets/azure-eventhubs-source.kamelet.yaml   |   0
 .../kamelets/azure-storage-blob-sink.kamelet.yaml  |   0
 .../azure-storage-blob-source.kamelet.yaml         |   0
 .../kamelets/azure-storage-queue-sink.kamelet.yaml |   0
 .../resources/kamelets/bitcoin-source.kamelet.yaml |   0
 .../kamelets/caffeine-action.kamelet.yaml          |   0
 .../resources/kamelets/cassandra-sink.kamelet.yaml |   0
 .../kamelets/cassandra-source.kamelet.yaml         |   0
 .../resources/kamelets/cron-source.kamelet.yaml    |   0
 .../resources/kamelets/dns-dig-action.kamelet.yaml |   0
 .../resources/kamelets/dns-ip-action.kamelet.yaml  |   0
 .../kamelets/dns-lookup-action.kamelet.yaml        |   0
 .../resources/kamelets/dropbox-sink.kamelet.yaml   |   0
 .../resources/kamelets/dropbox-source.kamelet.yaml |   0
 .../kamelets/earthquake-source.kamelet.yaml        |   0
 .../kamelets/elasticsearch-index-sink.kamelet.yaml |   0
 .../elasticsearch-search-source.kamelet.yaml       |   0
 .../main/resources/kamelets/exec-sink.kamelet.yaml |   0
 .../resources/kamelets/fhir-source.kamelet.yaml    |   0
 .../kamelets/file-watch-source.kamelet.yaml        |   0
 .../resources/kamelets/ftp-source.kamelet.yaml     |   0
 .../resources/kamelets/ftps-source.kamelet.yaml    |   0
 .../resources/kamelets/github-source.kamelet.yaml  |   0
 .../kamelets/google-calendar-source.kamelet.yaml   |   0
 .../kamelets/google-mail-source.kamelet.yaml       |   0
 .../kamelets/google-sheets-source.kamelet.yaml     |   0
 .../main/resources/kamelets/http-sink.kamelet.yaml |   0
 .../resources/kamelets/http-source.kamelet.yaml    |   0
 .../kamelets/infinispan-source.kamelet.yaml        |   0
 .../resources/kamelets/jira-source.kamelet.yaml    |   0
 .../resources/kamelets/kafka-source.kamelet.yaml   |   0
 .../kamelets/mail-imap-source.kamelet.yaml         |   0
 .../resources/kamelets/minio-sink.kamelet.yaml     |   0
 .../resources/kamelets/minio-source.kamelet.yaml   |   0
 .../resources/kamelets/mqtt-source.kamelet.yaml    |   0
 .../resources/kamelets/nats-source.kamelet.yaml    |   0
 .../kamelets/openai-completion-action.kamelet.yaml |   0
 .../resources/kamelets/pdf-action.kamelet.yaml     |   0
 .../kamelets/rabbitmq-source.kamelet.yaml          |   0
 .../kamelets/salesforce-source.kamelet.yaml        |   0
 .../resources/kamelets/sftp-source.kamelet.yaml    |   0
 .../resources/kamelets/slack-source.kamelet.yaml   |   0
 .../resources/kamelets/ssh-source.kamelet.yaml     |   0
 .../resources/kamelets/telegram-sink.kamelet.yaml  |   0
 .../kamelets/telegram-source.kamelet.yaml          |   0
 .../resources/kamelets/timer-source.kamelet.yaml   |   0
 .../twitter-directmessage-source.kamelet.yaml      |   0
 .../kamelets/twitter-search-source.kamelet.yaml    |   0
 .../kamelets/twitter-timeline-source.kamelet.yaml  |   0
 .../resources/kamelets/webhook-source.kamelet.yaml |   0
 .../kamelets/catalog/KameletsCatalogTest.java      |   0
 library/camel-kamelets-utils/pom.xml               |  62 +++++++++++
 .../kamelets/utils/transform/InsertField.java      |  24 ++++
 camel-kamelets-catalog/mvnw => mvnw                |   0
 camel-kamelets-catalog/mvnw.cmd => mvnw.cmd        |   0
 camel-kamelets-catalog/pom.xml => pom.xml          | 105 +++---------------
 .../insert-field-action-binding.yaml               |  22 ++++
 .../insert-field-action.feature                    |  25 +++++
 test/insert-field-action/yaks-config.yaml          |  29 +++++
 83 files changed, 371 insertions(+), 121 deletions(-)

diff --git a/.gitignore b/.gitignore
index 7861f62..1d91935 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,30 @@
-node_modules
 /docs/build
-.idea
+
+target
 *.iml
-.project
+*.ipr
+*.iws
+.idea
+.DS_Store
 .classpath
-.metadata
+.ekstazi
+.project
+.settings
+.checkstyle
+*.log
+test-salesforce-login.properties
+dependency-reduced-pom.xml
+id_file
+components/camel-solr/data
+*.epoch
+.factorypath
+.pmd
+.sts4-cache
+log-camel-lsp.out
 .vscode
+*.code-workspace
+components/camel-cxf/activemq-data
+*.swp
+.flattened-pom.xml
+.java-version
+node_modules/
diff --git a/camel-kamelets-catalog/.mvn/wrapper/MavenWrapperDownloader.java 
b/.mvn/wrapper/MavenWrapperDownloader.java
similarity index 100%
rename from camel-kamelets-catalog/.mvn/wrapper/MavenWrapperDownloader.java
rename to .mvn/wrapper/MavenWrapperDownloader.java
diff --git a/camel-kamelets-catalog/.mvn/wrapper/maven-wrapper.jar 
b/.mvn/wrapper/maven-wrapper.jar
similarity index 100%
rename from camel-kamelets-catalog/.mvn/wrapper/maven-wrapper.jar
rename to .mvn/wrapper/maven-wrapper.jar
diff --git a/camel-kamelets-catalog/.mvn/wrapper/maven-wrapper.properties 
b/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from camel-kamelets-catalog/.mvn/wrapper/maven-wrapper.properties
rename to .mvn/wrapper/maven-wrapper.properties
diff --git a/camel-kamelets-catalog/.gitignore 
b/camel-kamelets-catalog/.gitignore
deleted file mode 100644
index b9130f2..0000000
--- a/camel-kamelets-catalog/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-target
-*.iml
-*.ipr
-*.iws
-.idea
-.DS_Store
-.classpath
-.ekstazi
-.project
-.settings
-.checkstyle
-*.log
-test-salesforce-login.properties
-dependency-reduced-pom.xml
-id_file
-components/camel-solr/data
-*.epoch
-.factorypath
-.pmd
-.sts4-cache
-log-camel-lsp.out
-.vscode
-*.code-workspace
-components/camel-cxf/activemq-data
-*.swp
-.flattened-pom.xml
-.java-version
-node_modules/
diff --git a/insert-field-action.kamelet.yaml b/insert-field-action.kamelet.yaml
new file mode 100644
index 0000000..3cc8b0a
--- /dev/null
+++ b/insert-field-action.kamelet.yaml
@@ -0,0 +1,46 @@
+apiVersion: camel.apache.org/v1alpha1
+kind: Kamelet
+metadata:
+  name: insert-field
+  labels:
+    camel.apache.org/kamelet.type: "action"
+  annotations:
+    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG
 [...]
+    camel.apache.org/provider: "Apache Software Foundation"
+spec:
+  definition:
+    title: "Insert Field"
+    description: "Adds a custom field with a constant value to the message in 
transit"
+    required:
+      - field
+      - value
+    properties:
+      field:
+        title: Field
+        description: The name of the field to be added
+        type: string
+      value:
+        title: Value
+        description: The value of the field
+        type: string
+  dependencies:
+  - github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT
+  flow:
+    from:
+      uri: kamelet:source
+      steps:
+      - choice:
+          when:
+          - simple: "${header[Content-Type]} == 'application/json'"
+            steps:
+            - unmarshal:
+                json: {}
+      - set-property:
+          name: "field"
+          constant: "{{field}}"
+      - set-property:
+          name: "value"
+          constant: "{{value}}"
+      - bean: "org.apache.camel.kamelets.utils.transform.InsertField"
+      - marshal:
+          json: {}
diff --git a/library/camel-kamelets-catalog/pom.xml 
b/library/camel-kamelets-catalog/pom.xml
new file mode 100644
index 0000000..74332c9
--- /dev/null
+++ b/library/camel-kamelets-catalog/pom.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel.kamelets</groupId>
+        <artifactId>camel-kamelets-parent</artifactId>
+        <version>main-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-kamelets-catalog</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Camel Kamelets Catalog</name>
+    <description>Camel Kamelets Catalog</description>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-yaml</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.fabric8</groupId>
+            <artifactId>camel-k-model-v1alpha1</artifactId>
+            <version>${camel.k.extension.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons.io.version}</version>
+        </dependency>
+        <!-- logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+            <version>${junit.jupiter.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+            <version>${junit.jupiter.version}</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>copy-resource-one</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+
+                        <configuration>
+                            <overwrite>true</overwrite>
+                            
<outputDirectory>src/main/resources/kamelets</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>./../../</directory>
+                                    <includes>
+                                        <include>*.kamelet.yaml</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git 
a/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
 
b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
rename to 
library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java
diff --git 
a/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletLabelNames.java
 
b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletLabelNames.java
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletLabelNames.java
rename to 
library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletLabelNames.java
diff --git 
a/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
 
b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
rename to 
library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletTypeEnum.java
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-fifo-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-batch-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/azure-eventhubs-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/bitcoin-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/caffeine-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/cron-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/dns-dig-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/dns-ip-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/dns-lookup-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/dropbox-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/earthquake-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-search-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/exec-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/fhir-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/file-watch-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/github-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/google-calendar-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/google-mail-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/google-sheets-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/http-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/infinispan-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/infinispan-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/infinispan-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/infinispan-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/mail-imap-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/minio-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/minio-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/mqtt-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/nats-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/openai-completion-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/pdf-action.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/rabbitmq-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/ssh-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-sink.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/twitter-search-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-search-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
 
b/library/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
similarity index 100%
rename from 
camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
rename to 
library/camel-kamelets-catalog/src/main/resources/kamelets/webhook-source.kamelet.yaml
diff --git 
a/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
 
b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
similarity index 100%
rename from 
camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
rename to 
library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java
diff --git a/library/camel-kamelets-utils/pom.xml 
b/library/camel-kamelets-utils/pom.xml
new file mode 100644
index 0000000..00617c6
--- /dev/null
+++ b/library/camel-kamelets-utils/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel.kamelets</groupId>
+        <artifactId>camel-kamelets-parent</artifactId>
+        <version>main-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-kamelets-utils</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Camel Kamelets Utils</name>
+    <description>Camel Kamelets Utilities</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-bom</artifactId>
+                <version>${camel.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-jackson</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>
diff --git 
a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java
 
b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java
new file mode 100644
index 0000000..aae1f51
--- /dev/null
+++ 
b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java
@@ -0,0 +1,24 @@
+package org.apache.camel.kamelets.utils.transform;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangeProperty;
+import org.apache.camel.InvalidPayloadException;
+
+public class InsertField {
+
+    public Map<?, ?> process(@ExchangeProperty("field") String field, 
@ExchangeProperty("value") String value, Exchange ex) throws 
InvalidPayloadException {
+        Map<Object, Object> body = ex.getMessage().getBody(Map.class);
+        if (body == null) {
+            String val = ex.getMessage().getMandatoryBody(String.class);
+            body = new HashMap<>();
+            // TODO: make this configurable
+            body.put("content", val);
+        }
+        body.put(field, value);
+        return body;
+    }
+
+}
diff --git a/camel-kamelets-catalog/mvnw b/mvnw
similarity index 100%
rename from camel-kamelets-catalog/mvnw
rename to mvnw
diff --git a/camel-kamelets-catalog/mvnw.cmd b/mvnw.cmd
similarity index 100%
rename from camel-kamelets-catalog/mvnw.cmd
rename to mvnw.cmd
diff --git a/camel-kamelets-catalog/pom.xml b/pom.xml
similarity index 82%
rename from camel-kamelets-catalog/pom.xml
rename to pom.xml
index a0c8f44..9e005f2 100644
--- a/camel-kamelets-catalog/pom.xml
+++ b/pom.xml
@@ -22,17 +22,22 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-      <groupId>org.apache</groupId>
-      <artifactId>apache</artifactId>
-      <version>23</version>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>23</version>
     </parent>
 
     <groupId>org.apache.camel.kamelets</groupId>
-    <artifactId>camel-kamelets-catalog</artifactId>
-    <packaging>jar</packaging>
-    <version>0.3.0-SNAPSHOT</version>
-    <name>Camel Kamelets Catalog</name>
-    <description>Camel Kamelets Catalog</description>
+    <artifactId>camel-kamelets-parent</artifactId>
+    <packaging>pom</packaging>
+    <version>main-SNAPSHOT</version>
+    <name>Camel Kamelets Parent</name>
+    <description>Camel Kamelets Library Parent</description>
+
+    <modules>
+        <module>library/camel-kamelets-catalog</module>
+        <module>library/camel-kamelets-utils</module>
+    </modules>
 
     <properties>
         <failIfNoTests>false</failIfNoTests>
@@ -44,6 +49,8 @@
         <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
         <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
         
<maven-checksum-maven-plugin.version>1.7</maven-checksum-maven-plugin.version>
+
+        <camel.version>3.9.0</camel.version>
         <log4j.version>2.13.3</log4j.version>
         <jackson.version>2.11.4</jackson.version>
         <camel.k.extension.version>5.3.1</camel.k.extension.version>
@@ -124,60 +131,6 @@
         </pluginRepository>
     </pluginRepositories>
 
-    <dependencies>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.fabric8</groupId>
-            <artifactId>camel-k-model-v1alpha1</artifactId>
-            <version>${camel.k.extension.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons.io.version}</version>
-        </dependency>
-        <!-- logging -->
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>${log4j.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <version>${log4j.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <scope>test</scope>
-            <version>${junit.jupiter.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <scope>test</scope>
-            <version>${junit.jupiter.version}</version>
-        </dependency>
-
-    </dependencies>
-
     <build>
         <defaultGoal>install</defaultGoal>
 
@@ -287,32 +240,6 @@
                     </configuration>
                 </plugin>
                 <plugin>
-                    <artifactId>maven-resources-plugin</artifactId>
-                    <version>3.1.0</version>
-                    <executions>
-                        <execution>
-                            <id>copy-resource-one</id>
-                            <phase>install</phase>
-                            <goals>
-                                <goal>copy-resources</goal>
-                            </goals>
-
-                            <configuration>
-                                <overwrite>true</overwrite>
-                                
<outputDirectory>src/main/resources/kamelets</outputDirectory>
-                                <resources>
-                                    <resource>
-                                        <directory>./../</directory>
-                                        <includes>
-                                            <include>*.kamelet.yaml</include>
-                                        </includes>
-                                    </resource>
-                                </resources>
-                            </configuration>
-                        </execution>
-                    </executions>
-                </plugin>
-                <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
                     <configuration>
@@ -416,7 +343,7 @@
                                         
<include>${project.artifactId}-${project.version}-sources.jar</include>
                                         
<include>${project.artifactId}-${project.version}-package.tar.gz</include>
                                         <!--XXX: keep this in sync with 
distribution/pom.xml <finalName> tag-->
-                                        
<include>camel-kafka-connector-${project.version}-src.zip</include>
+                                        <!-- 
include>camel-kafka-connector-${project.version}-src.zip</include-->
                                     </includes>
                                 </fileSet>
                             </fileSets>
diff --git a/test/insert-field-action/insert-field-action-binding.yaml 
b/test/insert-field-action/insert-field-action-binding.yaml
new file mode 100644
index 0000000..8651ab4
--- /dev/null
+++ b/test/insert-field-action/insert-field-action-binding.yaml
@@ -0,0 +1,22 @@
+kind: KameletBinding
+apiVersion: camel.apache.org/v1alpha1
+metadata:
+  name: insert-field-action-binding
+spec:
+  source:
+    ref:
+      apiVersion: camel.apache.org/v1alpha1
+      kind: Kamelet
+      name: timer-source
+    properties:
+      message: "thecontent"
+  steps:
+  - ref:
+      apiVersion: camel.apache.org/v1alpha1
+      kind: Kamelet
+      name: insert-field-action
+    properties:
+      field: "thefield"
+      value: "thevalue"
+  sink:
+    uri: http://probe-service.${YAKS_NAMESPACE}/events
diff --git a/test/insert-field-action/insert-field-action.feature 
b/test/insert-field-action/insert-field-action.feature
new file mode 100644
index 0000000..14bfca9
--- /dev/null
+++ b/test/insert-field-action/insert-field-action.feature
@@ -0,0 +1,25 @@
+Feature: Timer Source Kamelet
+
+  Background:
+    Given Disable auto removal of Kamelet resources
+    Given Disable auto removal of Kubernetes resources
+    Given Camel-K resource polling configuration
+      | maxAttempts          | 20   |
+      | delayBetweenAttempts | 1000 |
+
+  Scenario: Wait for binding to start
+    Given create Kubernetes service probe-service with target port 8080
+    Then KameletBinding insert-field-action-binding should be available
+
+  Scenario: Verify binding
+    Given HTTP server "probe-service"
+    And HTTP server timeout is 300000 ms
+    Then expect HTTP request body
+    """
+    {
+      "content": "thecontent",
+      "thefield": "thevalue"
+    }
+    """
+    And receive POST /events
+    And delete KameletBinding insert-field-action-binding
diff --git a/test/insert-field-action/yaks-config.yaml 
b/test/insert-field-action/yaks-config.yaml
new file mode 100644
index 0000000..b621d04
--- /dev/null
+++ b/test/insert-field-action/yaks-config.yaml
@@ -0,0 +1,29 @@
+# ---------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ---------------------------------------------------------------------------
+
+config:
+  namespace:
+    temporary: true
+pre:
+- name: installation
+  run: |
+    # Install required Kamelets (these steps may be done globally in future 
versions)
+
+    kamel install -n $YAKS_NAMESPACE
+    kubectl apply -f ../../timer-source.kamelet.yaml -n $YAKS_NAMESPACE
+    kubectl apply -f ../../insert-field-action.kamelet.yaml -n $YAKS_NAMESPACE
+    kubectl apply -f insert-field-binding.yaml -n $YAKS_NAMESPACE

Reply via email to