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 public class JdbcNamespaceHandler extends AbstractMuleNamespaceHandler
27 {
28
29 public static final String QUERY_KEY = "queryKey";
30 public static final String[] ADDRESS_ATTRIBUTES = new String[]{QUERY_KEY};
31 public static final String ATTRIBUTE_SQL_STATEMENT_FACTORY = "sqlStatementStrategyFactory";
32
33 public void init()
34 {
35 registerStandardTransportEndpoints(JdbcConnector.JDBC, ADDRESS_ATTRIBUTES).addAlias(QUERY_KEY, URIBuilder.PATH);
36 registerConnectorDefinitionParser(JdbcConnector.class);
37 registerBeanDefinitionParser("dataSource", new ObjectFactoryWrapper("dataSourceFactory"));
38 registerBeanDefinitionParser(ATTRIBUTE_SQL_STATEMENT_FACTORY, new ClassOrRefDefinitionParser(ATTRIBUTE_SQL_STATEMENT_FACTORY));
39 MuleDefinitionParser connectorQuery = new ChildSingletonMapDefinitionParser("query");
40 MuleDefinitionParser endpointQuery = new NestedMapDefinitionParser("properties", "queries");
41 endpointQuery.addCollection("properties");
42 registerMuleBeanDefinitionParser("query", new ParentContextDefinitionParser("connector", connectorQuery).otherwise(endpointQuery));
43 registerBeanDefinitionParser("extractors", new ParentDefinitionParser());
44 registerBeanDefinitionParser("transaction", new TransactionDefinitionParser(JdbcTransactionFactory.class));
45 }
46
47 }