You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2025/02/05 06:07:17 UTC
(camel) branch main updated: CAMEL-21541: Ceate Neo4j and introduce vector database support
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new bb100bace1f CAMEL-21541: Ceate Neo4j and introduce vector database support
bb100bace1f is described below
commit bb100bace1fd729144f3ffe77530b2f70ef48da0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Feb 5 07:07:07 2025 +0100
CAMEL-21541: Ceate Neo4j and introduce vector database support
---
.../org/apache/camel/catalog/components.properties | 1 +
.../org/apache/camel/catalog/components/neo4j.json | 81 +++
.../apache/camel/catalog/main/sensitive-keys.json | 4 +
.../apache/camel/catalog/transformers.properties | 1 +
.../catalog/transformers/neo4j-embeddings.json | 14 +
...j-neo4j-component.adoc => neo4j-component.adoc} | 9 +-
.../org/apache/camel/main/components.properties | 1 +
.../java/org/apache/camel/util/SensitiveUtils.java | 10 +-
docs/components/modules/ROOT/nav.adoc | 2 +-
.../ROOT/pages/langchain4j-neo4j-component.adoc | 1 -
.../modules/ROOT/pages/neo4j-component.adoc | 1 +
.../component/ComponentsBuilderFactory.java | 13 +
.../dsl/Neo4jComponentBuilderFactory.java | 408 +++++++++++++
.../builder/endpoint/EndpointBuilderFactory.java | 1 +
.../camel/builder/endpoint/EndpointBuilders.java | 1 +
.../builder/endpoint/StaticEndpointBuilders.java | 40 ++
.../endpoint/dsl/Neo4jEndpointBuilderFactory.java | 655 +++++++++++++++++++++
.../apache/camel/maven/packaging/MojoHelper.java | 2 +-
18 files changed, 1234 insertions(+), 11 deletions(-)
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 faf25dd6e75..7eb00e2a86d 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
@@ -235,6 +235,7 @@ mvel
mybatis
mybatis-bean
nats
+neo4j
netty
netty-http
nitrite
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/neo4j.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/neo4j.json
new file mode 100644
index 00000000000..cc02a06d871
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/neo4j.json
@@ -0,0 +1,81 @@
+{
+ "component": {
+ "kind": "component",
+ "name": "neo4j",
+ "title": "Neo4j",
+ "description": "Perform operations on the Neo4j Graph Database",
+ "deprecated": false,
+ "firstVersion": "4.10.0",
+ "label": "database,ai",
+ "javaType": "org.apache.camel.component.neo4j.Neo4jComponent",
+ "supportLevel": "Preview",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-neo4j",
+ "version": "4.10.0-SNAPSHOT",
+ "scheme": "neo4j",
+ "extendsScheme": "",
+ "syntax": "neo4j:name",
+ "async": false,
+ "api": false,
+ "consumerOnly": false,
+ "producerOnly": true,
+ "lenientProperties": false,
+ "browsable": false,
+ "remote": true
+ },
+ "componentProperties": {
+ "alias": { "index": 0, "kind": "property", "displayName": "Alias", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Node alias" },
+ "base64": { "index": 1, "kind": "property", "displayName": "Encoded base64 ticket", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Kerberos Authentication encoded base64 ticket" },
+ "configuration": { "index": 2, "kind": "property", "displayName": "Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.neo4j.Neo4jConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration;" },
+ "dbPassword": { "index": 3, "kind": "property", "displayName": "Database password", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database password" },
+ "dbUri": { "index": 4, "kind": "property", "displayName": "Db Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "URI of the Neo4j server - used for Authentication" },
+ "dbUser": { "index": 5, "kind": "property", "displayName": "Database user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database user" },
+ "detachRelationship": { "index": 6, "kind": "property", "displayName": "Detach Relationship", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Detach a relationship - set true if want to delete a node and detach its relationships [...]
+ "dimension": { "index": 7, "kind": "property", "displayName": "Dimension", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Dimension of Vector Index" },
+ "label": { "index": 8, "kind": "property", "displayName": "Label", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Node Label" },
+ "lazyStartProducer": { "index": 9, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 [...]
+ "maxResults": { "index": 10, "kind": "property", "displayName": "Max Results", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 3, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Maximum results for Vector Similarity search" },
+ "minScore": { "index": 11, "kind": "property", "displayName": "Min Score", "group": "producer", "label": "", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.0, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Minimum score for Vector Similarity search" },
+ "query": { "index": 12, "kind": "property", "displayName": "Query", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Cypher Query" },
+ "realm": { "index": 13, "kind": "property", "displayName": "Database user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database realm" },
+ "similarityFunction": { "index": 14, "kind": "property", "displayName": "Similarity Function", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.neo4j.Neo4jSimilarityFunction", "enum": [ "cosine", "euclidean" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": [...]
+ "token": { "index": 15, "kind": "property", "displayName": "Realm", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Bearer authentication database realm" },
+ "vectorIndexName": { "index": 16, "kind": "property", "displayName": "Vector Index Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Vector Index Name" },
+ "autowiredEnabled": { "index": 17, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching [...]
+ "driver": { "index": 18, "kind": "property", "displayName": "Driver", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.neo4j.driver.Driver", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Advanced - Driver" }
+ },
+ "headers": {
+ "CamelNeo4jAction": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "enum": [ "CREATE_NODE", "DELETE_NODE", "RETRIEVE_NODES", "RETRIEVE_NODES_AND_UPDATE_WITH_CYPHER_QUERY", "ADD_OR_DELETE_NODE_WITH_CYPHER_QUERY", "CREATE_VECTOR_INDEX", "DROP_VECTOR_INDEX", "CREATE_VECTOR", "VECTOR_SIMILARITY_SEARCH" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The opera [...]
+ "CamelNeo4jMatchProperties": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "MATCH properties for the generated MATCH query. Needed only if we are matching properties and values. Example: {name: 'Alice'}", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#MATCH_PROPERTIES" },
+ "CamelNeo4jQueryResult": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query excetuded", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT" },
+ "CamelNeo4jQueryResultNodesCreated": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query Number of nodes created", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT_NODES_CREATED" },
+ "CamelNeo4jQueryResultNodesDeleted": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query Number of nodes deleted", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT_NODES_DELETED" },
+ "CamelNeo4jQueryResultContainsUpdates": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Booleab", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query executed contains update", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT_CONTAINS_UPDATES" },
+ "CamelNeo4jQueryResultRelationshipsCreated": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query executed number of relationships created", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT_RELATIONSHIPS_CREATED" },
+ "CamelNeo4jQueryResultRelationshipsDeleted": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query executed number of relationships deleted", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RESULT_RELATIONSHIPS_DELETED" },
+ "CamelNeo4jQueryResultRetrieveSize": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Number of nodes retrieved", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RETRIEVE_SIZE" },
+ "CamelNeo4jQueryResultListNeo4jNodes": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Query execution time in Milliseconfs", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#QUERY_RETRIEVE_LIST_NEO4J_NODES" },
+ "CamelNeo4jVectorEmbeddingId": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Vector Id for the embedding", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#VECTOR_ID" },
+ "CamelNeo4jLabel": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Label for the Node - used when inserting from Embeddings", "constantName": "org.apache.camel.component.neo4j.Neo4j$Headers#LABEL" }
+ },
+ "properties": {
+ "name": { "index": 0, "kind": "path", "displayName": "Name", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The database Name" },
+ "alias": { "index": 1, "kind": "parameter", "displayName": "Alias", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Node alias" },
+ "base64": { "index": 2, "kind": "parameter", "displayName": "Encoded base64 ticket", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Kerberos Authentication encoded base64 ticket" },
+ "dbPassword": { "index": 3, "kind": "parameter", "displayName": "Database password", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database password" },
+ "dbUri": { "index": 4, "kind": "parameter", "displayName": "Db Uri", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "URI of the Neo4j server - used for Authentication" },
+ "dbUser": { "index": 5, "kind": "parameter", "displayName": "Database user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database user" },
+ "detachRelationship": { "index": 6, "kind": "parameter", "displayName": "Detach Relationship", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Detach a relationship - set true if want to delete a node and detach its relationship [...]
+ "dimension": { "index": 7, "kind": "parameter", "displayName": "Dimension", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Dimension of Vector Index" },
+ "label": { "index": 8, "kind": "parameter", "displayName": "Label", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Node Label" },
+ "maxResults": { "index": 9, "kind": "parameter", "displayName": "Max Results", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 3, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Maximum results for Vector Similarity search" },
+ "minScore": { "index": 10, "kind": "parameter", "displayName": "Min Score", "group": "producer", "label": "", "required": false, "type": "number", "javaType": "double", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0.0, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Minimum score for Vector Similarity search" },
+ "query": { "index": 11, "kind": "parameter", "displayName": "Query", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Cypher Query" },
+ "realm": { "index": 12, "kind": "parameter", "displayName": "Database user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Basic authentication database realm" },
+ "similarityFunction": { "index": 13, "kind": "parameter", "displayName": "Similarity Function", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.neo4j.Neo4jSimilarityFunction", "enum": [ "cosine", "euclidean" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "cosine", "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": [...]
+ "token": { "index": 14, "kind": "parameter", "displayName": "Realm", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Bearer authentication database realm" },
+ "vectorIndexName": { "index": 15, "kind": "parameter", "displayName": "Vector Index Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Vector Index Name" },
+ "lazyStartProducer": { "index": 16, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 produ [...]
+ "driver": { "index": 17, "kind": "parameter", "displayName": "Driver", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.neo4j.driver.Driver", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.neo4j.Neo4jConfiguration", "configurationField": "configuration", "description": "Advanced - Driver" }
+ }
+}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
index 167f9d6a91d..37a4566362d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/sensitive-keys.json
@@ -13,6 +13,7 @@
"apiusername",
"authkey",
"authorizationtoken",
+ "base64",
"blobaccesskey",
"blobstoragesharedkeycredential",
"certresourcepassword",
@@ -22,6 +23,8 @@
"connectionstring",
"consumerkey",
"consumersecret",
+ "dbpassword",
+ "dbuser",
"emailaddress",
"httpproxypassword",
"keystorePassword",
@@ -47,6 +50,7 @@
"publickeyid",
"publishkey",
"queueownerawsaccountid",
+ "realm",
"refreshtoken",
"sascredential",
"sasljaasconfig",
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
index b740fa67e2c..87f08bc689e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers.properties
@@ -28,6 +28,7 @@ google-sheets-stream-application-cloudevents
google-storage-application-cloudevents
http-application-cloudevents
milvus-embeddings
+neo4j-embeddings
pinecone-embeddings
protobuf-binary
protobuf-x-java-object
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/neo4j-embeddings.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/neo4j-embeddings.json
new file mode 100644
index 00000000000..e1230e5e5ed
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/transformers/neo4j-embeddings.json
@@ -0,0 +1,14 @@
+{
+ "transformer": {
+ "kind": "transformer",
+ "name": "neo4j:embeddings",
+ "title": "Neo4j (Embeddings)",
+ "description": "Prepares the message to become an object writable by Neo4j component",
+ "deprecated": false,
+ "javaType": "org.apache.camel.component.neo4j.transformer.Neo4jEmbeddingDataTypeTransformer",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-neo4j",
+ "version": "4.10.0-SNAPSHOT"
+ }
+}
+
diff --git a/components/camel-ai/camel-neo4j/src/main/docs/langchain4j-neo4j-component.adoc b/components/camel-ai/camel-neo4j/src/main/docs/neo4j-component.adoc
similarity index 99%
rename from components/camel-ai/camel-neo4j/src/main/docs/langchain4j-neo4j-component.adoc
rename to components/camel-ai/camel-neo4j/src/main/docs/neo4j-component.adoc
index afd37e3fa25..5fc4b0a8960 100644
--- a/components/camel-ai/camel-neo4j/src/main/docs/langchain4j-neo4j-component.adoc
+++ b/components/camel-ai/camel-neo4j/src/main/docs/neo4j-component.adoc
@@ -2,9 +2,9 @@
:doctitle: Neo4j
:shortname: neo4j
:artifactid: camel-neo4j
-:description: Neo4j
+:description: Perform operations on the Neo4j Graph Database
:since: 4.10
-:supportlevel: Stable
+:supportlevel: Preview
:tabs-sync-option:
:component-header: Only producer is supported
//Manually maintained attributes
@@ -264,8 +264,3 @@ You can generate embeddings with an Embedding Models using the camel Lancghain4j
.transform(new DataType("neo4j:embeddings"))
.to("neo4j:test");
----
-
-
-
-
-
diff --git a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
index faf25dd6e75..7eb00e2a86d 100644
--- a/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
+++ b/core/camel-main/src/generated/resources/org/apache/camel/main/components.properties
@@ -235,6 +235,7 @@ mvel
mybatis
mybatis-bean
nats
+neo4j
netty
netty-http
nitrite
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
index adcdc338cd9..ab6fbc55640 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java
@@ -42,6 +42,7 @@ public final class SensitiveUtils {
"apiusername",
"authkey",
"authorizationtoken",
+ "base64",
"blobaccesskey",
"blobstoragesharedkeycredential",
"certresourcepassword",
@@ -51,6 +52,8 @@ public final class SensitiveUtils {
"connectionstring",
"consumerkey",
"consumersecret",
+ "dbpassword",
+ "dbuser",
"emailaddress",
"httpproxypassword",
"keystorePassword",
@@ -76,6 +79,7 @@ public final class SensitiveUtils {
"publickeyid",
"publishkey",
"queueownerawsaccountid",
+ "realm",
"refreshtoken",
"sascredential",
"sasljaasconfig",
@@ -121,6 +125,7 @@ public final class SensitiveUtils {
+ "|\\Qapiusername\\E"
+ "|\\Qauthkey\\E"
+ "|\\Qauthorizationtoken\\E"
+ + "|\\Qbase64\\E"
+ "|\\Qblobaccesskey\\E"
+ "|\\Qblobstoragesharedkeycredential\\E"
+ "|\\Qcertresourcepassword\\E"
@@ -130,6 +135,8 @@ public final class SensitiveUtils {
+ "|\\Qconnectionstring\\E"
+ "|\\Qconsumerkey\\E"
+ "|\\Qconsumersecret\\E"
+ + "|\\Qdbpassword\\E"
+ + "|\\Qdbuser\\E"
+ "|\\Qemailaddress\\E"
+ "|\\Qhttpproxypassword\\E"
+ "|\\QkeystorePassword\\E"
@@ -155,6 +162,7 @@ public final class SensitiveUtils {
+ "|\\Qpublickeyid\\E"
+ "|\\Qpublishkey\\E"
+ "|\\Qqueueownerawsaccountid\\E"
+ + "|\\Qrealm\\E"
+ "|\\Qrefreshtoken\\E"
+ "|\\Qsascredential\\E"
+ "|\\Qsasljaasconfig\\E"
@@ -180,7 +188,7 @@ public final class SensitiveUtils {
+ "|\\Qverificationcode\\E"
+ "|\\Qwebhookverifytoken\\E"
+ "|\\Qzookeeperpassword\\E"
- // SENSITIVE-PATTERN: END
+ // SENSITIVE-PATTERN: END
;
private SensitiveUtils() {
diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc
index be049492970..8b490118595 100644
--- a/docs/components/modules/ROOT/nav.adoc
+++ b/docs/components/modules/ROOT/nav.adoc
@@ -13,7 +13,7 @@
*** xref:langchain4j-tools-component.adoc[LangChain4j Tools]
*** xref:langchain4j-web-search-component.adoc[LangChain4j Web Search]
*** xref:milvus-component.adoc[Milvus]
-*** xref:langchain4j-neo4j-component.adoc[Neo4j]
+*** xref:neo4j-component.adoc[Neo4j]
*** xref:pinecone-component.adoc[Pinecone]
*** xref:qdrant-component.adoc[Qdrant]
*** xref:tensorflow-serving-component.adoc[TensorFlow Serving]
diff --git a/docs/components/modules/ROOT/pages/langchain4j-neo4j-component.adoc b/docs/components/modules/ROOT/pages/langchain4j-neo4j-component.adoc
deleted file mode 120000
index bcea3e20765..00000000000
--- a/docs/components/modules/ROOT/pages/langchain4j-neo4j-component.adoc
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../components/camel-ai/camel-neo4j/src/main/docs/langchain4j-neo4j-component.adoc
\ No newline at end of file
diff --git a/docs/components/modules/ROOT/pages/neo4j-component.adoc b/docs/components/modules/ROOT/pages/neo4j-component.adoc
new file mode 120000
index 00000000000..86165bd962d
--- /dev/null
+++ b/docs/components/modules/ROOT/pages/neo4j-component.adoc
@@ -0,0 +1 @@
+../../../../../components/camel-ai/camel-neo4j/src/main/docs/neo4j-component.adoc
\ No newline at end of file
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
index e2ef5cfd89c..2169f180806 100644
--- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java
@@ -3196,6 +3196,19 @@ public interface ComponentsBuilderFactory {
static NatsComponentBuilderFactory.NatsComponentBuilder nats() {
return NatsComponentBuilderFactory.nats();
}
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * @return the dsl builder
+ */
+ static Neo4jComponentBuilderFactory.Neo4jComponentBuilder neo4j() {
+ return Neo4jComponentBuilderFactory.neo4j();
+ }
/**
* Netty (camel-netty)
* Socket level networking using TCP or UDP with Netty 4.x.
diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Neo4jComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Neo4jComponentBuilderFactory.java
new file mode 100644
index 00000000000..dfab976d544
--- /dev/null
+++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Neo4jComponentBuilderFactory.java
@@ -0,0 +1,408 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * 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.processing.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.neo4j.Neo4jComponent;
+
+/**
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.ComponentDslMojo")
+public interface Neo4jComponentBuilderFactory {
+
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * @return the dsl builder
+ */
+ static Neo4jComponentBuilder neo4j() {
+ return new Neo4jComponentBuilderImpl();
+ }
+
+ /**
+ * Builder for the Neo4j component.
+ */
+ interface Neo4jComponentBuilder extends ComponentBuilder<Neo4jComponent> {
+
+ /**
+ * Node alias.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param alias the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder alias(java.lang.String alias) {
+ doSetProperty("alias", alias);
+ return this;
+ }
+
+ /**
+ * Kerberos Authentication encoded base64 ticket.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param base64 the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder base64(java.lang.String base64) {
+ doSetProperty("base64", base64);
+ return this;
+ }
+
+ /**
+ * The configuration;.
+ *
+ * The option is a:
+ * <code>org.apache.camel.component.neo4j.Neo4jConfiguration</code> type.
+ *
+ * Group: producer
+ *
+ * @param configuration the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder configuration(org.apache.camel.component.neo4j.Neo4jConfiguration configuration) {
+ doSetProperty("configuration", configuration);
+ return this;
+ }
+
+ /**
+ * Basic authentication database password.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbPassword the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder dbPassword(java.lang.String dbPassword) {
+ doSetProperty("dbPassword", dbPassword);
+ return this;
+ }
+
+ /**
+ * URI of the Neo4j server - used for Authentication.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbUri the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder dbUri(java.lang.String dbUri) {
+ doSetProperty("dbUri", dbUri);
+ return this;
+ }
+
+ /**
+ * Basic authentication database user.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbUser the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder dbUser(java.lang.String dbUser) {
+ doSetProperty("dbUser", dbUser);
+ return this;
+ }
+
+
+ /**
+ * Detach a relationship - set true if want to delete a node and detach
+ * its relationships to other nodes at same time.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param detachRelationship the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder detachRelationship(boolean detachRelationship) {
+ doSetProperty("detachRelationship", detachRelationship);
+ return this;
+ }
+
+ /**
+ * Dimension of Vector Index.
+ *
+ * The option is a: <code>java.lang.Integer</code> type.
+ *
+ * Group: producer
+ *
+ * @param dimension the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder dimension(java.lang.Integer dimension) {
+ doSetProperty("dimension", dimension);
+ return this;
+ }
+
+ /**
+ * Node Label.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param label the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder label(java.lang.String label) {
+ doSetProperty("label", label);
+ 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
+ *
+ * @param lazyStartProducer the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder lazyStartProducer(boolean lazyStartProducer) {
+ doSetProperty("lazyStartProducer", lazyStartProducer);
+ return this;
+ }
+
+
+ /**
+ * Maximum results for Vector Similarity search.
+ *
+ * The option is a: <code>int</code> type.
+ *
+ * Default: 3
+ * Group: producer
+ *
+ * @param maxResults the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder maxResults(int maxResults) {
+ doSetProperty("maxResults", maxResults);
+ return this;
+ }
+
+ /**
+ * Minimum score for Vector Similarity search.
+ *
+ * The option is a: <code>double</code> type.
+ *
+ * Group: producer
+ *
+ * @param minScore the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder minScore(double minScore) {
+ doSetProperty("minScore", minScore);
+ return this;
+ }
+
+ /**
+ * Cypher Query.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param query the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder query(java.lang.String query) {
+ doSetProperty("query", query);
+ return this;
+ }
+
+ /**
+ * Basic authentication database realm.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param realm the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder realm(java.lang.String realm) {
+ doSetProperty("realm", realm);
+ return this;
+ }
+
+
+ /**
+ * Similarity Function of Vector Index.
+ *
+ * The option is a:
+ * <code>org.apache.camel.component.neo4j.Neo4jSimilarityFunction</code> type.
+ *
+ * Default: cosine
+ * Group: producer
+ *
+ * @param similarityFunction the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder similarityFunction(org.apache.camel.component.neo4j.Neo4jSimilarityFunction similarityFunction) {
+ doSetProperty("similarityFunction", similarityFunction);
+ return this;
+ }
+
+ /**
+ * Bearer authentication database realm.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param token the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder token(java.lang.String token) {
+ doSetProperty("token", token);
+ return this;
+ }
+
+ /**
+ * Vector Index Name.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param vectorIndexName the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder vectorIndexName(java.lang.String vectorIndexName) {
+ doSetProperty("vectorIndexName", vectorIndexName);
+ return this;
+ }
+
+
+ /**
+ * Whether autowiring is enabled. This is used for automatic autowiring
+ * options (the option must be marked as autowired) by looking up in the
+ * registry to find if there is a single instance of matching type,
+ * which then gets configured on the component. This can be used for
+ * automatic configuring JDBC data sources, JMS connection factories,
+ * AWS Clients, etc.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: true
+ * Group: advanced
+ *
+ * @param autowiredEnabled the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder autowiredEnabled(boolean autowiredEnabled) {
+ doSetProperty("autowiredEnabled", autowiredEnabled);
+ return this;
+ }
+
+ /**
+ * Advanced - Driver.
+ *
+ * The option is a: <code>org.neo4j.driver.Driver</code>
+ * type.
+ *
+ * Group: advanced
+ *
+ * @param driver the value to set
+ * @return the dsl builder
+ */
+ default Neo4jComponentBuilder driver(org.neo4j.driver.Driver driver) {
+ doSetProperty("driver", driver);
+ return this;
+ }
+ }
+
+ class Neo4jComponentBuilderImpl
+ extends AbstractComponentBuilder<Neo4jComponent>
+ implements Neo4jComponentBuilder {
+ @Override
+ protected Neo4jComponent buildConcreteComponent() {
+ return new Neo4jComponent();
+ }
+ private org.apache.camel.component.neo4j.Neo4jConfiguration getOrCreateConfiguration(Neo4jComponent component) {
+ if (component.getConfiguration() == null) {
+ component.setConfiguration(new org.apache.camel.component.neo4j.Neo4jConfiguration());
+ }
+ return component.getConfiguration();
+ }
+ @Override
+ protected boolean setPropertyOnComponent(
+ Component component,
+ String name,
+ Object value) {
+ switch (name) {
+ case "alias": getOrCreateConfiguration((Neo4jComponent) component).setAlias((java.lang.String) value); return true;
+ case "base64": getOrCreateConfiguration((Neo4jComponent) component).setBase64((java.lang.String) value); return true;
+ case "configuration": ((Neo4jComponent) component).setConfiguration((org.apache.camel.component.neo4j.Neo4jConfiguration) value); return true;
+ case "dbPassword": getOrCreateConfiguration((Neo4jComponent) component).setDbPassword((java.lang.String) value); return true;
+ case "dbUri": getOrCreateConfiguration((Neo4jComponent) component).setDbUri((java.lang.String) value); return true;
+ case "dbUser": getOrCreateConfiguration((Neo4jComponent) component).setDbUser((java.lang.String) value); return true;
+ case "detachRelationship": getOrCreateConfiguration((Neo4jComponent) component).setDetachRelationship((boolean) value); return true;
+ case "dimension": getOrCreateConfiguration((Neo4jComponent) component).setDimension((java.lang.Integer) value); return true;
+ case "label": getOrCreateConfiguration((Neo4jComponent) component).setLabel((java.lang.String) value); return true;
+ case "lazyStartProducer": ((Neo4jComponent) component).setLazyStartProducer((boolean) value); return true;
+ case "maxResults": getOrCreateConfiguration((Neo4jComponent) component).setMaxResults((int) value); return true;
+ case "minScore": getOrCreateConfiguration((Neo4jComponent) component).setMinScore((double) value); return true;
+ case "query": getOrCreateConfiguration((Neo4jComponent) component).setQuery((java.lang.String) value); return true;
+ case "realm": getOrCreateConfiguration((Neo4jComponent) component).setRealm((java.lang.String) value); return true;
+ case "similarityFunction": getOrCreateConfiguration((Neo4jComponent) component).setSimilarityFunction((org.apache.camel.component.neo4j.Neo4jSimilarityFunction) value); return true;
+ case "token": getOrCreateConfiguration((Neo4jComponent) component).setToken((java.lang.String) value); return true;
+ case "vectorIndexName": getOrCreateConfiguration((Neo4jComponent) component).setVectorIndexName((java.lang.String) value); return true;
+ case "autowiredEnabled": ((Neo4jComponent) component).setAutowiredEnabled((boolean) value); return true;
+ case "driver": getOrCreateConfiguration((Neo4jComponent) component).setDriver((org.neo4j.driver.Driver) value); return true;
+ default: return false;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 16573623537..86c5f2d1022 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -248,6 +248,7 @@ public interface EndpointBuilderFactory
org.apache.camel.builder.endpoint.dsl.MyBatisBeanEndpointBuilderFactory.MyBatisBeanBuilders,
org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory.MyBatisBuilders,
org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory.NatsBuilders,
+ org.apache.camel.builder.endpoint.dsl.Neo4jEndpointBuilderFactory.Neo4jBuilders,
org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory.NetWeaverBuilders,
org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory.NettyBuilders,
org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory.NettyHttpBuilders,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 1d7ebc08024..c0f0f4061a6 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -245,6 +245,7 @@ public interface EndpointBuilders
org.apache.camel.builder.endpoint.dsl.MyBatisBeanEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory,
+ org.apache.camel.builder.endpoint.dsl.Neo4jEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory,
org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory,
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 94082e203ca..ea98aa75f69 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -10682,6 +10682,46 @@ public class StaticEndpointBuilders {
public static NatsEndpointBuilderFactory.NatsEndpointBuilder nats(String componentName, String path) {
return NatsEndpointBuilderFactory.endpointBuilder(componentName, path);
}
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * Syntax: <code>neo4j:name</code>
+ *
+ * Path parameter: name (required)
+ * The database Name
+ *
+ * @param path name
+ * @return the dsl builder
+ */
+ public static Neo4jEndpointBuilderFactory.Neo4jEndpointBuilder neo4j(String path) {
+ return neo4j("neo4j", path);
+ }
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * Syntax: <code>neo4j:name</code>
+ *
+ * Path parameter: name (required)
+ * The database Name
+ *
+ * @param componentName to use a custom component name for the endpoint
+ * instead of the default name
+ * @param path name
+ * @return the dsl builder
+ */
+ public static Neo4jEndpointBuilderFactory.Neo4jEndpointBuilder neo4j(String componentName, String path) {
+ return Neo4jEndpointBuilderFactory.endpointBuilder(componentName, path);
+ }
/**
* Netty (camel-netty)
* Socket level networking using TCP or UDP with Netty 4.x.
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Neo4jEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Neo4jEndpointBuilderFactory.java
new file mode 100644
index 00000000000..621989628ce
--- /dev/null
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Neo4jEndpointBuilderFactory.java
@@ -0,0 +1,655 @@
+/* Generated by camel build tools - do NOT edit this file! */
+/*
+ * 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 java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
+import javax.annotation.processing.Generated;
+import org.apache.camel.builder.EndpointConsumerBuilder;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.builder.endpoint.AbstractEndpointBuilder;
+
+/**
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface Neo4jEndpointBuilderFactory {
+
+ /**
+ * Builder for endpoint for the Neo4j component.
+ */
+ public interface Neo4jEndpointBuilder
+ extends
+ EndpointProducerBuilder {
+ default AdvancedNeo4jEndpointBuilder advanced() {
+ return (AdvancedNeo4jEndpointBuilder) this;
+ }
+
+ /**
+ * Node alias.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param alias the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder alias(String alias) {
+ doSetProperty("alias", alias);
+ return this;
+ }
+ /**
+ * Kerberos Authentication encoded base64 ticket.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param base64 the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder base64(String base64) {
+ doSetProperty("base64", base64);
+ return this;
+ }
+ /**
+ * Basic authentication database password.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbPassword the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder dbPassword(String dbPassword) {
+ doSetProperty("dbPassword", dbPassword);
+ return this;
+ }
+ /**
+ * URI of the Neo4j server - used for Authentication.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbUri the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder dbUri(String dbUri) {
+ doSetProperty("dbUri", dbUri);
+ return this;
+ }
+ /**
+ * Basic authentication database user.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param dbUser the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder dbUser(String dbUser) {
+ doSetProperty("dbUser", dbUser);
+ return this;
+ }
+ /**
+ * Detach a relationship - set true if want to delete a node and detach
+ * its relationships to other nodes at same time.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param detachRelationship the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder detachRelationship(boolean detachRelationship) {
+ doSetProperty("detachRelationship", detachRelationship);
+ return this;
+ }
+ /**
+ * Detach a relationship - set true if want to delete a node and detach
+ * its relationships to other nodes at same time.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: producer
+ *
+ * @param detachRelationship the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder detachRelationship(String detachRelationship) {
+ doSetProperty("detachRelationship", detachRelationship);
+ return this;
+ }
+ /**
+ * Dimension of Vector Index.
+ *
+ * The option is a: <code>java.lang.Integer</code> type.
+ *
+ * Group: producer
+ *
+ * @param dimension the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder dimension(Integer dimension) {
+ doSetProperty("dimension", dimension);
+ return this;
+ }
+ /**
+ * Dimension of Vector Index.
+ *
+ * The option will be converted to a <code>java.lang.Integer</code>
+ * type.
+ *
+ * Group: producer
+ *
+ * @param dimension the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder dimension(String dimension) {
+ doSetProperty("dimension", dimension);
+ return this;
+ }
+ /**
+ * Node Label.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param label the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder label(String label) {
+ doSetProperty("label", label);
+ return this;
+ }
+ /**
+ * Maximum results for Vector Similarity search.
+ *
+ * The option is a: <code>int</code> type.
+ *
+ * Default: 3
+ * Group: producer
+ *
+ * @param maxResults the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder maxResults(int maxResults) {
+ doSetProperty("maxResults", maxResults);
+ return this;
+ }
+ /**
+ * Maximum results for Vector Similarity search.
+ *
+ * The option will be converted to a <code>int</code> type.
+ *
+ * Default: 3
+ * Group: producer
+ *
+ * @param maxResults the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder maxResults(String maxResults) {
+ doSetProperty("maxResults", maxResults);
+ return this;
+ }
+ /**
+ * Minimum score for Vector Similarity search.
+ *
+ * The option is a: <code>double</code> type.
+ *
+ * Default: 0.0
+ * Group: producer
+ *
+ * @param minScore the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder minScore(double minScore) {
+ doSetProperty("minScore", minScore);
+ return this;
+ }
+ /**
+ * Minimum score for Vector Similarity search.
+ *
+ * The option will be converted to a <code>double</code> type.
+ *
+ * Default: 0.0
+ * Group: producer
+ *
+ * @param minScore the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder minScore(String minScore) {
+ doSetProperty("minScore", minScore);
+ return this;
+ }
+ /**
+ * Cypher Query.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param query the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder query(String query) {
+ doSetProperty("query", query);
+ return this;
+ }
+ /**
+ * Basic authentication database realm.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param realm the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder realm(String realm) {
+ doSetProperty("realm", realm);
+ return this;
+ }
+ /**
+ * Similarity Function of Vector Index.
+ *
+ * The option is a:
+ * <code>org.apache.camel.component.neo4j.Neo4jSimilarityFunction</code>
+ * type.
+ *
+ * Default: cosine
+ * Group: producer
+ *
+ * @param similarityFunction the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder similarityFunction(org.apache.camel.component.neo4j.Neo4jSimilarityFunction similarityFunction) {
+ doSetProperty("similarityFunction", similarityFunction);
+ return this;
+ }
+ /**
+ * Similarity Function of Vector Index.
+ *
+ * The option will be converted to a
+ * <code>org.apache.camel.component.neo4j.Neo4jSimilarityFunction</code>
+ * type.
+ *
+ * Default: cosine
+ * Group: producer
+ *
+ * @param similarityFunction the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder similarityFunction(String similarityFunction) {
+ doSetProperty("similarityFunction", similarityFunction);
+ return this;
+ }
+ /**
+ * Bearer authentication database realm.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param token the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder token(String token) {
+ doSetProperty("token", token);
+ return this;
+ }
+ /**
+ * Vector Index Name.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: producer
+ *
+ * @param vectorIndexName the value to set
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder vectorIndexName(String vectorIndexName) {
+ doSetProperty("vectorIndexName", vectorIndexName);
+ return this;
+ }
+ }
+
+ /**
+ * Advanced builder for endpoint for the Neo4j component.
+ */
+ public interface AdvancedNeo4jEndpointBuilder
+ extends
+ EndpointProducerBuilder {
+ default Neo4jEndpointBuilder basic() {
+ return (Neo4jEndpointBuilder) 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 (advanced)
+ *
+ * @param lazyStartProducer the value to set
+ * @return the dsl builder
+ */
+ default AdvancedNeo4jEndpointBuilder 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 (advanced)
+ *
+ * @param lazyStartProducer the value to set
+ * @return the dsl builder
+ */
+ default AdvancedNeo4jEndpointBuilder lazyStartProducer(String lazyStartProducer) {
+ doSetProperty("lazyStartProducer", lazyStartProducer);
+ return this;
+ }
+ /**
+ * Advanced - Driver.
+ *
+ * The option is a: <code>org.neo4j.driver.Driver</code> type.
+ *
+ * Group: advanced
+ *
+ * @param driver the value to set
+ * @return the dsl builder
+ */
+ default AdvancedNeo4jEndpointBuilder driver(org.neo4j.driver.Driver driver) {
+ doSetProperty("driver", driver);
+ return this;
+ }
+ /**
+ * Advanced - Driver.
+ *
+ * The option will be converted to a
+ * <code>org.neo4j.driver.Driver</code> type.
+ *
+ * Group: advanced
+ *
+ * @param driver the value to set
+ * @return the dsl builder
+ */
+ default AdvancedNeo4jEndpointBuilder driver(String driver) {
+ doSetProperty("driver", driver);
+ return this;
+ }
+ }
+
+ public interface Neo4jBuilders {
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * @return the dsl builder for the headers' name.
+ */
+ default Neo4jHeaderNameBuilder neo4j() {
+ return Neo4jHeaderNameBuilder.INSTANCE;
+ }
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * Syntax: <code>neo4j:name</code>
+ *
+ * Path parameter: name (required)
+ * The database Name
+ *
+ * @param path name
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder neo4j(String path) {
+ return Neo4jEndpointBuilderFactory.endpointBuilder("neo4j", path);
+ }
+ /**
+ * Neo4j (camel-neo4j)
+ * Perform operations on the Neo4j Graph Database
+ *
+ * Category: database,ai
+ * Since: 4.10
+ * Maven coordinates: org.apache.camel:camel-neo4j
+ *
+ * Syntax: <code>neo4j:name</code>
+ *
+ * Path parameter: name (required)
+ * The database Name
+ *
+ * @param componentName to use a custom component name for the endpoint
+ * instead of the default name
+ * @param path name
+ * @return the dsl builder
+ */
+ default Neo4jEndpointBuilder neo4j(String componentName, String path) {
+ return Neo4jEndpointBuilderFactory.endpointBuilder(componentName, path);
+ }
+
+ }
+ /**
+ * The builder of headers' name for the Neo4j component.
+ */
+ public static class Neo4jHeaderNameBuilder {
+ /**
+ * The internal instance of the builder used to access to all the
+ * methods representing the name of headers.
+ */
+ private static final Neo4jHeaderNameBuilder INSTANCE = new Neo4jHeaderNameBuilder();
+
+ /**
+ * The operation to be performed.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jAction}.
+ */
+ public String neo4jAction() {
+ return "CamelNeo4jAction";
+ }
+ /**
+ * MATCH properties for the generated MATCH query. Needed only if we are
+ * matching properties and values. Example: {name: 'Alice'}.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jMatchProperties}.
+ */
+ public String neo4jMatchProperties() {
+ return "CamelNeo4jMatchProperties";
+ }
+ /**
+ * Query excetuded.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jQueryResult}.
+ */
+ public String neo4jQueryResult() {
+ return "CamelNeo4jQueryResult";
+ }
+ /**
+ * Query Number of nodes created.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jQueryResultNodesCreated}.
+ */
+ public String neo4jQueryResultNodesCreated() {
+ return "CamelNeo4jQueryResultNodesCreated";
+ }
+ /**
+ * Query Number of nodes deleted.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jQueryResultNodesDeleted}.
+ */
+ public String neo4jQueryResultNodesDeleted() {
+ return "CamelNeo4jQueryResultNodesDeleted";
+ }
+ /**
+ * Query executed contains update.
+ *
+ * The option is a: {@code Booleab} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code
+ * Neo4jQueryResultContainsUpdates}.
+ */
+ public String neo4jQueryResultContainsUpdates() {
+ return "CamelNeo4jQueryResultContainsUpdates";
+ }
+ /**
+ * Query executed number of relationships created.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code
+ * Neo4jQueryResultRelationshipsCreated}.
+ */
+ public String neo4jQueryResultRelationshipsCreated() {
+ return "CamelNeo4jQueryResultRelationshipsCreated";
+ }
+ /**
+ * Query executed number of relationships deleted.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code
+ * Neo4jQueryResultRelationshipsDeleted}.
+ */
+ public String neo4jQueryResultRelationshipsDeleted() {
+ return "CamelNeo4jQueryResultRelationshipsDeleted";
+ }
+ /**
+ * Number of nodes retrieved.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jQueryResultRetrieveSize}.
+ */
+ public String neo4jQueryResultRetrieveSize() {
+ return "CamelNeo4jQueryResultRetrieveSize";
+ }
+ /**
+ * Query execution time in Milliseconfs.
+ *
+ * The option is a: {@code Long} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code
+ * Neo4jQueryResultListNeo4jNodes}.
+ */
+ public String neo4jQueryResultListNeo4jNodes() {
+ return "CamelNeo4jQueryResultListNeo4jNodes";
+ }
+ /**
+ * Vector Id for the embedding.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jVectorEmbeddingId}.
+ */
+ public String neo4jVectorEmbeddingId() {
+ return "CamelNeo4jVectorEmbeddingId";
+ }
+ /**
+ * Label for the Node - used when inserting from Embeddings.
+ *
+ * The option is a: {@code String} type.
+ *
+ * Group: producer
+ *
+ * @return the name of the header {@code Neo4jLabel}.
+ */
+ public String neo4jLabel() {
+ return "CamelNeo4jLabel";
+ }
+ }
+ static Neo4jEndpointBuilder endpointBuilder(String componentName, String path) {
+ class Neo4jEndpointBuilderImpl extends AbstractEndpointBuilder implements Neo4jEndpointBuilder, AdvancedNeo4jEndpointBuilder {
+ public Neo4jEndpointBuilderImpl(String path) {
+ super(componentName, path);
+ }
+ }
+ return new Neo4jEndpointBuilderImpl(path);
+ }
+}
\ No newline at end of file
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
index 9a31c02f27e..4682e4d1bfd 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
@@ -41,7 +41,7 @@ public final class MojoHelper {
dir.resolve("camel-langchain4j-core"), dir.resolve("camel-langchain4j-chat"),
dir.resolve("camel-langchain4j-embeddings"), dir.resolve("camel-langchain4j-tokenizer"),
dir.resolve("camel-langchain4j-tools"), dir.resolve("camel-langchain4j-web-search"),
- dir.resolve("camel-qdrant"), dir.resolve("camel-milvus"),
+ dir.resolve("camel-qdrant"), dir.resolve("camel-milvus"), dir.resolve("camel-neo4j"),
dir.resolve("camel-pinecone"), dir.resolve("camel-kserve"),
dir.resolve("camel-torchserve"), dir.resolve("camel-tensorflow-serving"));
case "camel-as2":