This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new e4c4d0e CAMEL-15792 + camel-couchbase polishing (#4613)
e4c4d0e is described below
commit e4c4d0e101f9a6677c4999dcc9560f16d6b88f94
Author: Matej Melko <[email protected]>
AuthorDate: Mon Nov 16 22:24:56 2020 +0100
CAMEL-15792 + camel-couchbase polishing (#4613)
* CAMEL-15792: Migrate camel-couchbase integration tests to use
testcontainers
* camel-couchbase: Add switch to consumer to return either full document or
view result
add connectTimeout
---
.../apache/camel/catalog/components/couchbase.json | 2 +
.../camel/catalog/docs/couchbase-component.adoc | 4 +-
components/camel-couchbase/pom.xml | 64 +++++++++++++
.../couchbase/CouchbaseEndpointConfigurer.java | 12 +++
.../couchbase/CouchbaseEndpointUriFactory.java | 38 ++++----
.../camel/component/couchbase/couchbase.json | 2 +
.../src/main/docs/couchbase-component.adoc | 4 +-
.../component/couchbase/CouchbaseConstants.java | 3 +-
.../component/couchbase/CouchbaseConsumer.java | 13 ++-
.../component/couchbase/CouchbaseEndpoint.java | 38 +++++++-
...Test.java => ConsumeMessagesWithLimitTest.java} | 21 ++--
.../component/couchbase/CouchbaseEndpointTest.java | 21 +++-
.../couchbase/CouchbaseIntegrationTestBase.java | 72 ++++++++++++++
.../couchbase/ProduceMessagesSimpleTest.java | 13 ++-
...est.java => ProduceMessagesWithAutoIDTest.java} | 8 +-
...ntegrationTest.java => RemoveMessagesTest.java} | 23 +++--
.../dsl/CouchbaseEndpointBuilderFactory.java | 106 +++++++++++++++++++++
.../modules/ROOT/pages/couchbase-component.adoc | 4 +-
18 files changed, 386 insertions(+), 62 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/couchbase.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/couchbase.json
index 39b3e9d..c655efe 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/couchbase.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/couchbase.json
@@ -38,6 +38,7 @@
"consumerProcessedStrategy": { "kind": "parameter", "displayName":
"Consumer Processed Strategy", "group": "consumer", "label": "consumer",
"required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"none", "description": "Define the consumer Processed strategy to use" },
"descending": { "kind": "parameter", "displayName": "Descending", "group":
"consumer", "label": "consumer", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Define if this operation is
descending or not" },
"designDocumentName": { "kind": "parameter", "displayName": "Design
Document Name", "group": "consumer", "label": "consumer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "beer", "description":
"The design document name to use" },
+ "fullDocument": { "kind": "parameter", "displayName": "Full Document",
"group": "consumer", "label": "consumer", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "If true consumer will return
complete document instead data defined in view" },
"limit": { "kind": "parameter", "displayName": "Limit", "group":
"consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": -1, "description": "The output limit to use" },
"rangeEndKey": { "kind": "parameter", "displayName": "Range End Key",
"group": "consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Define a range for the end key" },
"rangeStartKey": { "kind": "parameter", "displayName": "Range Start Key",
"group": "consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Define a range for the start key" },
@@ -56,6 +57,7 @@
"replicateTo": { "kind": "parameter", "displayName": "Replicate To",
"group": "producer", "label": "producer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 0, "description": "Where to replicate the data" },
"startingIdForInsertsFrom": { "kind": "parameter", "displayName":
"Starting Id For Inserts From", "group": "producer", "label": "producer",
"required": false, "type": "integer", "javaType": "long", "deprecated": false,
"autowired": false, "secret": false, "description": "Define the starting Id
where we are doing an insert operation" },
"additionalHosts": { "kind": "parameter", "displayName": "Additional
Hosts", "group": "advanced", "label": "advanced", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The additional hosts" },
+ "connectTimeout": { "kind": "parameter", "displayName": "Connect Timeout",
"group": "advanced", "label": "advanced", "required": false, "type":
"duration", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "2500", "description": "Define the
timeoutconnect in milliseconds" },
"queryTimeout": { "kind": "parameter", "displayName": "Query Timeout",
"group": "advanced", "label": "advanced", "required": false, "type":
"duration", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "2500", "description": "Define the operation
timeout in milliseconds" },
"synchronous": { "kind": "parameter", "displayName": "Synchronous",
"group": "advanced", "label": "advanced", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Sets whether synchronous
processing should be strictly used, or Camel is allowed to use asynchronous
processing (if supported)." },
"backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff
Error Threshold", "group": "scheduler", "label": "consumer,scheduler",
"required": false, "type": "integer", "javaType": "int", "deprecated": false,
"autowired": false, "secret": false, "description": "The number of subsequent
error polls (failed due some error) that should happen before the
backoffMultipler should kick-in." },
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/couchbase-component.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/couchbase-component.adoc
index fb752bf..d4b2054 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/couchbase-component.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/couchbase-component.adoc
@@ -73,7 +73,7 @@ with the following path and query parameters:
|===
-=== Query Parameters (44 parameters):
+=== Query Parameters (46 parameters):
[width="100%",cols="2,5,^1,2",options="header"]
@@ -87,6 +87,7 @@ with the following path and query parameters:
| *consumerProcessedStrategy* (consumer) | Define the consumer Processed
strategy to use | none | String
| *descending* (consumer) | Define if this operation is descending or not |
false | boolean
| *designDocumentName* (consumer) | The design document name to use | beer |
String
+| *fullDocument* (consumer) | If true consumer will return complete document
instead data defined in view | false | boolean
| *limit* (consumer) | The output limit to use | -1 | int
| *rangeEndKey* (consumer) | Define a range for the end key | | String
| *rangeStartKey* (consumer) | Define a range for the start key | | String
@@ -105,6 +106,7 @@ with the following path and query parameters:
| *replicateTo* (producer) | Where to replicate the data | 0 | int
| *startingIdForInsertsFrom* (producer) | Define the starting Id where we are
doing an insert operation | | long
| *additionalHosts* (advanced) | The additional hosts | | String
+| *connectTimeout* (advanced) | Define the timeoutconnect in milliseconds |
2500 | long
| *queryTimeout* (advanced) | Define the operation timeout in milliseconds |
2500 | long
| *synchronous* (advanced) | Sets whether synchronous processing should be
strictly used, or Camel is allowed to use asynchronous processing (if
supported). | false | boolean
| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls
(failed due some error) that should happen before the backoffMultipler should
kick-in. | | int
diff --git a/components/camel-couchbase/pom.xml
b/components/camel-couchbase/pom.xml
index 109800f..eb228d2 100644
--- a/components/camel-couchbase/pom.xml
+++ b/components/camel-couchbase/pom.xml
@@ -70,6 +70,70 @@
<scope>test</scope>
</dependency>
+ <!-- test infra -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-common</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-couchbase</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
+ <profiles>
+ <!-- activate test if the docker socket file is accessible -->
+ <profile>
+ <id>couchbase-tests-docker-file</id>
+ <activation>
+ <file>
+ <exists>/var/run/docker.sock</exists>
+ </file>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>${skipTests}</skipTests>
+ <forkCount>1</forkCount>
+ <systemPropertyVariables>
+
<visibleassertions.silence>true</visibleassertions.silence>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <!-- activate test if the DOCKER_HOST env var is set -->
+ <profile>
+ <id>couchbase-tests-docker-env</id>
+ <activation>
+ <property>
+ <name>env.DOCKER_HOST</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>${skipTests}</skipTests>
+ <forkCount>1</forkCount>
+ <systemPropertyVariables>
+
<visibleassertions.silence>true</visibleassertions.silence>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git
a/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointConfigurer.java
b/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointConfigurer.java
index d3aa0ea..05114fe 100644
---
a/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointConfigurer.java
+++
b/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointConfigurer.java
@@ -35,6 +35,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "bridgeErrorHandler":
target.setBridgeErrorHandler(property(camelContext, boolean.class, value));
return true;
case "bucket": target.setBucket(property(camelContext,
java.lang.String.class, value)); return true;
case "collection": target.setCollection(property(camelContext,
java.lang.String.class, value)); return true;
+ case "connecttimeout":
+ case "connectTimeout": target.setConnectTimeout(property(camelContext,
java.time.Duration.class, value).toMillis()); return true;
case "consumerprocessedstrategy":
case "consumerProcessedStrategy":
target.setConsumerProcessedStrategy(property(camelContext,
java.lang.String.class, value)); return true;
case "delay": target.setDelay(property(camelContext, long.class,
value)); return true;
@@ -45,6 +47,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "exceptionHandler":
target.setExceptionHandler(property(camelContext,
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
case "exchangepattern":
case "exchangePattern":
target.setExchangePattern(property(camelContext,
org.apache.camel.ExchangePattern.class, value)); return true;
+ case "fulldocument":
+ case "fullDocument": target.setFullDocument(property(camelContext,
boolean.class, value)); return true;
case "greedy": target.setGreedy(property(camelContext, boolean.class,
value)); return true;
case "initialdelay":
case "initialDelay": target.setInitialDelay(property(camelContext,
long.class, value)); return true;
@@ -116,6 +120,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "bridgeErrorHandler": return boolean.class;
case "bucket": return java.lang.String.class;
case "collection": return java.lang.String.class;
+ case "connecttimeout":
+ case "connectTimeout": return long.class;
case "consumerprocessedstrategy":
case "consumerProcessedStrategy": return java.lang.String.class;
case "delay": return long.class;
@@ -126,6 +132,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "exceptionHandler": return
org.apache.camel.spi.ExceptionHandler.class;
case "exchangepattern":
case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+ case "fulldocument":
+ case "fullDocument": return boolean.class;
case "greedy": return boolean.class;
case "initialdelay":
case "initialDelay": return long.class;
@@ -198,6 +206,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "bridgeErrorHandler": return target.isBridgeErrorHandler();
case "bucket": return target.getBucket();
case "collection": return target.getCollection();
+ case "connecttimeout":
+ case "connectTimeout": return target.getConnectTimeout();
case "consumerprocessedstrategy":
case "consumerProcessedStrategy": return
target.getConsumerProcessedStrategy();
case "delay": return target.getDelay();
@@ -208,6 +218,8 @@ public class CouchbaseEndpointConfigurer extends
PropertyConfigurerSupport imple
case "exceptionHandler": return target.getExceptionHandler();
case "exchangepattern":
case "exchangePattern": return target.getExchangePattern();
+ case "fulldocument":
+ case "fullDocument": return target.isFullDocument();
case "greedy": return target.isGreedy();
case "initialdelay":
case "initialDelay": return target.getInitialDelay();
diff --git
a/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointUriFactory.java
b/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointUriFactory.java
index 7188a04..5ef1684 100644
---
a/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointUriFactory.java
+++
b/components/camel-couchbase/src/generated/java/org/apache/camel/component/couchbase/CouchbaseEndpointUriFactory.java
@@ -20,38 +20,24 @@ public class CouchbaseEndpointUriFactory extends
org.apache.camel.support.compon
private static final Set<String> PROPERTY_NAMES;
private static final Set<String> SECRET_PROPERTY_NAMES;
static {
- Set<String> props = new HashSet<>(47);
- props.add("backoffMultiplier");
- props.add("queryTimeout");
+ Set<String> props = new HashSet<>(49);
props.add("consumerProcessedStrategy");
props.add("synchronous");
- props.add("skip");
props.add("initialDelay");
props.add("descending");
- props.add("scheduler");
props.add("protocol");
props.add("hostname");
props.add("password");
props.add("bridgeErrorHandler");
- props.add("useFixedDelay");
props.add("viewName");
- props.add("additionalHosts");
- props.add("runLoggingLevel");
- props.add("backoffErrorThreshold");
- props.add("scope");
+ props.add("fullDocument");
props.add("limit");
+ props.add("connectTimeout");
props.add("greedy");
props.add("scheduledExecutorService");
- props.add("rangeEndKey");
- props.add("key");
props.add("repeatCount");
- props.add("timeUnit");
props.add("sendEmptyMessageWhenIdle");
- props.add("autoStartIdForInserts");
- props.add("persistTo");
- props.add("producerRetryPause");
props.add("schedulerProperties");
- props.add("exchangePattern");
props.add("rangeStartKey");
props.add("collection");
props.add("designDocumentName");
@@ -61,11 +47,27 @@ public class CouchbaseEndpointUriFactory extends
org.apache.camel.support.compon
props.add("bucket");
props.add("lazyStartProducer");
props.add("delay");
- props.add("pollStrategy");
props.add("port");
props.add("producerRetryAttempts");
props.add("startScheduler");
props.add("exceptionHandler");
+ props.add("backoffMultiplier");
+ props.add("queryTimeout");
+ props.add("skip");
+ props.add("scheduler");
+ props.add("useFixedDelay");
+ props.add("additionalHosts");
+ props.add("runLoggingLevel");
+ props.add("backoffErrorThreshold");
+ props.add("scope");
+ props.add("rangeEndKey");
+ props.add("key");
+ props.add("timeUnit");
+ props.add("autoStartIdForInserts");
+ props.add("persistTo");
+ props.add("producerRetryPause");
+ props.add("exchangePattern");
+ props.add("pollStrategy");
props.add("operation");
props.add("username");
PROPERTY_NAMES = Collections.unmodifiableSet(props);
diff --git
a/components/camel-couchbase/src/generated/resources/org/apache/camel/component/couchbase/couchbase.json
b/components/camel-couchbase/src/generated/resources/org/apache/camel/component/couchbase/couchbase.json
index 39b3e9d..c655efe 100644
---
a/components/camel-couchbase/src/generated/resources/org/apache/camel/component/couchbase/couchbase.json
+++
b/components/camel-couchbase/src/generated/resources/org/apache/camel/component/couchbase/couchbase.json
@@ -38,6 +38,7 @@
"consumerProcessedStrategy": { "kind": "parameter", "displayName":
"Consumer Processed Strategy", "group": "consumer", "label": "consumer",
"required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
"none", "description": "Define the consumer Processed strategy to use" },
"descending": { "kind": "parameter", "displayName": "Descending", "group":
"consumer", "label": "consumer", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Define if this operation is
descending or not" },
"designDocumentName": { "kind": "parameter", "displayName": "Design
Document Name", "group": "consumer", "label": "consumer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "beer", "description":
"The design document name to use" },
+ "fullDocument": { "kind": "parameter", "displayName": "Full Document",
"group": "consumer", "label": "consumer", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "If true consumer will return
complete document instead data defined in view" },
"limit": { "kind": "parameter", "displayName": "Limit", "group":
"consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": -1, "description": "The output limit to use" },
"rangeEndKey": { "kind": "parameter", "displayName": "Range End Key",
"group": "consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Define a range for the end key" },
"rangeStartKey": { "kind": "parameter", "displayName": "Range Start Key",
"group": "consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Define a range for the start key" },
@@ -56,6 +57,7 @@
"replicateTo": { "kind": "parameter", "displayName": "Replicate To",
"group": "producer", "label": "producer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 0, "description": "Where to replicate the data" },
"startingIdForInsertsFrom": { "kind": "parameter", "displayName":
"Starting Id For Inserts From", "group": "producer", "label": "producer",
"required": false, "type": "integer", "javaType": "long", "deprecated": false,
"autowired": false, "secret": false, "description": "Define the starting Id
where we are doing an insert operation" },
"additionalHosts": { "kind": "parameter", "displayName": "Additional
Hosts", "group": "advanced", "label": "advanced", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The additional hosts" },
+ "connectTimeout": { "kind": "parameter", "displayName": "Connect Timeout",
"group": "advanced", "label": "advanced", "required": false, "type":
"duration", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "2500", "description": "Define the
timeoutconnect in milliseconds" },
"queryTimeout": { "kind": "parameter", "displayName": "Query Timeout",
"group": "advanced", "label": "advanced", "required": false, "type":
"duration", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": "2500", "description": "Define the operation
timeout in milliseconds" },
"synchronous": { "kind": "parameter", "displayName": "Synchronous",
"group": "advanced", "label": "advanced", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "description": "Sets whether synchronous
processing should be strictly used, or Camel is allowed to use asynchronous
processing (if supported)." },
"backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff
Error Threshold", "group": "scheduler", "label": "consumer,scheduler",
"required": false, "type": "integer", "javaType": "int", "deprecated": false,
"autowired": false, "secret": false, "description": "The number of subsequent
error polls (failed due some error) that should happen before the
backoffMultipler should kick-in." },
diff --git a/components/camel-couchbase/src/main/docs/couchbase-component.adoc
b/components/camel-couchbase/src/main/docs/couchbase-component.adoc
index fb752bf..d4b2054 100644
--- a/components/camel-couchbase/src/main/docs/couchbase-component.adoc
+++ b/components/camel-couchbase/src/main/docs/couchbase-component.adoc
@@ -73,7 +73,7 @@ with the following path and query parameters:
|===
-=== Query Parameters (44 parameters):
+=== Query Parameters (46 parameters):
[width="100%",cols="2,5,^1,2",options="header"]
@@ -87,6 +87,7 @@ with the following path and query parameters:
| *consumerProcessedStrategy* (consumer) | Define the consumer Processed
strategy to use | none | String
| *descending* (consumer) | Define if this operation is descending or not |
false | boolean
| *designDocumentName* (consumer) | The design document name to use | beer |
String
+| *fullDocument* (consumer) | If true consumer will return complete document
instead data defined in view | false | boolean
| *limit* (consumer) | The output limit to use | -1 | int
| *rangeEndKey* (consumer) | Define a range for the end key | | String
| *rangeStartKey* (consumer) | Define a range for the start key | | String
@@ -105,6 +106,7 @@ with the following path and query parameters:
| *replicateTo* (producer) | Where to replicate the data | 0 | int
| *startingIdForInsertsFrom* (producer) | Define the starting Id where we are
doing an insert operation | | long
| *additionalHosts* (advanced) | The additional hosts | | String
+| *connectTimeout* (advanced) | Define the timeoutconnect in milliseconds |
2500 | long
| *queryTimeout* (advanced) | Define the operation timeout in milliseconds |
2500 | long
| *synchronous* (advanced) | Sets whether synchronous processing should be
strictly used, or Camel is allowed to use asynchronous processing (if
supported). | false | boolean
| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls
(failed due some error) that should happen before the backoffMultipler should
kick-in. | | int
diff --git
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConstants.java
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConstants.java
index 2bb0831..ce934e0 100644
---
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConstants.java
+++
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConstants.java
@@ -23,7 +23,7 @@ package org.apache.camel.component.couchbase;
public interface CouchbaseConstants {
String COUCHBASE_URI_ERROR
- = "Invalid URI. Format must be of the form
couchbase:http[s]://hostname[:port]?[options...]";
+ = "Invalid URI. Format must be of the form
couchbase:http[s]://hostname[:port]?bucket=[bucket][&options...]";
String COUCHBASE_PUT = "CCB_PUT";
String COUCHBASE_GET = "CCB_GET";
String COUCHBASE_DELETE = "CCB_DEL";
@@ -40,6 +40,7 @@ public interface CouchbaseConstants {
int DEFAULT_COUCHBASE_PORT = 8091;
int DEFAULT_TTL = 0;
long DEFAULT_QUERY_TIMEOUT = 2500;
+ long DEFAULT_CONNECT_TIMEOUT = 30000;
String DEFAULT_CONSUME_PROCESSED_STRATEGY = "none";
diff --git
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
index 2f0481f..ab6d5fc 100644
---
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
+++
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseConsumer.java
@@ -16,8 +16,7 @@
*/
package org.apache.camel.component.couchbase;
-import java.util.List;
-
+import com.couchbase.client.core.deps.com.fasterxml.jackson.databind.JsonNode;
import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Collection;
import com.couchbase.client.java.Scope;
@@ -119,11 +118,15 @@ public class CouchbaseConsumer extends
DefaultScheduledPollConsumer {
String consumerProcessedStrategy =
endpoint.getConsumerProcessedStrategy();
for (ViewRow row : result.rows()) {
-
+ Object doc;
String id = row.id().get();
- Object doc = collection.get(id);
+ if (endpoint.isFullDocument()) {
+ doc = collection.get(id);
+ } else {
+ doc = row.valueAs(Object.class);
+ }
- String key = (String) row.keyAs(List.class).get().get(0);
+ String key = row.keyAs(JsonNode.class).get().asText();
String designDocumentName = endpoint.getDesignDocumentName();
String viewName = endpoint.getViewName();
diff --git
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseEndpoint.java
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseEndpoint.java
index 4477784..893cfd0 100644
---
a/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseEndpoint.java
+++
b/components/camel-couchbase/src/main/java/org/apache/camel/component/couchbase/CouchbaseEndpoint.java
@@ -30,6 +30,7 @@ import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.ClusterOptions;
import com.couchbase.client.java.env.ClusterEnvironment;
+import org.apache.camel.CamelException;
import org.apache.camel.Category;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
@@ -42,6 +43,7 @@ import org.apache.camel.support.ScheduledPollEndpoint;
import static
org.apache.camel.component.couchbase.CouchbaseConstants.COUCHBASE_PUT;
import static
org.apache.camel.component.couchbase.CouchbaseConstants.COUCHBASE_URI_ERROR;
+import static
org.apache.camel.component.couchbase.CouchbaseConstants.DEFAULT_CONNECT_TIMEOUT;
import static
org.apache.camel.component.couchbase.CouchbaseConstants.DEFAULT_CONSUME_PROCESSED_STRATEGY;
import static
org.apache.camel.component.couchbase.CouchbaseConstants.DEFAULT_COUCHBASE_PORT;
import static
org.apache.camel.component.couchbase.CouchbaseConstants.DEFAULT_DESIGN_DOCUMENT_NAME;
@@ -124,6 +126,8 @@ public class CouchbaseEndpoint extends
ScheduledPollEndpoint {
private String rangeStartKey;
@UriParam(label = "consumer")
private String rangeEndKey = "";
+ @UriParam(label = "consumer", defaultValue = "false")
+ private boolean fullDocument = true;
// Consumer strategy
@UriParam(label = "consumer", defaultValue =
DEFAULT_CONSUME_PROCESSED_STRATEGY)
@@ -133,6 +137,10 @@ public class CouchbaseEndpoint extends
ScheduledPollEndpoint {
@UriParam(label = "advanced", defaultValue = "2500", javaType =
"java.time.Duration")
private long queryTimeout = DEFAULT_QUERY_TIMEOUT;
+ // Connection fine tuning parameters
+ @UriParam(label = "advanced", defaultValue = "2500", javaType =
"java.time.Duration")
+ private long connectTimeout = DEFAULT_CONNECT_TIMEOUT;
+
public CouchbaseEndpoint() {
}
@@ -433,6 +441,17 @@ public class CouchbaseEndpoint extends
ScheduledPollEndpoint {
this.rangeEndKey = rangeEndKey;
}
+ public boolean isFullDocument() {
+ return fullDocument;
+ }
+
+ /**
+ * If true consumer will return complete document instead data defined in
view
+ */
+ public void setFullDocument(boolean fullDocument) {
+ this.fullDocument = fullDocument;
+ }
+
public String getConsumerProcessedStrategy() {
return consumerProcessedStrategy;
}
@@ -455,6 +474,17 @@ public class CouchbaseEndpoint extends
ScheduledPollEndpoint {
this.queryTimeout = queryTimeout;
}
+ public long getConnectTimeout() {
+ return connectTimeout;
+ }
+
+ /**
+ * Define the timeoutconnect in milliseconds
+ */
+ public void setConnectTimeout(long connectTimeout) {
+ this.connectTimeout = connectTimeout;
+ }
+
public URI[] makeBootstrapURI() throws URISyntaxException {
if (additionalHosts == null || "".equals(additionalHosts)) {
@@ -492,9 +522,15 @@ public class CouchbaseEndpoint extends
ScheduledPollEndpoint {
List<URI> hosts = Arrays.asList(makeBootstrapURI());
String connectionString;
+ if (bucket == null || bucket.isEmpty()) {
+ throw new CamelException(COUCHBASE_URI_ERROR);
+ }
+
ClusterEnvironment.Builder cfb = ClusterEnvironment.builder();
if (queryTimeout != DEFAULT_QUERY_TIMEOUT) {
- cfb.timeoutConfig().queryTimeout(Duration.ofMillis(queryTimeout));
+ cfb.timeoutConfig()
+ .connectTimeout(Duration.ofMillis(connectTimeout))
+ .queryTimeout(Duration.ofMillis(queryTimeout));
}
ClusterEnvironment env = cfb.build();
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeBeerMessagesWithLimitIntegrationTest.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeMessagesWithLimitTest.java
similarity index 69%
rename from
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeBeerMessagesWithLimitIntegrationTest.java
rename to
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeMessagesWithLimitTest.java
index 99a5c44..5b5b1bc 100644
---
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeBeerMessagesWithLimitIntegrationTest.java
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ConsumeMessagesWithLimitTest.java
@@ -16,20 +16,30 @@
*/
package org.apache.camel.component.couchbase;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.After;
import org.junit.jupiter.api.Test;
-public class ConsumeBeerMessagesWithLimitIntegrationTest extends
CamelTestSupport {
+public class ConsumeMessagesWithLimitTest extends CouchbaseIntegrationTestBase
{
@Test
public void testQueryForBeers() throws Exception {
+ for (int i = 0; i < 15; i++) {
+
cluster.bucket(bucketName).defaultCollection().upsert("DocumentID_" + i,
"message" + i);
+ }
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(10);
- assertMockEndpointsSatisfied();
+ assertMockEndpointsSatisfied(30, TimeUnit.SECONDS);
+
+ }
+ @After
+ public void cleanBucket() {
+ cluster.buckets().flushBucket(bucketName);
}
@Override
@@ -37,9 +47,8 @@ public class ConsumeBeerMessagesWithLimitIntegrationTest
extends CamelTestSuppor
return new RouteBuilder() {
@Override
public void configure() throws Exception {
-
- // need couchbase installed on localhost with beer-sample data
-
from("couchbase:http://localhost/beer-sample?username=root&password=123456&designDocumentName=beer&viewName=brewery_beers&limit=10")
+
from(String.format("%s&designDocumentName=%s&viewName=%s&limit=10",
getConnectionUri(), bucketName, bucketName))
+ .log("message received")
.to("mock:result");
}
};
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseEndpointTest.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseEndpointTest.java
index 2d68579..cf2468b 100644
---
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseEndpointTest.java
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseEndpointTest.java
@@ -16,7 +16,9 @@
*/
package org.apache.camel.component.couchbase;
-import com.couchbase.client.core.error.InvalidArgumentException;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.camel.Processor;
import org.junit.jupiter.api.Test;
@@ -71,8 +73,12 @@ public class CouchbaseEndpointTest {
@Test
public void testCouchbaseEndpointCreateProducer() throws Exception {
- assertThrows(InvalidArgumentException.class,
- () -> new CouchbaseEndpoint("couchbase:localhost:80/bucket",
new CouchbaseComponent()).createProducer());
+ Map<String, Object> params = new HashMap<>();
+ params.put("bucket", "bucket");
+ assertThrows(IllegalArgumentException.class,
+ () -> new CouchbaseComponent()
+ .createEndpoint("couchbase:localhost:80/bucket",
"couchbase:localhost:80/bucket", params)
+ .createProducer());
}
@Test
@@ -80,8 +86,13 @@ public class CouchbaseEndpointTest {
Processor p = exchange -> {
// Nothing to do
};
- assertThrows(InvalidArgumentException.class,
- () -> new CouchbaseEndpoint("couchbase:localhost:80/bucket",
new CouchbaseComponent()).createConsumer(p));
+ Map<String, Object> params = new HashMap<>();
+ params.put("bucket", "bucket");
+
+ assertThrows(IllegalArgumentException.class,
+ () -> new CouchbaseComponent()
+ .createEndpoint("couchbase:localhost:80/bucket",
"couchbase:localhost:80/bucket", params)
+ .createConsumer(p));
}
@Test
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseIntegrationTestBase.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseIntegrationTestBase.java
new file mode 100644
index 0000000..c0ecf38
--- /dev/null
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/CouchbaseIntegrationTestBase.java
@@ -0,0 +1,72 @@
+/*
+ * 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.couchbase;
+
+import java.util.Collections;
+
+import com.couchbase.client.java.Bucket;
+import com.couchbase.client.java.Cluster;
+import com.couchbase.client.java.manager.bucket.BucketSettings;
+import com.couchbase.client.java.manager.bucket.BucketType;
+import com.couchbase.client.java.manager.view.DesignDocument;
+import com.couchbase.client.java.manager.view.View;
+import com.couchbase.client.java.view.DesignDocumentNamespace;
+import org.apache.camel.test.infra.common.TestUtils;
+import org.apache.camel.test.infra.couchbase.services.CouchbaseService;
+import org.apache.camel.test.infra.couchbase.services.CouchbaseServiceFactory;
+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 CouchbaseIntegrationTestBase extends CamelTestSupport {
+ @RegisterExtension
+ public static CouchbaseService service =
CouchbaseServiceFactory.getService();
+
+ protected static String bucketName;
+ protected static Cluster cluster;
+
+ @BeforeAll
+ static void setUpCouchbase() {
+ bucketName = "testBucket" + TestUtils.randomWithRange(0, 100);
+ cluster = Cluster.connect(service.getConnectionString(),
service.getUsername(), service.getPassword());
+
+ cluster.buckets().createBucket(
+
BucketSettings.create(bucketName).bucketType(BucketType.COUCHBASE).flushEnabled(true));
+
+ Bucket bucket = cluster.bucket(bucketName);
+ DesignDocument designDoc = new DesignDocument(
+ bucketName,
+ Collections.singletonMap(bucketName, new View("function (doc,
meta) { emit(meta.id, doc);}")));
+
cluster.bucket(bucketName).viewIndexes().upsertDesignDocument(designDoc,
DesignDocumentNamespace.PRODUCTION);
+
+ }
+
+ @AfterAll
+ public static void tearDownCouchbase() {
+ cluster.buckets().dropBucket(bucketName);
+ cluster.disconnect();
+ service.shutdown();
+ }
+
+ public String getConnectionUri() {
+ return
String.format("couchbase:http://%s:%d?bucket=%s&username=%s&password=%s",
service.getHostname(),
+ service.getPort(), bucketName, service.getUsername(),
service.getPassword());
+ }
+
+}
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesSimpleTest.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesSimpleTest.java
index e1424a3..03137e0 100644
---
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesSimpleTest.java
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesSimpleTest.java
@@ -16,18 +16,17 @@
*/
package org.apache.camel.component.couchbase;
+import java.time.Duration;
+
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-public class ProduceMessagesSimpleTest extends CamelTestSupport {
+public class ProduceMessagesSimpleTest extends CouchbaseIntegrationTestBase {
- // Ignore test since build environment does not have any couchbase instance
- @Disabled
@Test
public void testInsert() throws Exception {
+ cluster.bucket(bucketName).waitUntilReady(Duration.ofSeconds(30));
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
@@ -44,8 +43,8 @@ public class ProduceMessagesSimpleTest extends
CamelTestSupport {
public void configure() throws Exception {
// need couchbase installed on localhost
- from("direct:start").setHeader(CouchbaseConstants.HEADER_ID,
constant("blabla:120771"))
-
.to("couchbase:http://192.168.1.102/test?additionalHosts=localhost&username=root&password=123456")
+ from("direct:start").setHeader(CouchbaseConstants.HEADER_ID,
constant("SimpleDocument_1"))
+ .to(getConnectionUri())
.to("mock:result");
}
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDIntegrationTest.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDTest.java
similarity index 82%
rename from
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDIntegrationTest.java
rename to
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDTest.java
index 8727d96..4eee7a6 100644
---
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDIntegrationTest.java
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/ProduceMessagesWithAutoIDTest.java
@@ -18,10 +18,9 @@ package org.apache.camel.component.couchbase;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-public class ProduceMessagesWithAutoIDIntegrationTest extends CamelTestSupport
{
+public class ProduceMessagesWithAutoIDTest extends
CouchbaseIntegrationTestBase {
@Test
public void testInsert() throws Exception {
@@ -32,7 +31,6 @@ public class ProduceMessagesWithAutoIDIntegrationTest extends
CamelTestSupport {
template.sendBody("direct:start", "ugol2");
assertMockEndpointsSatisfied();
-
}
@Override
@@ -40,10 +38,8 @@ public class ProduceMessagesWithAutoIDIntegrationTest
extends CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
-
- // need couchbase installed on localhost
from("direct:start").to(
-
"couchbase:http://localhost/test?username=root&password=123456&autoStartIdForInserts=true&startingIdForInsertsFrom=1000")
+ getConnectionUri() +
"&autoStartIdForInserts=true&startingIdForInsertsFrom=1000")
.to("mock:result");
}
};
diff --git
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesIntegrationTest.java
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesTest.java
similarity index 64%
rename from
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesIntegrationTest.java
rename to
components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesTest.java
index e952e75..26bf3b1 100644
---
a/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesIntegrationTest.java
+++
b/components/camel-couchbase/src/test/java/org/apache/camel/component/couchbase/RemoveMessagesTest.java
@@ -18,18 +18,23 @@ package org.apache.camel.component.couchbase;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-public class RemoveMessagesIntegrationTest extends CamelTestSupport {
+import static
org.apache.camel.component.couchbase.CouchbaseConstants.COUCHBASE_DELETE;
+import static
org.apache.camel.component.couchbase.CouchbaseConstants.HEADER_ID;
+
+public class RemoveMessagesTest extends CouchbaseIntegrationTestBase {
@Test
- public void testInsert() throws Exception {
+ public void testDelete() throws Exception {
+ for (int i = 0; i < 15; i++) {
+
cluster.bucket(bucketName).defaultCollection().upsert("DocumentID_" + i,
"message" + i);
+ }
+
MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(2);
- template.sendBody("direct:start", "ugol1");
- template.sendBody("direct:start", "ugol2");
+ template.sendBodyAndHeader("direct:start", "delete the document ",
HEADER_ID, "DocumentID_1");
+ template.sendBodyAndHeader("direct:start", "delete the document",
HEADER_ID, "DocumentID_2");
assertMockEndpointsSatisfied();
@@ -40,10 +45,8 @@ public class RemoveMessagesIntegrationTest extends
CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
-
- // need couchbase installed on localhost
- from("direct:start").setHeader(CouchbaseConstants.HEADER_ID,
constant("120770"))
-
.to("couchbase:http://localhost/default?username=root&password=123456&operation='DELETE'")
+ from("direct:start")
+ .to(getConnectionUri() + "&operation=" +
COUCHBASE_DELETE)
.to("mock:result");
}
};
diff --git
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CouchbaseEndpointBuilderFactory.java
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CouchbaseEndpointBuilderFactory.java
index 38e13a2..f6ed0b5 100644
---
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CouchbaseEndpointBuilderFactory.java
+++
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/CouchbaseEndpointBuilderFactory.java
@@ -181,6 +181,34 @@ public interface CouchbaseEndpointBuilderFactory {
return this;
}
/**
+ * If true consumer will return complete document instead data defined
+ * in view.
+ *
+ * The option is a: <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: consumer
+ */
+ default CouchbaseEndpointConsumerBuilder fullDocument(
+ boolean fullDocument) {
+ doSetProperty("fullDocument", fullDocument);
+ return this;
+ }
+ /**
+ * If true consumer will return complete document instead data defined
+ * in view.
+ *
+ * The option will be converted to a <code>boolean</code> type.
+ *
+ * Default: false
+ * Group: consumer
+ */
+ default CouchbaseEndpointConsumerBuilder fullDocument(
+ String fullDocument) {
+ doSetProperty("fullDocument", fullDocument);
+ return this;
+ }
+ /**
* The output limit to use.
*
* The option is a: <code>int</code> type.
@@ -813,6 +841,32 @@ public interface CouchbaseEndpointBuilderFactory {
return this;
}
/**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointConsumerBuilder connectTimeout(
+ long connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointConsumerBuilder connectTimeout(
+ String connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
* Define the operation timeout in milliseconds.
*
* The option is a: <code>long</code> type.
@@ -1174,6 +1228,32 @@ public interface CouchbaseEndpointBuilderFactory {
return this;
}
/**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointProducerBuilder connectTimeout(
+ long connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointProducerBuilder connectTimeout(
+ String connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
* Define the operation timeout in milliseconds.
*
* The option is a: <code>long</code> type.
@@ -1331,6 +1411,32 @@ public interface CouchbaseEndpointBuilderFactory {
return this;
}
/**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option is a: <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointBuilder connectTimeout(
+ long connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
+ * Define the timeoutconnect in milliseconds.
+ *
+ * The option will be converted to a <code>long</code> type.
+ *
+ * Default: 2500
+ * Group: advanced
+ */
+ default AdvancedCouchbaseEndpointBuilder connectTimeout(
+ String connectTimeout) {
+ doSetProperty("connectTimeout", connectTimeout);
+ return this;
+ }
+ /**
* Define the operation timeout in milliseconds.
*
* The option is a: <code>long</code> type.
diff --git a/docs/components/modules/ROOT/pages/couchbase-component.adoc
b/docs/components/modules/ROOT/pages/couchbase-component.adoc
index 00d8017..43fe3e2 100644
--- a/docs/components/modules/ROOT/pages/couchbase-component.adoc
+++ b/docs/components/modules/ROOT/pages/couchbase-component.adoc
@@ -75,7 +75,7 @@ with the following path and query parameters:
|===
-=== Query Parameters (44 parameters):
+=== Query Parameters (46 parameters):
[width="100%",cols="2,5,^1,2",options="header"]
@@ -89,6 +89,7 @@ with the following path and query parameters:
| *consumerProcessedStrategy* (consumer) | Define the consumer Processed
strategy to use | none | String
| *descending* (consumer) | Define if this operation is descending or not |
false | boolean
| *designDocumentName* (consumer) | The design document name to use | beer |
String
+| *fullDocument* (consumer) | If true consumer will return complete document
instead data defined in view | false | boolean
| *limit* (consumer) | The output limit to use | -1 | int
| *rangeEndKey* (consumer) | Define a range for the end key | | String
| *rangeStartKey* (consumer) | Define a range for the start key | | String
@@ -107,6 +108,7 @@ with the following path and query parameters:
| *replicateTo* (producer) | Where to replicate the data | 0 | int
| *startingIdForInsertsFrom* (producer) | Define the starting Id where we are
doing an insert operation | | long
| *additionalHosts* (advanced) | The additional hosts | | String
+| *connectTimeout* (advanced) | Define the timeoutconnect in milliseconds |
2500 | long
| *queryTimeout* (advanced) | Define the operation timeout in milliseconds |
2500 | long
| *synchronous* (advanced) | Sets whether synchronous processing should be
strictly used, or Camel is allowed to use asynchronous processing (if
supported). | false | boolean
| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls
(failed due some error) that should happen before the backoffMultipler should
kick-in. | | int