From 7733da651fa74b566bbc95974b678d82aa802b32 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 4 Oct 2019 15:39:22 -0400 Subject: [PATCH] GH-3072: Allow JDBC inbound query changes Resolves https://github.com/spring-projects/spring-integration/issues/3072 * Assert for selectQuery setter --- .../jdbc/JdbcPollingChannelAdapter.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapter.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapter.java index e2d27cebe5..ee3a9e1681 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapter.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapter.java @@ -56,22 +56,22 @@ public class JdbcPollingChannelAdapter extends AbstractMessageSource { private final NamedParameterJdbcOperations jdbcOperations; - private final String selectQuery; - private RowMapper rowMapper; private SqlParameterSource sqlQueryParameterSource; private boolean updatePerRow = false; - private String updateSql; - private SqlParameterSourceFactory sqlParameterSourceFactory = new ExpressionEvaluatingSqlParameterSourceFactory(); private boolean sqlParameterSourceFactorySet; private int maxRows = 0; + private volatile String selectQuery; + + private volatile String updateSql; + /** * Constructor taking {@link DataSource} from which the DB Connection can be * obtained and the select query to execute to retrieve new rows. @@ -89,7 +89,6 @@ public class JdbcPollingChannelAdapter extends AbstractMessageSource { * @param selectQuery query to execute */ public JdbcPollingChannelAdapter(JdbcOperations jdbcOperations, String selectQuery) { - Assert.hasText(selectQuery, "'selectQuery' must be specified."); this.jdbcOperations = new NamedParameterJdbcTemplate(jdbcOperations) { @Override @@ -105,7 +104,7 @@ public class JdbcPollingChannelAdapter extends AbstractMessageSource { }; - this.selectQuery = selectQuery; + setSelectQuery(selectQuery); this.rowMapper = new ColumnMapRowMapper(); } @@ -116,6 +115,16 @@ public class JdbcPollingChannelAdapter extends AbstractMessageSource { } } + /** + * Set the select query. + * @param selectQuery the query. + * @since 5.2.1 + */ + public final void setSelectQuery(String selectQuery) { + Assert.hasText(selectQuery, "'selectQuery' must be specified."); + this.selectQuery = selectQuery; + } + public void setUpdateSql(String updateSql) { this.updateSql = updateSql; }