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 2009/02/11 16:28:26 UTC
svn commit: r743363 - in /camel/trunk/components:
camel-jdbc/src/main/java/org/apache/camel/component/jdbc/
camel-jdbc/src/test/java/org/apache/camel/component/jdbc/
camel-sql/src/main/java/org/apache/camel/component/sql/
camel-sql/src/test/java/org/ap...
Author: davsclaus
Date: Wed Feb 11 15:28:26 2009
New Revision: 743363
URL: http://svn.apache.org/viewvc?rev=743363&view=rev
Log:
CAMEL-505: camel-sql and camel-jdbc endpoints can now be created from spring DSL using regular spring bean style
Added:
camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java (contents, props changed)
- copied, changed from r743248, camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlEndpointTest.java
- copied, changed from r743248, camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlPreserveHeaderTest.java
Modified:
camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java
camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
Modified: camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java?rev=743363&r1=743362&r2=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java (original)
+++ camel/trunk/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcEndpoint.java Wed Feb 11 15:28:26 2009
@@ -31,6 +31,9 @@
private int readSize;
private DataSource dataSource;
+ public JdbcEndpoint() {
+ }
+
public JdbcEndpoint(String endpointUri, Component component, DataSource dataSource) {
super(endpointUri, component);
this.dataSource = dataSource;
@@ -48,8 +51,24 @@
return new JdbcProducer(this, dataSource, readSize);
}
+ public int getReadSize() {
+ return readSize;
+ }
+
public void setReadSize(int readSize) {
this.readSize = readSize;
}
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ @Override
+ protected String createEndpointUri() {
+ return "jdbc";
+ }
}
Copied: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java (from r743248, camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java?p2=camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java&p1=camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java&r1=743248&r2=743363&rev=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java (original)
+++ camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java Wed Feb 11 15:28:26 2009
@@ -16,93 +16,24 @@
*/
package org.apache.camel.component.jdbc;
-import java.util.ArrayList;
-import java.util.HashMap;
-import javax.sql.DataSource;
-
-import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.JndiRegistry;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
/**
* @version $Revision$
*/
-public class JdbcRouteTest extends ContextTestSupport {
- private String driverClass = "org.hsqldb.jdbcDriver";
- private String url = "jdbc:hsqldb:mem:camel_jdbc";
- private String user = "sa";
- private String password = "";
- private DataSource ds;
-
- public void testJdbcRoutes() throws Exception {
- // START SNIPPET: invoke
- // first we create our exchange using the endpoint
- Endpoint endpoint = context.getEndpoint("direct:hello");
- Exchange exchange = endpoint.createExchange();
- // then we set the SQL on the in body
- exchange.getIn().setBody("select * from customer order by ID");
-
- // now we send the exchange to the endpoint, and receives the response from Camel
- Exchange out = template.send(endpoint, exchange);
-
- // assertions of the response
- assertNotNull(out);
- assertNotNull(out.getOut());
- ArrayList<HashMap<String, Object>> data = out.getOut().getBody(ArrayList.class);
- assertNotNull("out body could not be converted to an ArrayList - was: "
- + out.getOut().getBody(), data);
- assertEquals(2, data.size());
- HashMap<String, Object> row = data.get(0);
- assertEquals("cust1", row.get("ID"));
- assertEquals("jstrachan", row.get("NAME"));
- row = data.get(1);
- assertEquals("cust2", row.get("ID"));
- assertEquals("nsandhu", row.get("NAME"));
- // END SNIPPET: invoke
- }
-
-
- protected JndiRegistry createRegistry() throws Exception {
- // START SNIPPET: register
- JndiRegistry reg = super.createRegistry();
- reg.bind("testdb", ds);
- return reg;
- // END SNIPPET: register
- }
+public class JdbcEndpointTest extends JdbcRouteTest {
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
- // START SNIPPET: route
- // lets add simple route
public void configure() throws Exception {
- from("direct:hello").to("jdbc:testdb?readSize=100");
+ JdbcEndpoint jdbc = new JdbcEndpoint();
+ jdbc.setDataSource(ds);
+ context.addEndpoint("foo", jdbc);
+
+ from("direct:hello").to("foo");
}
- // END SNIPPET: route
};
}
- protected void setUp() throws Exception {
- DriverManagerDataSource dataSource = new DriverManagerDataSource(url, user, password);
- dataSource.setDriverClassName(driverClass);
- ds = dataSource;
-
- JdbcTemplate jdbc = new JdbcTemplate(ds);
- // START SNIPPET: setup
- jdbc.execute("create table customer (id varchar(15), name varchar(10))");
- jdbc.execute("insert into customer values('cust1','jstrachan')");
- jdbc.execute("insert into customer values('cust2','nsandhu')");
- // END SNIPPET: setup
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- JdbcTemplate jdbc = new JdbcTemplate(ds);
- jdbc.execute("drop table customer");
- }
-}
+}
\ No newline at end of file
Propchange: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcEndpointTest.java
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java?rev=743363&r1=743362&r2=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java (original)
+++ camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcRouteTest.java Wed Feb 11 15:28:26 2009
@@ -32,11 +32,11 @@
* @version $Revision$
*/
public class JdbcRouteTest extends ContextTestSupport {
+ protected DataSource ds;
private String driverClass = "org.hsqldb.jdbcDriver";
private String url = "jdbc:hsqldb:mem:camel_jdbc";
private String user = "sa";
private String password = "";
- private DataSource ds;
public void testJdbcRoutes() throws Exception {
// START SNIPPET: invoke
Modified: camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java?rev=743363&r1=743362&r2=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java (original)
+++ camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java Wed Feb 11 15:28:26 2009
@@ -17,12 +17,13 @@
package org.apache.camel.component.sql;
import java.util.Map;
-
import javax.sql.DataSource;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.IntrospectionSupport;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* @version $Revision:520964 $
@@ -44,11 +45,19 @@
dataSource = mandatoryLookup(dataSourceRef, DataSource.class);
}
- return new SqlEndpoint(uri, remaining.replaceAll("#", "?"), this, dataSource, parameters);
+ JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+ IntrospectionSupport.setProperties(jdbcTemplate, parameters, "template.");
+
+ String query = remaining.replaceAll("#", "?");
+
+ return new SqlEndpoint(uri, this, jdbcTemplate, query);
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
+ public DataSource getDataSource() {
+ return dataSource;
+ }
}
Modified: camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java?rev=743363&r1=743362&r2=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java (original)
+++ camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java Wed Feb 11 15:28:26 2009
@@ -16,16 +16,11 @@
*/
package org.apache.camel.component.sql;
-import java.util.Map;
-
-import javax.sql.DataSource;
-
import org.apache.camel.Component;
import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.util.IntrospectionSupport;
import org.springframework.jdbc.core.JdbcTemplate;
/**
@@ -37,15 +32,11 @@
private JdbcTemplate jdbcTemplate;
private String query;
- public SqlEndpoint(String uri, String query, Component component, DataSource dataSource, Map parameters) throws Exception {
- super(uri, component);
- this.jdbcTemplate = new JdbcTemplate(dataSource);
- IntrospectionSupport.setProperties(jdbcTemplate, parameters, "template.");
- this.query = query;
+ public SqlEndpoint() {
}
- public SqlEndpoint(String endpointUri, JdbcTemplate jdbcTemplate, String query) {
- super(endpointUri);
+ public SqlEndpoint(String uri, Component component, JdbcTemplate jdbcTemplate, String query) {
+ super(uri, component);
this.jdbcTemplate = jdbcTemplate;
this.query = query;
}
@@ -59,7 +50,27 @@
}
public boolean isSingleton() {
- return false;
+ return true;
+ }
+
+ public JdbcTemplate getJdbcTemplate() {
+ return jdbcTemplate;
+ }
+
+ public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+
+ public String getQuery() {
+ return query;
}
+ public void setQuery(String query) {
+ this.query = query;
+ }
+
+ @Override
+ protected String createEndpointUri() {
+ return "sql:" + query;
+ }
}
Copied: camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlEndpointTest.java (from r743248, camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlPreserveHeaderTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlEndpointTest.java?p2=camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlEndpointTest.java&p1=camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlPreserveHeaderTest.java&r1=743248&r2=743363&rev=743363&view=diff
==============================================================================
--- camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlPreserveHeaderTest.java (original)
+++ camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlEndpointTest.java Wed Feb 11 15:28:26 2009
@@ -27,7 +27,7 @@
/**
* @version $Revision$
*/
-public class SqlPreserveHeaderTest extends ContextTestSupport {
+public class SqlEndpointTest extends ContextTestSupport {
protected String driverClass = "org.hsqldb.jdbcDriver";
protected String url = "jdbc:hsqldb:mem:camel_jdbc";
protected String user = "sa";
@@ -35,10 +35,9 @@
private DataSource ds;
private JdbcTemplate jdbcTemplate;
- public void testPreserveHeaders() throws Exception {
+ public void testSQLEndpoint() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
- mock.expectedHeaderReceived("foo", "bar");
template.sendBody("direct:start", "");
@@ -66,16 +65,17 @@
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
- public void configure() {
+ public void configure() throws Exception {
ds = new SingleConnectionDataSource(url, user, password, true);
- getContext().getComponent("sql", SqlComponent.class).setDataSource(ds);
+ SqlEndpoint sql = new SqlEndpoint();
+ sql.setJdbcTemplate(new JdbcTemplate(ds));
+ sql.setQuery("select * from projects");
- errorHandler(noErrorHandler());
+ context.addEndpoint("mysql", sql);
from("direct:start")
- .setHeader("foo", constant("bar"))
- .to("sql:select * from projects")
+ .to("mysql")
.to("mock:result");
}
};