CAMEL-8329: camel-sql - May not propagate headers for operations with no 
resultset


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1de6f2bf
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1de6f2bf
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1de6f2bf

Branch: refs/heads/camel-2.13.x
Commit: 1de6f2bf7fd2d065e6a3d9bd6298c58abe629d07
Parents: ecf42a1
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Feb 10 09:46:47 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Feb 10 09:47:50 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/component/sql/SqlProducer.java     | 5 +++++
 .../org/apache/camel/component/sql/SqlGeneratedKeysTest.java | 8 ++++++++
 2 files changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1de6f2bf/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 75ff08b..2dcfbc2 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
@@ -156,6 +156,11 @@ public class SqlProducer extends DefaultProducer {
                 }
 
                 if (shouldRetrieveGeneratedKeys) {
+                    // if no OUT message yet then create one and propagate 
headers
+                    if (!exchange.hasOut()) {
+                        
exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders());
+                    }
+
                     if (isResultSet) {
                         // we won't return generated keys for SELECT statements
                         
exchange.getOut().setHeader(SqlConstants.SQL_GENERATED_KEYS_DATA, 
Collections.EMPTY_LIST);

http://git-wip-us.apache.org/repos/asf/camel/blob/1de6f2bf/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 8b6fa7f..54c19b7 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
@@ -106,6 +106,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         exchange.getIn().setBody(new Object[] {"Star Swirl", "Wizard"});
         exchange.getIn().setHeader(SqlConstants.SQL_RETRIEVE_GENERATED_KEYS, 
true);
         exchange.getIn().setHeader(SqlConstants.SQL_GENERATED_COLUMNS, new 
String[]{"ID1", "ID2"});
+        exchange.getIn().setHeader("foo", "123");
 
         // now we send the exchange to the endpoint, and receives the response 
from Camel
         Exchange out = template.send(endpoint, exchange);
@@ -114,6 +115,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         assertNotNull(out);
         assertNotNull(out.getOut());
         
assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA));
+        assertEquals("123", out.getOut().getHeader("foo"));
 
         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: "
@@ -141,6 +143,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         payload.add(new Object[] {"project q", "ASF", "new project q"});
         exchange.getIn().setBody(payload);
         exchange.getIn().setHeader(SqlConstants.SQL_RETRIEVE_GENERATED_KEYS, 
true);
+        exchange.getIn().setHeader("foo", "123");
 
         // now we send the exchange to the endpoint, and receives the response 
from Camel
         Exchange out = template.send(endpoint, exchange);
@@ -149,6 +152,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         assertNotNull(out);
         assertNotNull(out.getOut());
         
assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA));
+        assertEquals("123", out.getOut().getHeader("foo"));
 
         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: "
@@ -175,6 +179,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         exchange.getIn().setBody(new Object[] {"project x", "ASF", "new 
project"});
         exchange.getIn().setHeader(SqlConstants.SQL_RETRIEVE_GENERATED_KEYS, 
true);
         exchange.getIn().setHeader(SqlConstants.SQL_GENERATED_COLUMNS, new 
String[]{"ID"});
+        exchange.getIn().setHeader("foo", "123");
 
         // now we send the exchange to the endpoint, and receives the response 
from Camel
         Exchange out = template.send(endpoint, exchange);
@@ -183,6 +188,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         assertNotNull(out);
         assertNotNull(out.getOut());
         
assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA));
+        assertEquals("123", out.getOut().getHeader("foo"));
 
         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: "
@@ -205,6 +211,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         exchange.getIn().setBody(new Object[] {"project x", "ASF", "new 
project"});
         exchange.getIn().setHeader(SqlConstants.SQL_RETRIEVE_GENERATED_KEYS, 
true);
         exchange.getIn().setHeader(SqlConstants.SQL_GENERATED_COLUMNS, new 
int[]{1});
+        exchange.getIn().setHeader("foo", "123");
 
         // now we send the exchange to the endpoint, and receives the response 
from Camel
         Exchange out = template.send(endpoint, exchange);
@@ -212,6 +219,7 @@ public class SqlGeneratedKeysTest extends CamelTestSupport {
         // assertions of the response
         assertNotNull(out);
         
assertNotNull(out.getOut().getHeader(SqlConstants.SQL_GENERATED_KEYS_DATA));
+        assertEquals("123", out.getOut().getHeader("foo"));
 
         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: "

Reply via email to