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 01b0c2addd0 CAMEL-19612: camel-arangodb - Upgrade to 7.1.0 01b0c2addd0 is described below commit 01b0c2addd00ebd966116d53bb008c35850aeffa Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Jul 18 07:32:51 2023 +0200 CAMEL-19612: camel-arangodb - Upgrade to 7.1.0 --- .../apache/camel/catalog/components/arangodb.json | 12 +++-- components/camel-arangodb/pom.xml | 1 - .../arangodb/ArangoDbComponentConfigurer.java | 11 ++++ .../arangodb/ArangoDbEndpointConfigurer.java | 6 +++ .../arangodb/ArangoDbEndpointUriFactory.java | 3 +- .../apache/camel/component/arangodb/arangodb.json | 12 +++-- .../component/arangodb/ArangoDbComponent.java | 19 +++++-- .../component/arangodb/ArangoDbConfiguration.java | 1 + .../camel/component/arangodb/ArangoDbEndpoint.java | 23 +++++---- .../camel/component/arangodb/ArangoDbProducer.java | 10 ++-- .../integration/ArangoCollectionDeleteIT.java | 22 ++++---- .../integration/ArangoCollectionFindByKeyIT.java | 39 +++++---------- .../integration/ArangoCollectionQueryIT.java | 7 +-- .../integration/ArangoCollectionSaveIT.java | 58 +++------------------- .../integration/ArangoCollectionUpdateIT.java | 50 +------------------ .../arangodb/integration/ArangoGraphVertexIT.java | 4 +- .../arangodb/integration/BaseArangoDb.java | 37 +++++++------- ...BaseCollection.java => BaseDocumentEntity.java} | 39 ++++++++++----- parent/pom.xml | 2 +- .../infra/arangodb/services/ArangoDbContainer.java | 2 +- 20 files changed, 153 insertions(+), 205 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/arangodb.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/arangodb.json index d8b4471b051..500e828c2f6 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/arangodb.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/arangodb.json @@ -31,9 +31,10 @@ "operation": { "index": 6, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.arangodb.ArangoDbOperation", "enum": [ "SAVE_DOCUMENT", "FIND_DOCUMENT_BY_KEY", "UPDATE_DOCUMENT", "DELETE_DOCUMENT", "AQL_QUERY", "SAVE_VERTEX", "FIND_VERTEX_BY_KEY", "UPDATE_VERTEX", "DELETE_VERTEX", "SAVE_EDGE", "FIND_EDGE_BY_KEY", "UPDATE_EDGE", "DELETE_EDGE" ], "deprecated": false, "autow [...] "port": { "index": 7, "kind": "property", "displayName": "Port", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB exposed port. If host and port are default, this field is Optional." }, "vertexCollection": { "index": 8, "kind": "property", "displayName": "Vertex Collection", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "Collection name of vertices, when using ArangoDb as a Graph Database. Set the vertexCollect [...] - "autowiredEnabled": { "index": 9, "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 t [...] - "password": { "index": 10, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, - "user": { "index": 11, "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } + "arangoDB": { "index": 9, "kind": "property", "displayName": "Arango DB", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.arangodb.ArangoDB", "deprecated": false, "autowired": true, "secret": false, "description": "To use an existing ArangDB client." }, + "autowiredEnabled": { "index": 10, "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 [...] + "password": { "index": 11, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, + "user": { "index": 12, "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } }, "headers": { "CamelArangoDbMultiUpdate": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "java.lang.Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Indicates if there are multiple documents to update. If set to true, the body of the message must be a Collection of documents to update.", "constantName": "org.apache.camel.component.arangodb.ArangoDb [...] @@ -55,7 +56,8 @@ "port": { "index": 6, "kind": "parameter", "displayName": "Port", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB exposed port. If host and port are default, this field is Optional." }, "vertexCollection": { "index": 7, "kind": "parameter", "displayName": "Vertex Collection", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "Collection name of vertices, when using ArangoDb as a Graph Database. Set the vertexCollec [...] "lazyStartProducer": { "index": 8, "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 produc [...] - "password": { "index": 9, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, - "user": { "index": 10, "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } + "arangoDB": { "index": 9, "kind": "parameter", "displayName": "Arango DB", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.arangodb.ArangoDB", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing ArangDB client." }, + "password": { "index": 10, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, + "user": { "index": 11, "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } } } diff --git a/components/camel-arangodb/pom.xml b/components/camel-arangodb/pom.xml index eb27fe9a5b8..7ce79edcaac 100644 --- a/components/camel-arangodb/pom.xml +++ b/components/camel-arangodb/pom.xml @@ -27,7 +27,6 @@ <version>4.0.0-SNAPSHOT</version> </parent> - <groupId>org.apache.camel</groupId> <artifactId>camel-arangodb</artifactId> <packaging>jar</packaging> diff --git a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbComponentConfigurer.java b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbComponentConfigurer.java index 2da24bcbf7d..8c578475cc0 100644 --- a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbComponentConfigurer.java +++ b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbComponentConfigurer.java @@ -28,6 +28,8 @@ public class ArangoDbComponentConfigurer extends PropertyConfigurerSupport imple public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { ArangoDbComponent target = (ArangoDbComponent) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": target.setArangoDB(property(camelContext, com.arangodb.ArangoDB.class, value)); return true; case "autowiredenabled": case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true; case "configuration": target.setConfiguration(property(camelContext, org.apache.camel.component.arangodb.ArangoDbConfiguration.class, value)); return true; @@ -49,9 +51,16 @@ public class ArangoDbComponentConfigurer extends PropertyConfigurerSupport imple } } + @Override + public String[] getAutowiredNames() { + return new String[]{"arangoDB"}; + } + @Override public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": return com.arangodb.ArangoDB.class; case "autowiredenabled": case "autowiredEnabled": return boolean.class; case "configuration": return org.apache.camel.component.arangodb.ArangoDbConfiguration.class; @@ -77,6 +86,8 @@ public class ArangoDbComponentConfigurer extends PropertyConfigurerSupport imple public Object getOptionValue(Object obj, String name, boolean ignoreCase) { ArangoDbComponent target = (ArangoDbComponent) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": return target.getArangoDB(); case "autowiredenabled": case "autowiredEnabled": return target.isAutowiredEnabled(); case "configuration": return target.getConfiguration(); diff --git a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointConfigurer.java b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointConfigurer.java index 9645eb2a11e..19d70375d93 100644 --- a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointConfigurer.java +++ b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointConfigurer.java @@ -21,6 +21,8 @@ public class ArangoDbEndpointConfigurer extends PropertyConfigurerSupport implem public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { ArangoDbEndpoint target = (ArangoDbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": target.setArangoDB(property(camelContext, com.arangodb.ArangoDB.class, value)); return true; case "documentcollection": case "documentCollection": target.getConfiguration().setDocumentCollection(property(camelContext, java.lang.String.class, value)); return true; case "edgecollection": @@ -42,6 +44,8 @@ public class ArangoDbEndpointConfigurer extends PropertyConfigurerSupport implem @Override public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": return com.arangodb.ArangoDB.class; case "documentcollection": case "documentCollection": return java.lang.String.class; case "edgecollection": @@ -64,6 +68,8 @@ public class ArangoDbEndpointConfigurer extends PropertyConfigurerSupport implem public Object getOptionValue(Object obj, String name, boolean ignoreCase) { ArangoDbEndpoint target = (ArangoDbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "arangodb": + case "arangoDB": return target.getArangoDB(); case "documentcollection": case "documentCollection": return target.getConfiguration().getDocumentCollection(); case "edgecollection": diff --git a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointUriFactory.java b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointUriFactory.java index abdc9ac6f1e..c1dca19d944 100644 --- a/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointUriFactory.java +++ b/components/camel-arangodb/src/generated/java/org/apache/camel/component/arangodb/ArangoDbEndpointUriFactory.java @@ -21,7 +21,8 @@ public class ArangoDbEndpointUriFactory extends org.apache.camel.support.compone private static final Set<String> SECRET_PROPERTY_NAMES; private static final Set<String> MULTI_VALUE_PREFIXES; static { - Set<String> props = new HashSet<>(11); + Set<String> props = new HashSet<>(12); + props.add("arangoDB"); props.add("database"); props.add("documentCollection"); props.add("edgeCollection"); diff --git a/components/camel-arangodb/src/generated/resources/org/apache/camel/component/arangodb/arangodb.json b/components/camel-arangodb/src/generated/resources/org/apache/camel/component/arangodb/arangodb.json index d8b4471b051..500e828c2f6 100644 --- a/components/camel-arangodb/src/generated/resources/org/apache/camel/component/arangodb/arangodb.json +++ b/components/camel-arangodb/src/generated/resources/org/apache/camel/component/arangodb/arangodb.json @@ -31,9 +31,10 @@ "operation": { "index": 6, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.arangodb.ArangoDbOperation", "enum": [ "SAVE_DOCUMENT", "FIND_DOCUMENT_BY_KEY", "UPDATE_DOCUMENT", "DELETE_DOCUMENT", "AQL_QUERY", "SAVE_VERTEX", "FIND_VERTEX_BY_KEY", "UPDATE_VERTEX", "DELETE_VERTEX", "SAVE_EDGE", "FIND_EDGE_BY_KEY", "UPDATE_EDGE", "DELETE_EDGE" ], "deprecated": false, "autow [...] "port": { "index": 7, "kind": "property", "displayName": "Port", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB exposed port. If host and port are default, this field is Optional." }, "vertexCollection": { "index": 8, "kind": "property", "displayName": "Vertex Collection", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "Collection name of vertices, when using ArangoDb as a Graph Database. Set the vertexCollect [...] - "autowiredEnabled": { "index": 9, "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 t [...] - "password": { "index": 10, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, - "user": { "index": 11, "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } + "arangoDB": { "index": 9, "kind": "property", "displayName": "Arango DB", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.arangodb.ArangoDB", "deprecated": false, "autowired": true, "secret": false, "description": "To use an existing ArangDB client." }, + "autowiredEnabled": { "index": 10, "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 [...] + "password": { "index": 11, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, + "user": { "index": 12, "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } }, "headers": { "CamelArangoDbMultiUpdate": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "java.lang.Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "Indicates if there are multiple documents to update. If set to true, the body of the message must be a Collection of documents to update.", "constantName": "org.apache.camel.component.arangodb.ArangoDb [...] @@ -55,7 +56,8 @@ "port": { "index": 6, "kind": "parameter", "displayName": "Port", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB exposed port. If host and port are default, this field is Optional." }, "vertexCollection": { "index": 7, "kind": "parameter", "displayName": "Vertex Collection", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "Collection name of vertices, when using ArangoDb as a Graph Database. Set the vertexCollec [...] "lazyStartProducer": { "index": 8, "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 produc [...] - "password": { "index": 9, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, - "user": { "index": 10, "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } + "arangoDB": { "index": 9, "kind": "parameter", "displayName": "Arango DB", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.arangodb.ArangoDB", "deprecated": false, "autowired": false, "secret": false, "description": "To use an existing ArangDB client." }, + "password": { "index": 10, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB password. If user and password are default, this field is Optional." }, + "user": { "index": 11, "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.arangodb.ArangoDbConfiguration", "configurationField": "configuration", "description": "ArangoDB user. If user and password are default, this field is Optional." } } } diff --git a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbComponent.java b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbComponent.java index 2c8a010953c..bd83e9027c0 100644 --- a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbComponent.java +++ b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbComponent.java @@ -18,6 +18,7 @@ package org.apache.camel.component.arangodb; import java.util.Map; +import com.arangodb.ArangoDB; import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.spi.Metadata; @@ -28,6 +29,8 @@ import org.apache.camel.util.ObjectHelper; @Component("arangodb") public class ArangoDbComponent extends DefaultComponent { + @Metadata(label = "advanced", autowired = true) + private ArangoDB arangoDB; @Metadata private ArangoDbConfiguration configuration = new ArangoDbConfiguration(); @@ -47,19 +50,29 @@ public class ArangoDbComponent extends DefaultComponent { final ArangoDbConfiguration configurationClone = this.configuration != null ? this.configuration.copy() : new ArangoDbConfiguration(); configurationClone.setDatabase(remaining); - Endpoint endpoint = new ArangoDbEndpoint(uri, this, configurationClone); + ArangoDbEndpoint endpoint = new ArangoDbEndpoint(uri, this, configurationClone); + endpoint.setArangoDB(arangoDB); setProperties(endpoint, parameters); return endpoint; } + public ArangoDB getArangoDB() { + return arangoDB; + } + + /** + * To use an existing ArangDB client. + */ + public void setArangoDB(ArangoDB arangoDB) { + this.arangoDB = arangoDB; + } + public ArangoDbConfiguration getConfiguration() { return configuration; } /** * Component configuration - * - * @param configuration */ public void setConfiguration(ArangoDbConfiguration configuration) { this.configuration = configuration; diff --git a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbConfiguration.java b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbConfiguration.java index f5520ab44e0..63e5d8b3d27 100644 --- a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbConfiguration.java +++ b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbConfiguration.java @@ -23,6 +23,7 @@ import org.apache.camel.spi.UriParams; @UriParams public class ArangoDbConfiguration implements Cloneable { private String database; + @UriParam(label = "producer") private String host; @UriParam(label = "producer") diff --git a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java index addf810678a..dd4d64d1906 100644 --- a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java +++ b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java @@ -34,14 +34,14 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "3.5.0", scheme = "arangodb", title = "ArangoDb", syntax = "arangodb:database", category = { Category.DATABASE }, producerOnly = true, headersClass = ArangoDbConstants.class) public class ArangoDbEndpoint extends DefaultEndpoint { - private ArangoDB arango; @UriPath(description = "database name") @Metadata(required = true) private String database; - @UriParam private ArangoDbConfiguration configuration; + @UriParam(label = "advanced") + private ArangoDB arangoDB; public ArangoDbEndpoint() { } @@ -59,12 +59,15 @@ public class ArangoDbEndpoint extends DefaultEndpoint { throw new UnsupportedOperationException("You cannot receive messages at this endpoint: " + getEndpointUri()); } - public ArangoDB getArango() { - return arango; + public ArangoDB getArangoDB() { + return arangoDB; } - public void setArango(ArangoDB arango) { - this.arango = arango; + /** + * To use an existing ArangDB client. + */ + public void setArangoDB(ArangoDB arangoDB) { + this.arangoDB = arangoDB; } public ArangoDbConfiguration getConfiguration() { @@ -79,7 +82,7 @@ public class ArangoDbEndpoint extends DefaultEndpoint { protected void doStart() throws Exception { super.doStart(); - if (arango == null) { + if (arangoDB == null) { final ArangoDB.Builder builder = new ArangoDB.Builder(); @@ -91,7 +94,7 @@ public class ArangoDbEndpoint extends DefaultEndpoint { builder.user(configuration.getUser()).password(configuration.getPassword()); } - arango = builder.build(); + arangoDB = builder.build(); } } @@ -99,8 +102,8 @@ public class ArangoDbEndpoint extends DefaultEndpoint { @Override protected void doShutdown() throws Exception { super.doShutdown(); - if (arango != null) { - arango.shutdown(); + if (arangoDB != null) { + arangoDB.shutdown(); } } diff --git a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbProducer.java b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbProducer.java index 9344a355f6e..d83dd8b1a5f 100644 --- a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbProducer.java +++ b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbProducer.java @@ -28,7 +28,6 @@ import com.arangodb.ArangoDatabase; import com.arangodb.ArangoEdgeCollection; import com.arangodb.ArangoGraph; import com.arangodb.ArangoVertexCollection; -import com.arangodb.DbName; import com.arangodb.entity.BaseDocument; import com.arangodb.entity.BaseEdgeDocument; import com.arangodb.model.AqlQueryOptions; @@ -56,7 +55,6 @@ public class ArangoDbProducer extends DefaultProducer { private final ArangoDbEndpoint endpoint; private final Map<ArangoDbOperation, Processor> operations = new EnumMap<>(ArangoDbOperation.class); - { bind(ArangoDbOperation.SAVE_DOCUMENT, saveDocument()); bind(ArangoDbOperation.FIND_DOCUMENT_BY_KEY, findDocumentByKey()); @@ -308,7 +306,7 @@ public class ArangoDbProducer extends DefaultProducer { private Function<Exchange, Object> aqlQuery() { return exchange -> { try { - ArangoDatabase database = endpoint.getArango().db(DbName.of(endpoint.getConfiguration().getDatabase())); + ArangoDatabase database = endpoint.getArangoDB().db(endpoint.getConfiguration().getDatabase()); // AQL query String query = (String) exchange.getMessage().getHeader(AQL_QUERY); @@ -328,7 +326,7 @@ public class ArangoDbProducer extends DefaultProducer { resultClassType = resultClassType != null ? resultClassType : BaseDocument.class; // perform query and return Collection - try (ArangoCursor<?> cursor = database.query(query, bindParameters, queryOptions, resultClassType)) { + try (ArangoCursor<?> cursor = database.query(query, resultClassType, bindParameters, queryOptions)) { return cursor == null ? null : cursor.asListRemaining(); } catch (IOException e) { LOG.warn("Failed to close instance of ArangoCursor", e); @@ -348,7 +346,7 @@ public class ArangoDbProducer extends DefaultProducer { String collection = endpoint.getConfiguration().getDocumentCollection(); // return collection - return endpoint.getArango().db(DbName.of(database)).collection(collection); + return endpoint.getArangoDB().db(database).collection(collection); } /** @@ -358,7 +356,7 @@ public class ArangoDbProducer extends DefaultProducer { String database = endpoint.getConfiguration().getDatabase(); String graph = endpoint.getConfiguration().getGraph(); // return vertex collection collection - return endpoint.getArango().db(DbName.of(database)).graph(graph); + return endpoint.getArangoDB().db(database).graph(graph); } /** diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionDeleteIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionDeleteIT.java index a6b7ce1287c..b33ccd82ab7 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionDeleteIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionDeleteIT.java @@ -30,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; @DisabledIfSystemProperty(named = "ci.env.name", matches = "apache.org", disabledReason = "Apache CI nodes are too resource constrained for this test") -public class ArangoCollectionDeleteIT extends BaseCollection { +public class ArangoCollectionDeleteIT extends BaseArangoDb { @Override protected RouteBuilder createRouteBuilder() { @@ -58,28 +58,32 @@ public class ArangoCollectionDeleteIT extends BaseCollection { @Test public void deleteMultipleDocuments() { TestDocumentEntity test1 = new TestDocumentEntity("bar1"); + var o = collection.insertDocument(test1); + var k1 = o.getKey(); + TestDocumentEntity test2 = new TestDocumentEntity("bar2", 10); - TestDocumentEntity test3 = new TestDocumentEntity("bar3"); + o = collection.insertDocument(test2); + var k2 = o.getKey(); - collection.insertDocument(test1); - collection.insertDocument(test2); - collection.insertDocument(test3); + TestDocumentEntity test3 = new TestDocumentEntity("bar3"); + o = collection.insertDocument(test3); + var k3 = o.getKey(); template.request("direct:delete", exchange -> { - exchange.getMessage().setBody(Arrays.asList(test1.getKey(), test2.getKey())); + exchange.getMessage().setBody(Arrays.asList(k1, k2)); exchange.getMessage().setHeader(MULTI_DELETE, true); }); // document is deleted - TestDocumentEntity document = collection.getDocument(test1.getKey(), TestDocumentEntity.class); + TestDocumentEntity document = collection.getDocument(k1, TestDocumentEntity.class); assertNull(document); // document is deleted - document = collection.getDocument(test2.getKey(), TestDocumentEntity.class); + document = collection.getDocument(k2, TestDocumentEntity.class); assertNull(document); // document is not delete - document = collection.getDocument(test3.getKey(), TestDocumentEntity.class); + document = collection.getDocument(k3, TestDocumentEntity.class); assertNotNull(document); assertEquals(test3.getFoo(), document.getFoo()); } diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionFindByKeyIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionFindByKeyIT.java index d21c2586299..5fa8a69102d 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionFindByKeyIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionFindByKeyIT.java @@ -19,10 +19,10 @@ package org.apache.camel.component.arangodb.integration; import java.util.Map; import com.arangodb.entity.BaseDocument; -import com.arangodb.velocypack.VPackSlice; +import com.arangodb.util.RawJson; +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; @@ -33,21 +33,21 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @DisabledIfSystemProperty(named = "ci.env.name", matches = "apache.org", disabledReason = "Apache CI nodes are too resource constrained for this test") -public class ArangoCollectionFindByKeyIT extends BaseCollection { +public class ArangoCollectionFindByKeyIT extends BaseArangoDb { private BaseDocument myObject; - @BeforeEach @Override - public void beforeEach() { - arangoDatabase.createCollection(COLLECTION_NAME); - collection = arangoDatabase.collection(COLLECTION_NAME); + protected CamelContext createCamelContext() { + CamelContext ctx = super.createCamelContext(); myObject = new BaseDocument(); myObject.setKey("myKey"); myObject.addAttribute("foo", "bar"); collection.insertDocument(myObject); + + return ctx; } @Override @@ -110,33 +110,18 @@ public class ArangoCollectionFindByKeyIT extends BaseCollection { assertEquals("bar", String.valueOf(docResult.get("foo"))); } - @Test - public void getVpackSliceByKey() { - Exchange result = template.request("direct:findDocByKey", exchange -> { - exchange.getMessage().setBody(myObject.getKey()); - exchange.getMessage().setHeader(RESULT_CLASS_TYPE, VPackSlice.class); - }); - - assertTrue(result.getMessage().getBody() instanceof VPackSlice); - VPackSlice docResult = (VPackSlice) result.getMessage().getBody(); - assertNotNull(docResult); - assertNotNull(docResult.get("foo")); - assertTrue(docResult.get("foo").isString()); - assertEquals("bar", docResult.get("foo").getAsString()); - } - @Test public void getJsonByKey() { Exchange result = template.request("direct:findDocByKey", exchange -> { exchange.getMessage().setBody(myObject.getKey()); - exchange.getMessage().setHeader(RESULT_CLASS_TYPE, String.class); + exchange.getMessage().setHeader(RESULT_CLASS_TYPE, RawJson.class); }); - assertTrue(result.getMessage().getBody() instanceof String); - String docResult = (String) result.getMessage().getBody(); + assertTrue(result.getMessage().getBody() instanceof RawJson); + RawJson docResult = (RawJson) result.getMessage().getBody(); assertNotNull(docResult); - assertTrue(docResult.contains("foo")); - assertTrue(docResult.contains("bar")); + assertTrue(docResult.get().contains("foo")); + assertTrue(docResult.get().contains("bar")); } } diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionQueryIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionQueryIT.java index ff8a88cad7f..e7405c352ef 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionQueryIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionQueryIT.java @@ -20,7 +20,6 @@ import java.util.Collection; import java.util.Map; import java.util.Optional; -import com.arangodb.util.MapBuilder; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -35,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @DisabledIfSystemProperty(named = "ci.env.name", matches = "apache.org", disabledReason = "Apache CI nodes are too resource constrained for this test") -public class ArangoCollectionQueryIT extends BaseCollection { +public class ArangoCollectionQueryIT extends BaseArangoDb { @Override protected RouteBuilder createRouteBuilder() { @@ -60,9 +59,7 @@ public class ArangoCollectionQueryIT extends BaseCollection { collection.insertDocument(test3); String query = "FOR t IN " + COLLECTION_NAME + " FILTER t.foo == @foo AND t.number == @number RETURN t"; - Map<String, Object> bindVars = new MapBuilder().put("foo", test.getFoo()) - .put("number", test.getNumber()) - .get(); + Map<String, Object> bindVars = Map.of("foo", test.getFoo(), "number", test.getNumber()); Exchange result = template.request("direct:query", exchange -> { exchange.getMessage().setHeader(AQL_QUERY, query); diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionSaveIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionSaveIT.java index e54c9a04df1..6ced14411fc 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionSaveIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionSaveIT.java @@ -24,10 +24,6 @@ import com.arangodb.ArangoCursor; import com.arangodb.entity.BaseDocument; import com.arangodb.entity.DocumentCreateEntity; import com.arangodb.entity.MultiDocumentEntity; -import com.arangodb.util.MapBuilder; -import com.arangodb.velocypack.VPackBuilder; -import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.ValueType; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; @@ -40,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @DisabledIfSystemProperty(named = "ci.env.name", matches = "apache.org", disabledReason = "Apache CI nodes are too resource constrained for this test") -public class ArangoCollectionSaveIT extends BaseCollection { +public class ArangoCollectionSaveIT extends BaseArangoDb { @Override protected RouteBuilder createRouteBuilder() { @@ -68,7 +64,7 @@ public class ArangoCollectionSaveIT extends BaseCollection { BaseDocument.class); assertEquals(docCreated.getKey(), actualResult.getKey()); assertEquals("Foo", actualResult.getAttribute("a")); - assertEquals(Long.valueOf(42), actualResult.getAttribute("b")); + assertEquals(42, actualResult.getAttribute("b")); } @Test @@ -110,44 +106,6 @@ public class ArangoCollectionSaveIT extends BaseCollection { assertEquals(docCreated.getKey(), actualResult.getKey()); } - @Test - public void insertOneVPack() { - final VPackBuilder builder = new VPackBuilder(); - builder.add(ValueType.OBJECT).add("foo", "bar").close(); - Exchange result = template.request("direct:insert", exchange -> { - exchange.getMessage().setBody(builder.slice()); - exchange.getMessage().setHeader("abc", "def"); - }); - assertTrue(result.getMessage().getBody() instanceof DocumentCreateEntity); - DocumentCreateEntity<VPackSlice> docCreated = (DocumentCreateEntity<VPackSlice>) result.getMessage().getBody(); - assertNotNull(docCreated.getKey()); - - TestDocumentEntity actualResult = collection.getDocument(docCreated.getKey(), - TestDocumentEntity.class); - assertEquals("bar", actualResult.getFoo()); - assertEquals(docCreated.getKey(), actualResult.getKey()); - - } - - @Test - public void insertOneJson() { - String jsonDoc = "{\"foo\":\"bar\"}"; - final VPackBuilder builder = new VPackBuilder(); - builder.add(ValueType.OBJECT).add("foo", "bar").close(); - Exchange result = template.request("direct:insert", exchange -> { - exchange.getMessage().setBody(jsonDoc); - exchange.getMessage().setHeader("abc", "def"); - }); - assertTrue(result.getMessage().getBody() instanceof DocumentCreateEntity); - DocumentCreateEntity<VPackSlice> docCreated = (DocumentCreateEntity<VPackSlice>) result.getMessage().getBody(); - assertNotNull(docCreated.getKey()); - - TestDocumentEntity actualResult = collection.getDocument(docCreated.getKey(), - TestDocumentEntity.class); - assertEquals("bar", actualResult.getFoo()); - assertEquals(docCreated.getKey(), actualResult.getKey()); - } - @Test public void insertMultipleBeanDocuments() { TestDocumentEntity test1 = new TestDocumentEntity("bar1"); @@ -163,9 +121,8 @@ public class ArangoCollectionSaveIT extends BaseCollection { assertTrue(result.getMessage().getBody() instanceof MultiDocumentEntity); String query = "FOR t IN " + COLLECTION_NAME + " FILTER t.foo == @foo RETURN t"; - Map<String, Object> bindVars = new MapBuilder().put("foo", test1.getFoo()).get(); - ArangoCursor<TestDocumentEntity> cursor = arangoDatabase.query(query, bindVars, null, - TestDocumentEntity.class); + Map<String, Object> bindVars = Map.of("foo", test1.getFoo()); + ArangoCursor<TestDocumentEntity> cursor = arangoDatabase.query(query, TestDocumentEntity.class, bindVars, null); cursor.forEachRemaining(test1Inserted -> { assertNotNull(test1Inserted); assertNotNull(test1Inserted.getKey()); @@ -175,18 +132,15 @@ public class ArangoCollectionSaveIT extends BaseCollection { }); - bindVars = new MapBuilder().put("foo", test2.getFoo()).get(); - cursor = arangoDatabase.query(query, bindVars, null, - TestDocumentEntity.class); + bindVars = Map.of("foo", test2.getFoo()); + cursor = arangoDatabase.query(query, TestDocumentEntity.class, bindVars, null); cursor.forEachRemaining(test2Inserted -> { assertNotNull(test2Inserted); assertNotNull(test2Inserted.getKey()); assertNotNull(test2Inserted.getRev()); assertEquals(test2.getFoo(), test2Inserted.getFoo()); assertEquals(test2.getNumber(), test2Inserted.getNumber()); - }); - } } diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionUpdateIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionUpdateIT.java index 96906dbe1ce..5d08254a22c 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionUpdateIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoCollectionUpdateIT.java @@ -16,24 +16,19 @@ */ package org.apache.camel.component.arangodb.integration; -import java.util.ArrayList; -import java.util.List; - import com.arangodb.entity.BaseDocument; import com.arangodb.entity.DocumentUpdateEntity; -import com.arangodb.entity.MultiDocumentEntity; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import static org.apache.camel.component.arangodb.ArangoDbConstants.ARANGO_KEY; -import static org.apache.camel.component.arangodb.ArangoDbConstants.MULTI_UPDATE; import static org.junit.jupiter.api.Assertions.*; @DisabledIfSystemProperty(named = "ci.env.name", matches = "apache.org", disabledReason = "Apache CI nodes are too resource constrained for this test") -public class ArangoCollectionUpdateIT extends BaseCollection { +public class ArangoCollectionUpdateIT extends BaseArangoDb { @Override protected RouteBuilder createRouteBuilder() { @@ -69,48 +64,7 @@ public class ArangoCollectionUpdateIT extends BaseCollection { BaseDocument.class); assertEquals(myObject.getKey(), actualResult.getKey()); assertEquals("hello", actualResult.getAttribute("foo")); - assertEquals(Long.valueOf(42), actualResult.getAttribute("gg")); - } - - @Test - public void testUpdateMultipleDocuments() { - TestDocumentEntity test1 = new TestDocumentEntity(); - test1.setFoo("bar1"); - - TestDocumentEntity test2 = new TestDocumentEntity(); - test2.setFoo("bar2"); - test2.setNumber(10); - - collection.insertDocument(test1); - collection.insertDocument(test2); - - test1.setNumber(20); - test2.setFoo("bar2.2"); - - List<TestDocumentEntity> documents = new ArrayList<>(); - documents.add(test1); - documents.add(test2); - - Exchange result = template.request("direct:update", exchange -> { - exchange.getMessage().setBody(documents); - exchange.getMessage().setHeader(MULTI_UPDATE, true); - }); - assertTrue(result.getMessage().getBody() instanceof MultiDocumentEntity); - MultiDocumentEntity<DocumentUpdateEntity<TestDocumentEntity>> updateDocs - = (MultiDocumentEntity<DocumentUpdateEntity<TestDocumentEntity>>) result.getMessage().getBody(); - assertFalse(updateDocs.getDocuments().isEmpty()); - - TestDocumentEntity test1Updated = collection.getDocument(test1.getKey(), TestDocumentEntity.class); - assertNotNull(test1Updated); - assertNotEquals(test1.getRev(), test1Updated.getRev()); - assertEquals(test1.getFoo(), test1Updated.getFoo()); - assertEquals(test1.getNumber(), test1Updated.getNumber()); - - TestDocumentEntity test2Updated = collection.getDocument(test2.getKey(), TestDocumentEntity.class); - assertNotNull(test2Updated); - assertNotEquals(test2.getRev(), test2Updated.getRev()); - assertEquals(test2.getFoo(), test2Updated.getFoo()); - assertEquals(test2.getNumber(), test2Updated.getNumber()); + assertEquals(42, actualResult.getAttribute("gg")); } } diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoGraphVertexIT.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoGraphVertexIT.java index 9dd244523f0..1863911c9cc 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoGraphVertexIT.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/ArangoGraphVertexIT.java @@ -66,7 +66,7 @@ public class ArangoGraphVertexIT extends BaseGraph { BaseDocument.class); assertEquals(vertexCreated.getKey(), actualResult.getKey()); assertEquals("Foo", actualResult.getAttribute("a")); - assertEquals(Long.valueOf(42), actualResult.getAttribute("b")); + assertEquals(42, actualResult.getAttribute("b")); } @Test @@ -95,7 +95,7 @@ public class ArangoGraphVertexIT extends BaseGraph { BaseDocument.class); assertEquals(objectToUpdate.getKey(), actualResult.getKey()); assertEquals("hello", actualResult.getAttribute("foo")); - assertEquals(Long.valueOf(42), actualResult.getAttribute("gg")); + assertEquals(42, actualResult.getAttribute("gg")); } @Test diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java index 01f295469d7..d781b957c42 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseArangoDb.java @@ -16,19 +16,18 @@ */ package org.apache.camel.component.arangodb.integration; +import com.arangodb.ArangoCollection; import com.arangodb.ArangoDB; import com.arangodb.ArangoDatabase; -import com.arangodb.DbName; import org.apache.camel.CamelContext; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.test.infra.arangodb.services.ArangoDBService; import org.apache.camel.test.infra.arangodb.services.ArangoDBServiceFactory; import org.apache.camel.test.junit5.CamelTestSupport; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.extension.RegisterExtension; public class BaseArangoDb extends CamelTestSupport { + @RegisterExtension public static ArangoDBService service = ArangoDBServiceFactory.createService(); @@ -37,24 +36,28 @@ public class BaseArangoDb extends CamelTestSupport { protected static final String GRAPH_NAME = "graphTest"; protected static final String VERTEX_COLLECTION_NAME = "vertexTest"; protected static final String EDGE_COLLECTION_NAME = "edgeTest"; - protected static ArangoDB arangoDb; - protected static ArangoDatabase arangoDatabase; - - @BeforeAll - public static void doBeforeAll() { - arangoDb = new ArangoDB.Builder().build(); - arangoDb.createDatabase(DbName.of(DATABASE_NAME)); - arangoDatabase = arangoDb.db(DbName.of(DATABASE_NAME)); - } - - @AfterAll - public static void doAfterAll() { - arangoDb.shutdown(); - } + protected ArangoDB arangoDb; + protected ArangoDatabase arangoDatabase; + protected ArangoCollection collection; @Override protected CamelContext createCamelContext() { CamelContext ctx = new DefaultCamelContext(); + + arangoDb = new ArangoDB.Builder().host("localhost", 8529).build(); + + // drop any existing database to start clean + if (arangoDb.getDatabases().contains(DATABASE_NAME)) { + arangoDatabase = arangoDb.db(DATABASE_NAME); + arangoDatabase.drop(); + } + + arangoDb.createDatabase(DATABASE_NAME); + arangoDatabase = arangoDb.db(DATABASE_NAME); + arangoDatabase.createCollection(COLLECTION_NAME); + collection = arangoDatabase.collection(COLLECTION_NAME); + + ctx.getRegistry().bind("arangoDB", arangoDb); ctx.getPropertiesComponent().setLocation("classpath:arango.test.properties"); return ctx; } diff --git a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseCollection.java b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseDocumentEntity.java similarity index 56% rename from components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseCollection.java rename to components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseDocumentEntity.java index 4836fcc5d16..9e7ba1eb5e9 100644 --- a/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseCollection.java +++ b/components/camel-arangodb/src/test/java/org/apache/camel/component/arangodb/integration/BaseDocumentEntity.java @@ -16,22 +16,37 @@ */ package org.apache.camel.component.arangodb.integration; -import com.arangodb.ArangoCollection; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; -public class BaseCollection extends BaseArangoDb { +public abstract class BaseDocumentEntity { - protected ArangoCollection collection; + @JsonProperty("_key") + @JsonInclude(JsonInclude.Include.NON_NULL) + private String key; - @BeforeEach - public void beforeEach() { - arangoDatabase.createCollection(COLLECTION_NAME); - collection = arangoDatabase.collection(COLLECTION_NAME); + @JsonProperty("_id") + @JsonInclude(JsonInclude.Include.NON_NULL) + private String id; + + @JsonProperty("_rev") + @JsonInclude(JsonInclude.Include.NON_NULL) + private String rev; + + public BaseDocumentEntity(String key) { + this.key = key; + } + + public String getKey() { + return key; } - @AfterEach - public void afterEach() { - collection.drop(); + public String getId() { + return id; } + + public String getRev() { + return rev; + } + } diff --git a/parent/pom.xml b/parent/pom.xml index 8d63fc4745f..87dd50aacd3 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -57,7 +57,7 @@ <apacheds-version>2.0.0.AM26</apacheds-version> <apache-drill-version>1.21.1</apache-drill-version> <apicurio-version>1.1.27</apicurio-version> - <arangodb-java-version>6.20.0</arangodb-java-version> + <arangodb-java-version>7.1.0</arangodb-java-version> <as2-lib-version>4.11.0</as2-lib-version> <ascii-table-version>1.8.0</ascii-table-version> <asm-version>9.5</asm-version> diff --git a/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDbContainer.java b/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDbContainer.java index 777c3e68218..b6fdebb85c3 100644 --- a/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDbContainer.java +++ b/test-infra/camel-test-infra-arangodb/src/test/java/org/apache/camel/test/infra/arangodb/services/ArangoDbContainer.java @@ -24,7 +24,7 @@ import org.testcontainers.containers.wait.strategy.Wait; public class ArangoDbContainer extends GenericContainer { public static final Integer PORT_DEFAULT = 8529; - public static final String ARANGO_IMAGE = "arangodb:3.9.8"; + public static final String ARANGO_IMAGE = "arangodb:3.10.9"; private static final Logger LOGGER = LoggerFactory.getLogger(ArangoDbContainer.class); private static final String CONTAINER_NAME = "arango";