View Javadoc

1   /*
2    * $Id: JdbcNamespaceHandlerTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.transport.jdbc.config;
11  
12  import org.mule.api.endpoint.ImmutableEndpoint;
13  import org.mule.tck.FunctionalTestCase;
14  import org.mule.transaction.MuleTransactionConfig;
15  import org.mule.transaction.XaTransactionFactory;
16  import org.mule.transport.jdbc.ExtendedQueryRunner;
17  import org.mule.transport.jdbc.JdbcConnector;
18  import org.mule.transport.jdbc.JdbcTransactionFactory;
19  import org.mule.transport.jdbc.sqlstrategy.DefaultSqlStatementStrategyFactory;
20  import org.mule.transport.jdbc.test.TestDataSource;
21  
22  import org.apache.commons.dbutils.QueryRunner;
23  
24  
25  /**
26   * Tests the "jdbc" namespace.
27   */
28  public class JdbcNamespaceHandlerTestCase extends FunctionalTestCase
29  {
30      
31      protected String getConfigResources()
32      {
33          return "jdbc-namespace-config.xml";
34      }
35  
36      public void testWithDataSource() throws Exception
37      {
38          JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector1");
39          assertNotNull(c);        
40  
41          assertTrue(c.getDataSource() instanceof TestDataSource);
42          assertNull(c.getQueries());
43          assertEquals(-1, c.getQueryTimeout());
44      }
45  
46      public void testWithDataSourceViaJndi() throws Exception
47      {
48          JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector2");
49          assertNotNull(c);
50          
51          assertTrue(c.getDataSource() instanceof TestDataSource);
52          assertNull(c.getQueries());
53          assertTrue(c.isConnected());
54          assertTrue(c.isStarted());
55          assertEquals(3, c.getQueryTimeout());
56      }
57      
58      public void testFullyConfigured() throws Exception
59      {
60          JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector3");
61          assertNotNull(c);
62          
63          assertTrue(c.getDataSource() instanceof TestDataSource);
64          
65          assertNotNull(c.getQueries());
66          assertEquals(3, c.getQueries().size());
67  
68          assertTrue(c.isConnected());
69          assertTrue(c.isStarted());
70      }
71      
72      
73      public void testEndpointQueryOverride() throws Exception
74      {
75          JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector3");
76          ImmutableEndpoint testJdbcEndpoint = muleContext.getRegistry()
77              .lookupEndpointFactory()
78              .getInboundEndpoint("testJdbcEndpoint");
79          
80          //On connector, not overridden
81          assertNotNull(c.getQuery(testJdbcEndpoint, "getTest"));
82          
83          //On connector, overridden on endpoint
84          assertNotNull(c.getQuery(testJdbcEndpoint, "getTest2"));
85          assertEquals("OVERRIDDEN VALUE", c.getQuery(testJdbcEndpoint, "getTest2"));
86          
87          //Only on endpoint
88          assertNotNull(c.getQuery(testJdbcEndpoint, "getTest3"));
89  
90          //Does not exist on either
91          assertNull(c.getQuery(testJdbcEndpoint, "getTest4"));
92          assertEquals("3", testJdbcEndpoint.getProperty("queryTimeout"));
93          
94          QueryRunner queryRunner = c.getQueryRunnerFor(testJdbcEndpoint);
95          assertEquals(ExtendedQueryRunner.class, queryRunner.getClass());
96          assertEquals(3, ((ExtendedQueryRunner) queryRunner).getQueryTimeout());
97      }
98      
99      public void testEndpointWithTransaction() throws Exception
100     {
101         ImmutableEndpoint endpoint = muleContext.getRegistry().
102             lookupEndpointBuilder("endpointWithTransaction").buildInboundEndpoint();
103         assertNotNull(endpoint);
104         assertEquals(JdbcTransactionFactory.class, 
105             endpoint.getTransactionConfig().getFactory().getClass());
106         assertEquals(MuleTransactionConfig.ACTION_NONE, 
107             endpoint.getTransactionConfig().getAction());
108         assertEquals("-1", endpoint.getProperty("queryTimeout"));
109     }
110     
111     public void testEndpointWithXaTransaction() throws Exception
112     {
113         ImmutableEndpoint endpoint = muleContext.getRegistry().
114             lookupEndpointBuilder("endpointWithXaTransaction").buildInboundEndpoint();
115         assertNotNull(endpoint);
116         assertEquals(XaTransactionFactory.class, 
117             endpoint.getTransactionConfig().getFactory().getClass());
118         assertEquals(MuleTransactionConfig.ACTION_ALWAYS_BEGIN, 
119             endpoint.getTransactionConfig().getAction());
120     }
121 
122     public void testSqlStatementStrategyFactoryOverride() throws Exception
123     {
124         // class config
125         JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector4");
126         assertNotNull(c.getSqlStatementStrategyFactory());
127         assertTrue(c.getSqlStatementStrategyFactory() instanceof TestSqlStatementStrategyFactory);
128 
129         // ref config
130         c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector5");
131         assertNotNull(c.getSqlStatementStrategyFactory());
132         assertTrue(c.getSqlStatementStrategyFactory() instanceof TestSqlStatementStrategyFactory);
133     }
134 
135     public static class TestSqlStatementStrategyFactory extends DefaultSqlStatementStrategyFactory
136     {
137         
138     }
139 }