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