You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/09/06 18:24:36 UTC
[camel] branch camel-2.23.x updated: CAMEL-13951: Allow to set
custom transaction propagation for camel-sql aggregation repository,
which can be needed for Postgres with optimistick locking.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-2.23.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.23.x by this push:
new fba024b CAMEL-13951: Allow to set custom transaction propagation for camel-sql aggregation repository, which can be needed for Postgres with optimistick locking.
fba024b is described below
commit fba024b7c03869e323edb55e30d5ab93597fc873
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 6 20:22:23 2019 +0200
CAMEL-13951: Allow to set custom transaction propagation for camel-sql aggregation repository, which can be needed for Postgres with optimistick locking.
---
.../aggregate/jdbc/JdbcAggregationRepository.java | 53 +++++++++++-----------
1 file changed, 27 insertions(+), 26 deletions(-)
diff --git a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
index a3facf5..4fdca6f 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepository.java
@@ -66,6 +66,7 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
private DataSource dataSource;
private TransactionTemplate transactionTemplate;
private TransactionTemplate transactionTemplateReadOnly;
+ private int propagationBehavior = TransactionDefinition.PROPAGATION_REQUIRED;
private JdbcTemplate jdbcTemplate;
private LobHandler lobHandler = new DefaultLobHandler();
private String repositoryName;
@@ -95,7 +96,7 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
}
/**
- * @param repositoryName the repositoryName to set
+ * Sets the name of the repository
*/
public final void setRepositoryName(String repositoryName) {
this.repositoryName = repositoryName;
@@ -105,15 +106,15 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
this.transactionManager = transactionManager;
transactionTemplate = new TransactionTemplate(transactionManager);
- transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
+ transactionTemplate.setPropagationBehavior(propagationBehavior);
transactionTemplateReadOnly = new TransactionTemplate(transactionManager);
- transactionTemplateReadOnly.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
+ transactionTemplateReadOnly.setPropagationBehavior(propagationBehavior);
transactionTemplateReadOnly.setReadOnly(true);
}
/**
- * @param dataSource The DataSource to use for accessing the database
+ * Sets the DataSource to use for accessing the database
*/
public final void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
@@ -177,7 +178,6 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
* @param key the correlation key
* @param exchange the aggregated exchange
* @param repositoryName The name of the table
- * @throws Exception
*/
protected void update(final CamelContext camelContext, final String key, final Exchange exchange, String repositoryName) throws Exception {
StringBuilder queryBuilder = new StringBuilder()
@@ -208,7 +208,6 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
* @param correlationId the correlation key
* @param exchange the aggregated exchange to insert. The headers will be persisted but not the properties.
* @param repositoryName The name of the table
- * @throws Exception
*/
protected void insert(final CamelContext camelContext, final String correlationId, final Exchange exchange, String repositoryName) throws Exception {
// The default totalParameterIndex is 2 for ID and Exchange. Depending on logic this will be increased
@@ -380,8 +379,6 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
/**
* If recovery is enabled then a background task is run every x'th time to scan for failed exchanges to recover
* and resubmit. By default this interval is 5000 millis.
- * @param interval the interval
- * @param timeUnit the time unit
*/
public void setRecoveryInterval(long interval, TimeUnit timeUnit) {
this.recoveryInterval = timeUnit.toMillis(interval);
@@ -400,9 +397,8 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
}
/**
- *
- * @param useRecovery Whether or not recovery is enabled. This option is by default true. When enabled the Camel
- * Aggregator automatic recover failed aggregated exchange and have them resubmittedd
+ * Whether or not recovery is enabled. This option is by default true. When enabled the Camel
+ * Aggregator automatic recover failed aggregated exchange and have them resubmitted.
*/
public void setUseRecovery(boolean useRecovery) {
this.useRecovery = useRecovery;
@@ -421,11 +417,9 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
}
/**
- *
- * @param deadLetterUri An endpoint uri for a Dead Letter Channel where exhausted recovered Exchanges will be
- * moved. If this option is used then the maximumRedeliveries option must also be provided.
- * Important note : if the deadletter route throws an exception, it will be send again to DLQ
- * until it succeed !
+ * An endpoint uri for a Dead Letter Channel where exhausted recovered Exchanges will be
+ * moved. If this option is used then the maximumRedeliveries option must also be provided.
+ * Important note : if the deadletter route throws an exception, it will be send again to DLQ until it succeed !
*/
public void setDeadLetterUri(String deadLetterUri) {
this.deadLetterUri = deadLetterUri;
@@ -436,10 +430,8 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
}
/**
- *
- * @param returnOldExchange Whether the get operation should return the old existing Exchange if any existed.
- * By default this option is false to optimize as we do not need the old exchange when
- * aggregating
+ * Whether the get operation should return the old existing Exchange if any existed.
+ * By default this option is false to optimize as we do not need the old exchange when aggregating.
*/
public void setReturnOldExchange(boolean returnOldExchange) {
this.returnOldExchange = returnOldExchange;
@@ -456,6 +448,7 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
/**
* Allows to store headers as String which is human readable. By default this option is disabled,
* storing the headers in binary format.
+ *
* @param headersToStoreAsText the list of headers to store as String
*/
public void setHeadersToStoreAsText(List<String> headersToStoreAsText) {
@@ -463,9 +456,8 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
}
/**
- *
- * @param storeBodyAsText Whether to store the message body as String which is human readable.
- * By default this option is false storing the body in binary format.
+ * Whether to store the message body as String which is human readable.
+ * By default this option is false storing the body in binary format.
*/
public void setStoreBodyAsText(boolean storeBodyAsText) {
this.storeBodyAsText = storeBodyAsText;
@@ -479,15 +471,24 @@ public class JdbcAggregationRepository extends ServiceSupport implements Recover
this.allowSerializedHeaders = allowSerializedHeaders;
}
- /**
- * @return the lobHandler
+ public int getPropagationBehavior() {
+ return propagationBehavior;
+ }
+
+ /**
+ * Sets propagation behavior to use with spring transaction template which are used for database access.
+ * The default is TransactionDefinition.PROPAGATION_REQUIRED.
*/
+ public void setPropagationBehavior(int propagationBehavior) {
+ this.propagationBehavior = propagationBehavior;
+ }
+
public LobHandler getLobHandler() {
return lobHandler;
}
/**
- * @param lobHandler the lobHandler to set
+ * Sets a custom LobHandler to use
*/
public void setLobHandler(LobHandler lobHandler) {
this.lobHandler = lobHandler;