You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/04/01 10:30:37 UTC

[2/3] git commit: [CAMEL-7313] Polishing to match camel-jdbc wrt generated keys

[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/bffb51a5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bffb51a5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bffb51a5

Branch: refs/heads/camel-2.13.x
Commit: bffb51a5fdf0f3d23d943f015d8ef3e59b108895
Parents: ab57d3f
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Tue Apr 1 09:59:39 2014 +0200
Committer: Willem Jiang <wi...@gmail.com>
Committed: Tue Apr 1 16:30:07 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/bffb51a5/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/bffb51a5/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/bffb51a5/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));
     }
 }