Repository: camel Updated Branches: refs/heads/camel-2.12.x 0c228d788 -> c9bf52c97 refs/heads/camel-2.13.x ab57d3f03 -> bffb51a5f refs/heads/master cd733ddf0 -> e65b6f600
[CAMEL-7313] Polishing to match camel-jdbc wrt generated keys Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e65b6f60 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e65b6f60 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e65b6f60 Branch: refs/heads/master Commit: e65b6f6005e2414438fdff8f0413797e2d3f4427 Parents: cd733dd Author: Grzegorz Grzybek <[email protected]> Authored: Tue Apr 1 09:59:39 2014 +0200 Committer: Willem Jiang <[email protected]> Committed: Tue Apr 1 16:22:03 2014 +0800 ---------------------------------------------------------------------- .../camel/component/sql/SqlConstants.java | 7 ++- .../apache/camel/component/sql/SqlProducer.java | 2 + .../component/sql/SqlGeneratedKeysTest.java | 54 ++++++++++---------- 3 files changed, 36 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/e65b6f60/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java ---------------------------------------------------------------------- diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java index dc9f65e..42330c4 100644 --- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java +++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConstants.java @@ -42,7 +42,12 @@ public final class SqlConstants { * @see <a href="http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html#execute(java.lang.String, java.lang.String[])"> * java.sql.Statement.execute(java.lang.String, java.lang.String[])</a> */ - public static final String SQL_GENERATED_COLUMNS = "CamelGeneratedColumns"; + public static final String SQL_GENERATED_COLUMNS = "CamelSqlGeneratedColumns"; + + /** + * int output header giving the number of rows of generated keys + */ + public static final String SQL_GENERATED_KEYS_ROW_COUNT = "CamelSqlGeneratedKeysRowCount"; /** * <tt>List<Map<String, Object>></tt> output header containing the generated keys retrieved http://git-wip-us.apache.org/repos/asf/camel/blob/e65b6f60/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java index c09d58f..75ff08b 100644 --- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java +++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java @@ -159,9 +159,11 @@ public class SqlProducer extends DefaultProducer { if (isResultSet) { // we won't return generated keys for SELECT statements exchange.getOut().setHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, Collections.EMPTY_LIST); + exchange.getOut().setHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT, 0); } else { List<Map<String, Object>> generatedKeys = getEndpoint().queryForList(ps.getGeneratedKeys()); exchange.getOut().setHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, generatedKeys); + exchange.getOut().setHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT, generatedKeys.size()); } } http://git-wip-us.apache.org/repos/asf/camel/blob/e65b6f60/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlGeneratedKeysTest.java ---------------------------------------------------------------------- diff --git a/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlGeneratedKeysTest.java b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlGeneratedKeysTest.java index 97e5061..6a381ab 100644 --- a/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlGeneratedKeysTest.java +++ b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlGeneratedKeysTest.java @@ -59,10 +59,10 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { @Override public void configure() throws Exception { getContext().getComponent("sql", SqlComponent.class).setDataSource(db); - from("direct:insert").to("sql:insert into projects (project, license, description) values (#, #, #)").to("mock:result"); - from("direct:batch").to("sql:insert into projects (project, license, description) values (#, #, #)?batch=true").to("mock:result"); - from("direct:select").to("sql:select * from projects order by id asc").to("mock:result"); - from("direct:insert2").to("sql:insert into developers (name, position) values (#, #)").to("mock:result"); + from("direct:insert").to("sql:insert into projects (project, license, description) values (#, #, #)"); + from("direct:batch").to("sql:insert into projects (project, license, description) values (#, #, #)?batch=true"); + from("direct:select").to("sql:select * from projects order by id asc"); + from("direct:insert2").to("sql:insert into developers (name, position) values (#, #)"); } }; } @@ -83,17 +83,17 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // assertions of the response assertNotNull(out); assertNotNull(out.getOut()); - assertNotNull(out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); + assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertNotNull("out body could not be converted to a List - was: " - + out.getIn().getBody(), generatedKeys); + + out.getOut().getBody(), generatedKeys); assertEquals(1, generatedKeys.get(0).size()); Map<String, Object> row = generatedKeys.get(0); assertEquals("auto increment value should be 3", Integer.valueOf(3), row.get("ID")); - assertEquals("generated keys row count should be one", 1, generatedKeys.size()); + assertEquals("generated keys row count should be one", 1, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } @Test @@ -113,18 +113,18 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // assertions of the response assertNotNull(out); assertNotNull(out.getOut()); - assertNotNull(out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); + assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertNotNull("out body could not be converted to a List - was: " - + out.getIn().getBody(), generatedKeys); + + out.getOut().getBody(), generatedKeys); assertEquals(2, generatedKeys.get(0).size()); Map<String, Object> row = generatedKeys.get(0); assertEquals("auto increment value of ID1 should be 5", Integer.valueOf(5), row.get("ID1")); assertEquals("auto increment value of ID2 should be 6", Integer.valueOf(6), row.get("ID2")); - assertEquals("generated keys row count should be one", 1, generatedKeys.size()); + assertEquals("generated keys row count should be one", 1, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } @Test @@ -148,11 +148,11 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // assertions of the response assertNotNull(out); assertNotNull(out.getOut()); - assertNotNull(out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); + assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertNotNull("out body could not be converted to a List - was: " - + out.getIn().getBody(), generatedKeys); + + out.getOut().getBody(), generatedKeys); // it seems not to work with Derby... assertEquals(4, generatedKeys.size()); @@ -161,7 +161,8 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { for (Map<String, Object> row: generatedKeys) { assertEquals("auto increment value should be " + id, Integer.valueOf(id++), row.get("ID")); } - + + assertEquals("generated keys row count should be four", 4, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } @Test @@ -181,17 +182,17 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // assertions of the response assertNotNull(out); assertNotNull(out.getOut()); - assertNotNull(out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); + assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertNotNull("out body could not be converted to a List - was: " - + out.getIn().getBody(), generatedKeys); + + out.getOut().getBody(), generatedKeys); assertEquals(1, generatedKeys.get(0).size()); Map<String, Object> row = generatedKeys.get(0); assertEquals("auto increment value should be 3", Integer.valueOf(3), row.get("ID")); - assertEquals("generated keys row count should be one", 1, generatedKeys.size()); + assertEquals("generated keys row count should be one", 1, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } @Test @@ -210,17 +211,17 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // assertions of the response assertNotNull(out); - assertNotNull(out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); + assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA)); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertNotNull("out body could not be converted to a List - was: " - + out.getIn().getBody(), generatedKeys); + + out.getOut().getBody(), generatedKeys); assertEquals(1, generatedKeys.get(0).size()); Map<String, Object> row = generatedKeys.get(0); assertEquals("auto increment value should be 3", Integer.valueOf(3), row.get("ID")); - assertEquals("generated keys row count should be one", 1, generatedKeys.size()); + assertEquals("generated keys row count should be one", 1, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } @Test @@ -255,10 +256,11 @@ public class SqlGeneratedKeysTest extends CamelTestSupport { // now we send the exchange to the endpoint, and receives the response from Camel Exchange out = template.send(endpoint, exchange); - List<Map<String, Object>> result = out.getIn().getBody(List.class); + List<Map<String, Object>> result = out.getOut().getBody(List.class); assertEquals("We should get 3 projects", 3, result.size()); - List<Map<String, Object>> generatedKeys = out.getIn().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); + List<Map<String, Object>> generatedKeys = out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, List.class); assertEquals("We should not get any keys", 0, generatedKeys.size()); + assertEquals("We should not get any keys", 0, out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_ROW_COUNT)); } }
