diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapterIntegrationTests.java b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapterIntegrationTests.java index a2b54a1d6c..f8031ad1a4 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapterIntegrationTests.java +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/JdbcPollingChannelAdapterIntegrationTests.java @@ -241,6 +241,42 @@ public class JdbcPollingChannelAdapterIntegrationTests { } + @Test + public void testSimplePollForListWithRowMapperAndUpdatePerRowWithMaxRows() { + JdbcPollingChannelAdapter adapter = new JdbcPollingChannelAdapter( + this.embeddedDatabase, "select * from item where status=2"); + adapter.setUpdateSql("update item set status = 10 where id = :id"); + adapter.setUpdatePerRow(true); + adapter.setMaxRowsPerPoll(1); + adapter.setRowMapper(new ItemRowMapper()); + + this.jdbcTemplate.update("insert into item values(1,2)"); + this.jdbcTemplate.update("insert into item values(2,2)"); + + adapter.receive(); + Message message = adapter.receive(); + Object payload = message.getPayload(); + List rows = (List) payload; + assertEquals("Wrong number of elements", 1, rows.size()); + assertTrue("Wrong payload type", rows.get(0) instanceof Item); + Item item = (Item) rows.get(0); + assertEquals("Wrong id", 2, item.getId()); + assertEquals("Wrong status", 2, item.getStatus()); + + int countOfStatusTwo = this.jdbcTemplate + .queryForInt("select count(*) from item where status = 2"); + assertEquals( + "Status not updated incorect number of rows with status 2", 0, + countOfStatusTwo); + + int countOfStatusTen = this.jdbcTemplate + .queryForInt("select count(*) from item where status = 10"); + assertEquals( + "Status not updated incorect number of rows with status 10", 2, + countOfStatusTen); + + } + @Test public void testEmptyPoll() { JdbcPollingChannelAdapter adapter = new JdbcPollingChannelAdapter(