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));
     }
 }

Reply via email to