1
2
3
4
5
6
7
8
9
10 package org.mule.transport.jdbc.config;
11
12 import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
13 import org.mule.config.spring.parsers.ClassOrRefDefinitionParser;
14 import org.mule.config.spring.parsers.MuleDefinitionParser;
15 import org.mule.config.spring.parsers.collection.ChildSingletonMapDefinitionParser;
16 import org.mule.config.spring.parsers.delegate.ParentContextDefinitionParser;
17 import org.mule.config.spring.parsers.generic.ParentDefinitionParser;
18 import org.mule.config.spring.parsers.specific.ObjectFactoryWrapper;
19 import org.mule.config.spring.parsers.specific.TransactionDefinitionParser;
20 import org.mule.config.spring.parsers.specific.properties.NestedMapDefinitionParser;
21 import org.mule.endpoint.URIBuilder;
22 import org.mule.transport.jdbc.JdbcConnector;
23 import org.mule.transport.jdbc.JdbcTransactionFactory;
24
25
26
27
28 public class JdbcNamespaceHandler extends AbstractMuleNamespaceHandler
29 {
30
31 public static final String QUERY_KEY = "queryKey";
32 public static final String[] ADDRESS_ATTRIBUTES = new String[]{QUERY_KEY};
33 public static final String SQL_STATEMENT_FACTORY_PROPERTY = "sqlStatementStrategyFactory";
34
35 public void init()
36 {
37 registerStandardTransportEndpoints(JdbcConnector.JDBC, ADDRESS_ATTRIBUTES).addAlias(QUERY_KEY, URIBuilder.PATH);
38 registerConnectorDefinitionParser(JdbcConnector.class);
39 registerBeanDefinitionParser("dataSource", new ObjectFactoryWrapper("dataSourceFactory"));
40 registerBeanDefinitionParser(SQL_STATEMENT_FACTORY_PROPERTY, new ClassOrRefDefinitionParser(SQL_STATEMENT_FACTORY_PROPERTY));
41 MuleDefinitionParser connectorQuery = new ChildSingletonMapDefinitionParser("query");
42 MuleDefinitionParser endpointQuery = new NestedMapDefinitionParser("properties", "queries");
43 endpointQuery.addCollection("properties");
44 registerMuleBeanDefinitionParser("query", new ParentContextDefinitionParser("connector", connectorQuery).otherwise(endpointQuery));
45 registerBeanDefinitionParser("extractors", new ParentDefinitionParser());
46 registerBeanDefinitionParser("transaction", new TransactionDefinitionParser(JdbcTransactionFactory.class));
47 }
48 }