Author: romkal
Date: Wed Jun 16 08:33:22 2010
New Revision: 955155

URL: http://svn.apache.org/viewvc?rev=955155&view=rev
Log:
CAMEL-2805: placeholder parameter added to sql endpoint that can be used to 
substitute default # character for parameter placeholder

Modified:
    
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
    
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java

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=955155&r1=955154&r2=955155&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 Jun 16 08:33:22 2010
@@ -45,12 +45,12 @@ public class SqlComponent extends Defaul
         if (dataSourceRef != null) {
             dataSource = CamelContextHelper.mandatoryLookup(getCamelContext(), 
dataSourceRef, DataSource.class);
         }
+        String parameterPlaceholderSubstitute = 
getAndRemoveParameter(parameters, "placeholder", String.class, "#");
         
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
         IntrospectionSupport.setProperties(jdbcTemplate, parameters, 
"template.");
 
-        String query = remaining.replaceAll("#", "?");
-
+        String query = remaining.replaceAll(parameterPlaceholderSubstitute, 
"?");
         return new SqlEndpoint(uri, this, jdbcTemplate, query);
     }
 

Modified: 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java?rev=955155&r1=955154&r2=955155&view=diff
==============================================================================
--- 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
 (original)
+++ 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
 Wed Jun 16 08:33:22 2010
@@ -153,6 +153,19 @@ public class SqlRouteTest extends CamelT
     }
     
     @Test
+    public void testHashesInQuery() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        template.sendBody("direct:no-param-insert", "GPL");
+        mock.assertIsSatisfied();
+        Number received = assertIsInstanceOf(Number.class, 
mock.getReceivedExchanges().get(0).getIn().getHeader(SqlConstants.SQL_UPDATE_COUNT));
+        assertEquals(1, received.intValue());
+        Map projectNameInserted = jdbcTemplate.queryForMap("select project, 
license from projects where id = 5");
+        assertEquals("#", projectNameInserted.get("PROJECT"));
+        assertEquals("GPL", projectNameInserted.get("LICENSE"));
+    }
+    
+    @Test
     public void testBodyButNoParams() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedMessageCount(1);
@@ -208,6 +221,8 @@ public class SqlRouteTest extends CamelT
                 from("direct:insert").to("sql:insert into projects values (#, 
#, #)").to("mock:result");
                 
                 from("direct:no-param").to("sql:select * from projects order 
by id").to("mock:result");
+                
+                from("direct:no-param-insert").to("sql:insert into projects 
values (5, '#', param)?placeholder=param").to("mock:result");
             }
         };
     }


Reply via email to