You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/05/25 09:42:59 UTC
[3/3] git commit: CAMEL-5383: Added header with column names to jdbc
component. Thanks to Devendra Khanolkar for the patch.
CAMEL-5383: Added header with column names to jdbc component. Thanks to Devendra Khanolkar for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4daaa2a7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4daaa2a7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4daaa2a7
Branch: refs/heads/camel-2.11.x
Commit: 4daaa2a7dc55b5ee1ed253e9f2b0cc4410851f03
Parents: 41af3ef
Author: Claus Ibsen <da...@apache.org>
Authored: Sat May 25 09:42:15 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat May 25 09:42:38 2013 +0200
----------------------------------------------------------------------
.../apache/camel/component/jdbc/JdbcConstants.java | 2 +
.../apache/camel/component/jdbc/JdbcProducer.java | 3 +-
.../camel/component/jdbc/JdbcRSMetaDataTest.java | 66 +++++++++++++++
3 files changed, 70 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/4daaa2a7/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcConstants.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcConstants.java
index 0c17663..3a1589a 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcConstants.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcConstants.java
@@ -25,6 +25,8 @@ public final class JdbcConstants {
public static final String JDBC_ROW_COUNT = "CamelJdbcRowCount";
+ public static final String JDBC_COLUMN_NAMES = "CamelJdbcColumnNames";
+
/**
* Boolean input header.
* Set its value to true to retrieve generated keys, default is false
http://git-wip-us.apache.org/repos/asf/camel/blob/4daaa2a7/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
index 3045ec0..fff89fc 100755
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
@@ -35,7 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * @version
+ * @version
*/
public class JdbcProducer extends DefaultProducer {
private static final transient Logger LOG = LoggerFactory.getLogger(JdbcProducer.class);
@@ -223,6 +223,7 @@ public class JdbcProducer extends DefaultProducer {
List<Map<String, Object>> data = extractResultSetData(rs);
exchange.getOut().setHeader(JdbcConstants.JDBC_ROW_COUNT, data.size());
+ exchange.getOut().setHeader(JdbcConstants.JDBC_COLUMN_NAMES, data.get(0).keySet());
exchange.getOut().setBody(data);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/4daaa2a7/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRSMetaDataTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRSMetaDataTest.java b/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRSMetaDataTest.java
new file mode 100644
index 0000000..06bec20
--- /dev/null
+++ b/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRSMetaDataTest.java
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jdbc;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.Test;
+
+public class JdbcRSMetaDataTest extends AbstractJdbcTestSupport {
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testJdbcRSMetaData() {
+ Endpoint directHelloEndpoint = context.getEndpoint("direct:hello");
+ Exchange directHelloExchange = directHelloEndpoint.createExchange();
+
+ directHelloExchange.getIn().setBody("select * from customer order by ID");
+
+ Exchange out = template.send(directHelloEndpoint, directHelloExchange);
+ assertNotNull(out);
+ assertNotNull(out.getOut());
+
+ List<Map<String, Object>> returnValues = out.getOut().getBody(List.class);
+ assertNotNull(returnValues);
+ assertEquals(3, returnValues.size());
+ Map<String, Object> row = returnValues.get(0);
+ assertEquals("cust1", row.get("ID"));
+ assertEquals("jstrachan", row.get("NAME"));
+
+ Set<String> columnNames = (Set<String>) out.getOut().getHeader(JdbcConstants.JDBC_COLUMN_NAMES);
+ assertNotNull(columnNames);
+ assertEquals(2, columnNames.size());
+ assertTrue(columnNames.contains("ID"));
+ assertTrue(columnNames.contains("NAME"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:hello").to("jdbc:testdb?readSize=100");
+ }
+ };
+ }
+
+}