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 02f7d33 CAMEL-17057: Update documentation for MongoDB component. (#6762) 02f7d33 is described below commit 02f7d3313985b97e9b554ff2a20ceee21c8b1076 Author: klease <38634989+kle...@users.noreply.github.com> AuthorDate: Mon Jan 17 15:38:35 2022 +0100 CAMEL-17057: Update documentation for MongoDB component. (#6762) * CAMEL-17057: Update documentation for MongoDB component. Update the documentation and add an example showing a connection URL with only a hosts parameter and no connectionBean. Add two unit tests showing both ways of specifying the URL. * Specify dummy as connectionBean --- .../apache/camel/component/mongodb/mongodb.json | 4 +- .../src/main/docs/mongodb-component.adoc | 3 +- .../camel/component/mongodb/MongoDbEndpoint.java | 4 +- .../mongodb/MongoDbEndpointClientTest.java | 56 ++++++++++++++++++++++ .../mongodb/MongoDbEndpointHostsTest.java | 49 +++++++++++++++++++ 5 files changed, 111 insertions(+), 5 deletions(-) diff --git a/components/camel-mongodb/src/generated/resources/org/apache/camel/component/mongodb/mongodb.json b/components/camel-mongodb/src/generated/resources/org/apache/camel/component/mongodb/mongodb.json index 6499270..c0a97ed 100644 --- a/components/camel-mongodb/src/generated/resources/org/apache/camel/component/mongodb/mongodb.json +++ b/components/camel-mongodb/src/generated/resources/org/apache/camel/component/mongodb/mongodb.json @@ -28,12 +28,12 @@ "autowiredEnabled": { "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 type, which t [...] }, "properties": { - "connectionBean": { "kind": "path", "displayName": "Connection Bean", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the connection bean reference used to lookup a client for connecting to a database." }, + "connectionBean": { "kind": "path", "displayName": "Connection Bean", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Sets the connection bean reference used to lookup a client for connecting to a database if no hosts parameter is present." }, "collection": { "kind": "parameter", "displayName": "Collection", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the name of the MongoDB collection to bind to this endpoint" }, "collectionIndex": { "kind": "parameter", "displayName": "Collection Index", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the collection index (JSON FORMAT : { field1 : order1, field2 : order2})" }, "createCollection": { "kind": "parameter", "displayName": "Create Collection", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Create collection during initialisation if it doesn't exist. Default is true." }, "database": { "kind": "parameter", "displayName": "Database", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the name of the MongoDB database to target" }, - "hosts": { "kind": "parameter", "displayName": "Hosts", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Host address of mongodb server in host:port format. It's possible also use more than one address, as comma separated list of hosts: host1:port1,host2:port2. If hosts parameter is specified, provided connectionBean is ignored." }, + "hosts": { "kind": "parameter", "displayName": "Hosts", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Host address of mongodb server in host:port format. It's possible also use more than one address, as comma separated list of hosts: host1:port1,host2:port2. If the hosts parameter is specified, the provided connectionBean is ignored." }, "mongoConnection": { "kind": "parameter", "displayName": "Mongo Connection", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.mongodb.client.MongoClient", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the connection bean used as a client for connecting to a database." }, "operation": { "kind": "parameter", "displayName": "Operation", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.mongodb.MongoDbOperation", "enum": [ "findById", "findOneByQuery", "findAll", "findDistinct", "insert", "save", "update", "remove", "bulkWrite", "aggregate", "getDbStats", "getColStats", "count", "command" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the operation this endpoint [...] "outputType": { "kind": "parameter", "displayName": "Output Type", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "org.apache.camel.component.mongodb.MongoDbOutputType", "enum": [ "DocumentList", "Document", "MongoIterable" ], "deprecated": false, "autowired": false, "secret": false, "description": "Convert the output of the producer to the selected type : DocumentList Document or MongoIterable. DocumentList or MongoIterable applies to findAll [...] diff --git a/components/camel-mongodb/src/main/docs/mongodb-component.adoc b/components/camel-mongodb/src/main/docs/mongodb-component.adoc index a364252..5eea949 100644 --- a/components/camel-mongodb/src/main/docs/mongodb-component.adoc +++ b/components/camel-mongodb/src/main/docs/mongodb-component.adoc @@ -56,10 +56,11 @@ for this component: </dependency> ------------------------------------------------------------ -== URI format +== URI formats --------------------------------------------------------------------------------------------------------------- mongodb:connectionBean?database=databaseName&collection=collectionName&operation=operationName[&moreOptions...] +mongodb:dummy?hosts=hostnames&database=databaseName&collection=collectionName&operation=operationName[&moreOptions...] --------------------------------------------------------------------------------------------------------------- // component-configure options: START diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java index 9d4c9d2..8c92596 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java @@ -66,7 +66,7 @@ public class MongoDbEndpoint extends DefaultEndpoint { @UriParam(description = "Sets the connection bean used as a client for connecting to a database.") private MongoClient mongoConnection; - @UriPath(description = "Sets the connection bean reference used to lookup a client for connecting to a database.") + @UriPath(description = "Sets the connection bean reference used to lookup a client for connecting to a database if no hosts parameter is present.") @Metadata(required = true) private String connectionBean; @@ -732,7 +732,7 @@ public class MongoDbEndpoint extends DefaultEndpoint { /** * Host address of mongodb server in `[host]:[port]` format. It's possible also use more than one address, as comma - * separated list of hosts: `[host1]:[port1],[host2]:[port2]`. If hosts parameter is specified, provided + * separated list of hosts: `[host1]:[port1],[host2]:[port2]`. If the hosts parameter is specified, the provided * connectionBean is ignored. * * @param hosts diff --git a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointClientTest.java b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointClientTest.java new file mode 100644 index 0000000..abff7ff --- /dev/null +++ b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointClientTest.java @@ -0,0 +1,56 @@ +/* + * 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.component.mongodb; + +import com.mongodb.client.MongoClients; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.spi.Registry; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MongoDbEndpointClientTest extends CamelTestSupport { + + @Override + protected void bindToRegistry(Registry registry) throws Exception { + registry.bind("mongoClient", MongoClients.create("mongodb://localhost")); + } + + @Test + void testMongoDbEndpoint() { + MongoDbEndpoint mongoDb + = context.getEndpoint("mongodb:mongoClient?database=test&collection=test&operation=findAll", + MongoDbEndpoint.class); + assertNotNull(mongoDb); + assertNotNull(mongoDb.getMongoConnection()); + assertNotNull(mongoDb.getMongoConnection().getDatabase("test")); + assertEquals("test", mongoDb.getCollection()); + assertEquals("findAll", mongoDb.getOperation().toString()); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:dbFromBean").to("mongodb:mongoClient?database=test&collection=test&operation=findAll"); + } + }; + } + +} diff --git a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointHostsTest.java b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointHostsTest.java new file mode 100644 index 0000000..ac07211 --- /dev/null +++ b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbEndpointHostsTest.java @@ -0,0 +1,49 @@ +/* + * 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.component.mongodb; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MongoDbEndpointHostsTest extends CamelTestSupport { + + @Test + void testMongoDbEndpoint() { + MongoDbEndpoint mongoDb + = context.getEndpoint("mongodb:dummy?hosts=localhost&database=test&collection=test&operation=findAll", + MongoDbEndpoint.class); + assertNotNull(mongoDb); + assertNotNull(mongoDb.getMongoConnection()); + assertNotNull(mongoDb.getMongoConnection().getDatabase("test")); + assertEquals("test", mongoDb.getCollection()); + assertEquals("findAll", mongoDb.getOperation().toString()); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:dbFromHost").to("mongodb:dummy?hosts=localhost&database=test&collection=test&operation=findAll"); + } + }; + } + +}