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