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

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit eaebf6190d63306e6cf6295376e2e1886073cebf
Author: Andrea Cosentino <[email protected]>
AuthorDate: Wed Jul 15 18:47:30 2020 +0200

    Added Camel-Jsonata to the kit
---
 apache-camel/src/main/descriptors/common-bin.xml   |   1 +
 bom/camel-bom/pom.xml                              |   5 +
 .../org/apache/camel/catalog/components.properties |   1 +
 .../apache/camel/catalog/components/jsonata.json   |  37 +++
 .../org/apache/camel/catalog/docs.properties       |   1 +
 .../camel/catalog/docs/jsonata-component.adoc      | 124 ++++++++
 .../component/ComponentsBuilderFactory.java        |  11 +
 .../dsl/JsonataComponentBuilderFactory.java        | 109 +++++++
 .../src/generated/resources/metadata.json          |  21 ++
 .../builder/endpoint/EndpointBuilderFactory.java   |   1 +
 .../camel/builder/endpoint/EndpointBuilders.java   |   1 +
 .../builder/endpoint/StaticEndpointBuilders.java   |  57 +++-
 .../dsl/JsonataEndpointBuilderFactory.java         | 331 +++++++++++++++++++++
 docs/components/modules/ROOT/nav.adoc              |   1 +
 .../modules/ROOT/pages/jsonata-component.adoc      | 126 ++++++++
 15 files changed, 823 insertions(+), 4 deletions(-)

diff --git a/apache-camel/src/main/descriptors/common-bin.xml 
b/apache-camel/src/main/descriptors/common-bin.xml
index a9a3708..adf57d3 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -236,6 +236,7 @@
         <include>org.apache.camel:camel-jslt</include>
         <include>org.apache.camel:camel-json-validator</include>
         <include>org.apache.camel:camel-jsonapi</include>
+        <include>org.apache.camel:camel-jsonata</include>
         <include>org.apache.camel:camel-jsonpath</include>
         <include>org.apache.camel:camel-jt400</include>
         <include>org.apache.camel:camel-jta</include>
diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index e1bab41..9e5aaed 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1069,6 +1069,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-jsonata</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-jsonpath</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
index e3b8acf..c71460e 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components.properties
@@ -194,6 +194,7 @@ jooq
 jpa
 jslt
 json-validator
+jsonata
 jt400
 kafka
 kubernetes-config-maps
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jsonata.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jsonata.json
new file mode 100644
index 0000000..97b125a
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jsonata.json
@@ -0,0 +1,37 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "jsonata",
+    "title": "JSONATA",
+    "description": "JSON to JSON transformation using JSONATA.",
+    "deprecated": false,
+    "firstVersion": "3.5.0",
+    "label": "transformation",
+    "javaType": "org.apache.camel.component.jsonata.JsonataComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-jsonata",
+    "version": "3.5.0-SNAPSHOT",
+    "scheme": "jsonata",
+    "extendsScheme": "",
+    "syntax": "jsonata:resourceUri",
+    "async": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a producer may otherwise 
fail during starting and cause the r [...]
+    "basicPropertyBinding": { "kind": "property", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" }
+  },
+  "properties": {
+    "resourceUri": { "kind": "path", "displayName": "Resource Uri", "group": 
"producer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "secret": 
false, "description": "Path to the resource. You can prefix with: classpath, 
file, http, ref, or bean. classpath, file and http loads the resource using 
these protocols (classpath is default). ref will lookup the resource in the 
registry. bean will call a method on a  [...]
+    "allowContextMapAll": { "kind": "parameter", "displayName": "Allow Context 
Map All", "group": "producer", "label": "", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "false", "description": "Sets whether the context map should 
allow access to all details. By default only the message body and headers can 
be accessed. This option can be enabled for full access to the current Exchange 
and CamelContext. Doing so impose a [...]
+    "contentCache": { "kind": "parameter", "displayName": "Content Cache", 
"group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
"false", "description": "Sets whether to use resource content cache or not" },
+    "inputType": { "kind": "parameter", "displayName": "Input Type", "group": 
"producer", "label": "", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.jsonata.JsonataInputOutputType", "enum": [ 
"Jackson", "JsonString" ], "deprecated": false, "secret": false, 
"defaultValue": "Jackson", "description": "Specifies if the output should be 
Jackson JsonNode or a JSON String." },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a producer may otherwise 
fail during starting and cause the  [...]
+    "outputType": { "kind": "parameter", "displayName": "Output Type", 
"group": "producer", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.jsonata.JsonataInputOutputType", 
"enum": [ "Jackson", "JsonString" ], "deprecated": false, "secret": false, 
"defaultValue": "Jackson", "description": "Specifies if the output should be 
Jackson JsonNode or a JSON String." },
+    "basicPropertyBinding": { "kind": "parameter", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" },
+    "synchronous": { "kind": "parameter", "displayName": "Synchronous", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
"false", "description": "Sets whether synchronous processing should be strictly 
used, or Camel is allowed to use asynchronous processing (if supported)." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
index 747b52c..0a3738b 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
@@ -268,6 +268,7 @@ json-johnzon-dataformat
 json-validator-component
 json-xstream-dataformat
 jsonApi-dataformat
+jsonata-component
 jsonpath-language
 jt400-component
 jta
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonata-component.adoc
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonata-component.adoc
new file mode 100644
index 0000000..b3fa011
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonata-component.adoc
@@ -0,0 +1,124 @@
+[[jsonata-component]]
+= JSONATA Component
+:docTitle: JSONATA
+:artifactId: camel-jsonata
+:description: JSON to JSON transformation using JSONATA.
+:since: 3.5
+:supportLevel: Preview
+:component-header: Only producer is supported
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Jsonata component allows you to process JSON messages using the
+https://jsonata.org/[JSONATA] specification. This can be
+ideal when doing JSON to JSON transformation and other transformations from 
JSON.
+
+Maven users will need to add the following dependency to
+their `pom.xml` for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-jsonata</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+ 
+
+== URI format
+
+[source,java]
+-----------------------
+jsonata:specName[?options]
+-----------------------
+
+Where *specName* is the classpath-local URI of the specification to
+invoke; or the complete URL of the remote specification
+(eg: \file://folder/myfile.vm).
+
+You can append query options to the URI in the following
+format, `?option=value&option=value&...`
+
+== Options
+
+
+
+
+// component options: START
+The JSONATA component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
+| *basicPropertyBinding* (advanced) | Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
+|===
+// component options: END
+
+
+// endpoint options: START
+The JSONATA endpoint is configured using URI syntax:
+
+----
+jsonata:resourceUri
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceUri* | *Required* Path to the resource. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath is default). ref will lookup the 
resource in the registry. bean will call a method on a bean to be used as the 
resource. For bean you can specify the method name after dot, eg 
bean:myBean.myMethod. |  | String
+|===
+
+
+=== Query Parameters (7 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *allowContextMapAll* (producer) | Sets whether the context map should allow 
access to all details. By default only the message body and headers can be 
accessed. This option can be enabled for full access to the current Exchange 
and CamelContext. Doing so impose a potential security risk as this opens 
access to the full power of CamelContext API. | false | boolean
+| *contentCache* (producer) | Sets whether to use resource content cache or 
not | false | boolean
+| *inputType* (producer) | Specifies if the output should be Jackson JsonNode 
or a JSON String. The value can be one of: Jackson, JsonString | Jackson | 
JsonataInputOutputType
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
+| *outputType* (producer) | Specifies if the output should be Jackson JsonNode 
or a JSON String. The value can be one of: Jackson, JsonString | Jackson | 
JsonataInputOutputType
+| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
+| *synchronous* (advanced) | Sets whether synchronous processing should be 
strictly used, or Camel is allowed to use asynchronous processing (if 
supported). | false | boolean
+|===
+// endpoint options: END
+
+
+
+
+== Samples
+
+For example you could use something like
+
+[source,java]
+--------------------------------------
+from("activemq:My.Queue").
+  to("jsonata:com/acme/MyResponse.json");
+--------------------------------------
+
+And a file based resource:
+
+[source,java]
+---------------------------------------------------------------
+from("activemq:My.Queue").
+  to("jsonata:file://myfolder/MyResponse.json?contentCache=true").
+  to("activemq:Another.Queue");
+---------------------------------------------------------------
+
+
+
+include::camel-spring-boot::page$jsonata-component.adoc[]
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index 1c9ebd1..ece952c 100644
--- 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -2224,6 +2224,17 @@ public interface ComponentsBuilderFactory {
         return 
org.apache.camel.builder.component.dsl.JsonValidatorComponentBuilderFactory.jsonValidator();
     }
     /**
+     * JSONATA (camel-jsonata)
+     * JSON to JSON transformation using JSONATA.
+     * 
+     * Category: transformation
+     * Since: 3.5
+     * Maven coordinates: org.apache.camel:camel-jsonata
+     */
+    static 
org.apache.camel.builder.component.dsl.JsonataComponentBuilderFactory.JsonataComponentBuilder
 jsonata() {
+        return 
org.apache.camel.builder.component.dsl.JsonataComponentBuilderFactory.jsonata();
+    }
+    /**
      * JT400 (camel-jt400)
      * Exchanges messages with an IBM i system using data queues, message
      * queues, or program call. IBM i is the replacement for AS/400 and iSeries
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JsonataComponentBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JsonataComponentBuilderFactory.java
new file mode 100644
index 0000000..716e972
--- /dev/null
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JsonataComponentBuilderFactory.java
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+package org.apache.camel.builder.component.dsl;
+
+import javax.annotation.Generated;
+import org.apache.camel.Component;
+import org.apache.camel.builder.component.AbstractComponentBuilder;
+import org.apache.camel.builder.component.ComponentBuilder;
+import org.apache.camel.component.jsonata.JsonataComponent;
+
+/**
+ * JSON to JSON transformation using JSONATA.
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
+public interface JsonataComponentBuilderFactory {
+
+    /**
+     * JSONATA (camel-jsonata)
+     * JSON to JSON transformation using JSONATA.
+     * 
+     * Category: transformation
+     * Since: 3.5
+     * Maven coordinates: org.apache.camel:camel-jsonata
+     */
+    static JsonataComponentBuilder jsonata() {
+        return new JsonataComponentBuilderImpl();
+    }
+
+    /**
+     * Builder for the JSONATA component.
+     */
+    interface JsonataComponentBuilder
+            extends
+                ComponentBuilder<JsonataComponent> {
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes 
to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring 
this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that 
when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing 
time
+         * of the processing.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataComponentBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the component should use basic property binding (Camel 2.x)
+         * or the newer property binding with additional capabilities.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: advanced
+         */
+        default JsonataComponentBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+    }
+
+    class JsonataComponentBuilderImpl
+            extends
+                AbstractComponentBuilder<JsonataComponent>
+            implements
+                JsonataComponentBuilder {
+        @Override
+        protected JsonataComponent buildConcreteComponent() {
+            return new JsonataComponent();
+        }
+        @Override
+        protected boolean setPropertyOnComponent(
+                Component component,
+                String name,
+                Object value) {
+            switch (name) {
+            case "lazyStartProducer": ((JsonataComponent) 
component).setLazyStartProducer((boolean) value); return true;
+            case "basicPropertyBinding": ((JsonataComponent) 
component).setBasicPropertyBinding((boolean) value); return true;
+            default: return false;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/core/camel-componentdsl/src/generated/resources/metadata.json 
b/core/camel-componentdsl/src/generated/resources/metadata.json
index b6418d9..51eff44 100644
--- a/core/camel-componentdsl/src/generated/resources/metadata.json
+++ b/core/camel-componentdsl/src/generated/resources/metadata.json
@@ -4141,6 +4141,27 @@
     "producerOnly": true,
     "lenientProperties": false
   },
+  "JsonataComponentBuilderFactory": {
+    "kind": "component",
+    "name": "jsonata",
+    "title": "JSONATA",
+    "description": "JSON to JSON transformation using JSONATA.",
+    "deprecated": false,
+    "firstVersion": "3.5.0",
+    "label": "transformation",
+    "javaType": "org.apache.camel.component.jsonata.JsonataComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-jsonata",
+    "version": "3.5.0-SNAPSHOT",
+    "scheme": "jsonata",
+    "extendsScheme": "",
+    "syntax": "jsonata:resourceUri",
+    "async": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
   "Jt400ComponentBuilderFactory": {
     "kind": "component",
     "name": "jt400",
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 70fd722..b88f5b4 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -194,6 +194,7 @@ public interface EndpointBuilderFactory
             
org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory.JpaBuilders,
             
org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory.JsltBuilders,
             
org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory.JsonValidatorBuilders,
+            
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.JsonataBuilders,
             
org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory.Jt400Builders,
             
org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory.KMS2Builders,
             
org.apache.camel.builder.endpoint.dsl.KMSEndpointBuilderFactory.KMSBuilders,
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 7676f4c..bf7cc8c 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -191,6 +191,7 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory,
             
org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory,
+            
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KMSEndpointBuilderFactory,
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 0715cfe..906e14c 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -2814,7 +2814,7 @@ public class StaticEndpointBuilders {
      * 
      * @param path apiName/methodName
      */
-    static 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeEndpointBuilder
 braintree(
+    public static 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeEndpointBuilder
 braintree(
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.endpointBuilder("braintree",
 path);
     }
@@ -2842,7 +2842,7 @@ public class StaticEndpointBuilders {
      * instead of the default name
      * @param path apiName/methodName
      */
-    static 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeEndpointBuilder
 braintree(
+    public static 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeEndpointBuilder
 braintree(
             String componentName,
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.endpointBuilder(componentName,
 path);
@@ -8432,6 +8432,55 @@ public class StaticEndpointBuilders {
         return 
org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory.endpointBuilder(componentName,
 path);
     }
     /**
+     * JSONATA (camel-jsonata)
+     * JSON to JSON transformation using JSONATA.
+     * 
+     * Category: transformation
+     * Since: 3.5
+     * Maven coordinates: org.apache.camel:camel-jsonata
+     * 
+     * Syntax: <code>jsonata:resourceUri</code>
+     * 
+     * Path parameter: resourceUri (required)
+     * Path to the resource. You can prefix with: classpath, file, http, ref, 
or
+     * bean. classpath, file and http loads the resource using these protocols
+     * (classpath is default). ref will lookup the resource in the registry.
+     * bean will call a method on a bean to be used as the resource. For bean
+     * you can specify the method name after dot, eg bean:myBean.myMethod.
+     * 
+     * @param path resourceUri
+     */
+    public static 
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.JsonataEndpointBuilder
 jsonata(
+            String path) {
+        return 
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.endpointBuilder("jsonata",
 path);
+    }
+    /**
+     * JSONATA (camel-jsonata)
+     * JSON to JSON transformation using JSONATA.
+     * 
+     * Category: transformation
+     * Since: 3.5
+     * Maven coordinates: org.apache.camel:camel-jsonata
+     * 
+     * Syntax: <code>jsonata:resourceUri</code>
+     * 
+     * Path parameter: resourceUri (required)
+     * Path to the resource. You can prefix with: classpath, file, http, ref, 
or
+     * bean. classpath, file and http loads the resource using these protocols
+     * (classpath is default). ref will lookup the resource in the registry.
+     * bean will call a method on a bean to be used as the resource. For bean
+     * you can specify the method name after dot, eg bean:myBean.myMethod.
+     * 
+     * @param componentName to use a custom component name for the endpoint
+     * instead of the default name
+     * @param path resourceUri
+     */
+    public static 
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.JsonataEndpointBuilder
 jsonata(
+            String componentName,
+            String path) {
+        return 
org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.endpointBuilder(componentName,
 path);
+    }
+    /**
      * JSON Schema Validator (camel-json-validator)
      * Validate JSON payloads using NetworkNT JSON Schema.
      * 
@@ -15381,7 +15430,7 @@ public class StaticEndpointBuilders {
      * 
      * @param path serverUrls/path
      */
-    public static 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.ZooKeeperEndpointBuilder
 zookeeper(
+    static 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.ZooKeeperEndpointBuilder
 zookeeper(
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.endpointBuilder("zookeeper",
 path);
     }
@@ -15405,7 +15454,7 @@ public class StaticEndpointBuilders {
      * instead of the default name
      * @param path serverUrls/path
      */
-    public static 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.ZooKeeperEndpointBuilder
 zookeeper(
+    static 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.ZooKeeperEndpointBuilder
 zookeeper(
             String componentName,
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.ZooKeeperEndpointBuilderFactory.endpointBuilder(componentName,
 path);
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonataEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonataEndpointBuilderFactory.java
new file mode 100644
index 0000000..eba8934
--- /dev/null
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonataEndpointBuilderFactory.java
@@ -0,0 +1,331 @@
+/*
+ * 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.
+ */
+package org.apache.camel.builder.endpoint.dsl;
+
+import javax.annotation.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * JSON to JSON transformation using JSONATA.
+ * 
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface JsonataEndpointBuilderFactory {
+
+
+    /**
+     * Builder for endpoint for the JSONATA component.
+     */
+    public interface JsonataEndpointBuilder extends EndpointProducerBuilder {
+        default AdvancedJsonataEndpointBuilder advanced() {
+            return (AdvancedJsonataEndpointBuilder) this;
+        }
+        /**
+         * Sets whether the context map should allow access to all details. By
+         * default only the message body and headers can be accessed. This
+         * option can be enabled for full access to the current Exchange and
+         * CamelContext. Doing so impose a potential security risk as this 
opens
+         * access to the full power of CamelContext API.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder allowContextMapAll(
+                boolean allowContextMapAll) {
+            doSetProperty("allowContextMapAll", allowContextMapAll);
+            return this;
+        }
+        /**
+         * Sets whether the context map should allow access to all details. By
+         * default only the message body and headers can be accessed. This
+         * option can be enabled for full access to the current Exchange and
+         * CamelContext. Doing so impose a potential security risk as this 
opens
+         * access to the full power of CamelContext API.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder allowContextMapAll(
+                String allowContextMapAll) {
+            doSetProperty("allowContextMapAll", allowContextMapAll);
+            return this;
+        }
+        /**
+         * Sets whether to use resource content cache or not.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder contentCache(boolean contentCache) {
+            doSetProperty("contentCache", contentCache);
+            return this;
+        }
+        /**
+         * Sets whether to use resource content cache or not.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder contentCache(String contentCache) {
+            doSetProperty("contentCache", contentCache);
+            return this;
+        }
+        /**
+         * Specifies if the output should be Jackson JsonNode or a JSON String.
+         * 
+         * The option is a:
+         * 
<code>org.apache.camel.component.jsonata.JsonataInputOutputType</code> type.
+         * 
+         * Default: Jackson
+         * Group: producer
+         */
+        default JsonataEndpointBuilder inputType(
+                JsonataInputOutputType inputType) {
+            doSetProperty("inputType", inputType);
+            return this;
+        }
+        /**
+         * Specifies if the output should be Jackson JsonNode or a JSON String.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.camel.component.jsonata.JsonataInputOutputType</code> type.
+         * 
+         * Default: Jackson
+         * Group: producer
+         */
+        default JsonataEndpointBuilder inputType(String inputType) {
+            doSetProperty("inputType", inputType);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes 
to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring 
this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that 
when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing 
time
+         * of the processing.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder lazyStartProducer(
+                boolean lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Whether the producer should be started lazy (on the first message).
+         * By starting lazy you can use this to allow CamelContext and routes 
to
+         * startup in situations where a producer may otherwise fail during
+         * starting and cause the route to fail being started. By deferring 
this
+         * startup to be lazy then the startup failure can be handled during
+         * routing messages via Camel's routing error handlers. Beware that 
when
+         * the first message is processed then creating and starting the
+         * producer may take a little time and prolong the total processing 
time
+         * of the processing.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         */
+        default JsonataEndpointBuilder lazyStartProducer(
+                String lazyStartProducer) {
+            doSetProperty("lazyStartProducer", lazyStartProducer);
+            return this;
+        }
+        /**
+         * Specifies if the output should be Jackson JsonNode or a JSON String.
+         * 
+         * The option is a:
+         * 
<code>org.apache.camel.component.jsonata.JsonataInputOutputType</code> type.
+         * 
+         * Default: Jackson
+         * Group: producer
+         */
+        default JsonataEndpointBuilder outputType(
+                JsonataInputOutputType outputType) {
+            doSetProperty("outputType", outputType);
+            return this;
+        }
+        /**
+         * Specifies if the output should be Jackson JsonNode or a JSON String.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.camel.component.jsonata.JsonataInputOutputType</code> type.
+         * 
+         * Default: Jackson
+         * Group: producer
+         */
+        default JsonataEndpointBuilder outputType(String outputType) {
+            doSetProperty("outputType", outputType);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the JSONATA component.
+     */
+    public interface AdvancedJsonataEndpointBuilder
+            extends
+                EndpointProducerBuilder {
+        default JsonataEndpointBuilder basic() {
+            return (JsonataEndpointBuilder) this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) 
or
+         * the newer property binding with additional capabilities.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: advanced
+         */
+        default AdvancedJsonataEndpointBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) 
or
+         * the newer property binding with additional capabilities.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: advanced
+         */
+        default AdvancedJsonataEndpointBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            doSetProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or 
Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: advanced
+         */
+        default AdvancedJsonataEndpointBuilder synchronous(boolean 
synchronous) {
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or 
Camel
+         * is allowed to use asynchronous processing (if supported).
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: advanced
+         */
+        default AdvancedJsonataEndpointBuilder synchronous(String synchronous) 
{
+            doSetProperty("synchronous", synchronous);
+            return this;
+        }
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.jsonata.JsonataInputOutputType</code>
+     * enum.
+     */
+    enum JsonataInputOutputType {
+        Jackson,
+        JsonString;
+    }
+
+    public interface JsonataBuilders {
+        /**
+         * JSONATA (camel-jsonata)
+         * JSON to JSON transformation using JSONATA.
+         * 
+         * Category: transformation
+         * Since: 3.5
+         * Maven coordinates: org.apache.camel:camel-jsonata
+         * 
+         * Syntax: <code>jsonata:resourceUri</code>
+         * 
+         * Path parameter: resourceUri (required)
+         * Path to the resource. You can prefix with: classpath, file, http,
+         * ref, or bean. classpath, file and http loads the resource using 
these
+         * protocols (classpath is default). ref will lookup the resource in 
the
+         * registry. bean will call a method on a bean to be used as the
+         * resource. For bean you can specify the method name after dot, eg
+         * bean:myBean.myMethod.
+         * 
+         * @param path resourceUri
+         */
+        default JsonataEndpointBuilder jsonata(String path) {
+            return JsonataEndpointBuilderFactory.endpointBuilder("jsonata", 
path);
+        }
+        /**
+         * JSONATA (camel-jsonata)
+         * JSON to JSON transformation using JSONATA.
+         * 
+         * Category: transformation
+         * Since: 3.5
+         * Maven coordinates: org.apache.camel:camel-jsonata
+         * 
+         * Syntax: <code>jsonata:resourceUri</code>
+         * 
+         * Path parameter: resourceUri (required)
+         * Path to the resource. You can prefix with: classpath, file, http,
+         * ref, or bean. classpath, file and http loads the resource using 
these
+         * protocols (classpath is default). ref will lookup the resource in 
the
+         * registry. bean will call a method on a bean to be used as the
+         * resource. For bean you can specify the method name after dot, eg
+         * bean:myBean.myMethod.
+         * 
+         * @param componentName to use a custom component name for the endpoint
+         * instead of the default name
+         * @param path resourceUri
+         */
+        default JsonataEndpointBuilder jsonata(String componentName, String 
path) {
+            return 
JsonataEndpointBuilderFactory.endpointBuilder(componentName, path);
+        }
+    }
+    static JsonataEndpointBuilder endpointBuilder(
+            String componentName,
+            String path) {
+        class JsonataEndpointBuilderImpl extends AbstractEndpointBuilder 
implements JsonataEndpointBuilder, AdvancedJsonataEndpointBuilder {
+            public JsonataEndpointBuilderImpl(String path) {
+                super(componentName, path);
+            }
+        }
+        return new JsonataEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/nav.adoc 
b/docs/components/modules/ROOT/nav.adoc
index 62db468..15598ad 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -197,6 +197,7 @@
 ** xref:jpa-component.adoc[JPA]
 ** xref:jslt-component.adoc[JSLT]
 ** xref:json-validator-component.adoc[JSON Schema Validator]
+** xref:jsonata-component.adoc[JSONATA]
 ** xref:jt400-component.adoc[JT400]
 ** xref:kafka-component.adoc[Kafka]
 ** xref:kubernetes-summary.adoc[Kubernetes]
diff --git a/docs/components/modules/ROOT/pages/jsonata-component.adoc 
b/docs/components/modules/ROOT/pages/jsonata-component.adoc
new file mode 100644
index 0000000..9d09f36
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/jsonata-component.adoc
@@ -0,0 +1,126 @@
+[[jsonata-component]]
+= JSONATA Component
+//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
+:page-source: components/camel-jsonata/src/main/docs/jsonata-component.adoc
+:docTitle: JSONATA
+:artifactId: camel-jsonata
+:description: JSON to JSON transformation using JSONATA.
+:since: 3.5
+:supportLevel: Preview
+:component-header: Only producer is supported
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Jsonata component allows you to process JSON messages using the
+https://jsonata.org/[JSONATA] specification. This can be
+ideal when doing JSON to JSON transformation and other transformations from 
JSON.
+
+Maven users will need to add the following dependency to
+their `pom.xml` for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-jsonata</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+ 
+
+== URI format
+
+[source,java]
+-----------------------
+jsonata:specName[?options]
+-----------------------
+
+Where *specName* is the classpath-local URI of the specification to
+invoke; or the complete URL of the remote specification
+(eg: \file://folder/myfile.vm).
+
+You can append query options to the URI in the following
+format, `?option=value&option=value&...`
+
+== Options
+
+
+
+
+// component options: START
+The JSONATA component supports 2 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
+| *basicPropertyBinding* (advanced) | Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
+|===
+// component options: END
+
+
+// endpoint options: START
+The JSONATA endpoint is configured using URI syntax:
+
+----
+jsonata:resourceUri
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *resourceUri* | *Required* Path to the resource. You can prefix with: 
classpath, file, http, ref, or bean. classpath, file and http loads the 
resource using these protocols (classpath is default). ref will lookup the 
resource in the registry. bean will call a method on a bean to be used as the 
resource. For bean you can specify the method name after dot, eg 
bean:myBean.myMethod. |  | String
+|===
+
+
+=== Query Parameters (7 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *allowContextMapAll* (producer) | Sets whether the context map should allow 
access to all details. By default only the message body and headers can be 
accessed. This option can be enabled for full access to the current Exchange 
and CamelContext. Doing so impose a potential security risk as this opens 
access to the full power of CamelContext API. | false | boolean
+| *contentCache* (producer) | Sets whether to use resource content cache or 
not | false | boolean
+| *inputType* (producer) | Specifies if the output should be Jackson JsonNode 
or a JSON String. The value can be one of: Jackson, JsonString | Jackson | 
JsonataInputOutputType
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
+| *outputType* (producer) | Specifies if the output should be Jackson JsonNode 
or a JSON String. The value can be one of: Jackson, JsonString | Jackson | 
JsonataInputOutputType
+| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
+| *synchronous* (advanced) | Sets whether synchronous processing should be 
strictly used, or Camel is allowed to use asynchronous processing (if 
supported). | false | boolean
+|===
+// endpoint options: END
+
+
+
+
+== Samples
+
+For example you could use something like
+
+[source,java]
+--------------------------------------
+from("activemq:My.Queue").
+  to("jsonata:com/acme/MyResponse.json");
+--------------------------------------
+
+And a file based resource:
+
+[source,java]
+---------------------------------------------------------------
+from("activemq:My.Queue").
+  to("jsonata:file://myfolder/MyResponse.json?contentCache=true").
+  to("activemq:Another.Queue");
+---------------------------------------------------------------
+
+
+
+include::camel-spring-boot::page$jsonata-component.adoc[]

Reply via email to