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.MuleDefinitionParser;
14 import org.mule.config.spring.parsers.collection.ChildSingletonMapDefinitionParser;
15 import org.mule.config.spring.parsers.delegate.ParentContextDefinitionParser;
16 import org.mule.config.spring.parsers.generic.ParentDefinitionParser;
17 import org.mule.config.spring.parsers.specific.ObjectFactoryWrapper;
18 import org.mule.config.spring.parsers.specific.TransactionDefinitionParser;
19 import org.mule.config.spring.parsers.specific.properties.NestedMapDefinitionParser;
20 import org.mule.endpoint.URIBuilder;
21 import org.mule.transport.jdbc.JdbcConnector;
22 import org.mule.transport.jdbc.JdbcTransactionFactory;
23
24
25 public class JdbcNamespaceHandler extends AbstractMuleNamespaceHandler
26 {
27
28 public static final String QUERY_KEY = "queryKey";
29 public static final String[] ADDRESS_ATTRIBUTES = new String[]{QUERY_KEY};
30
31 public void init()
32 {
33 registerStandardTransportEndpoints(JdbcConnector.JDBC, ADDRESS_ATTRIBUTES).addAlias(QUERY_KEY, URIBuilder.PATH);
34 registerConnectorDefinitionParser(JdbcConnector.class);
35 registerBeanDefinitionParser("dataSource", new ObjectFactoryWrapper("dataSourceFactory"));
36 MuleDefinitionParser connectorQuery = new ChildSingletonMapDefinitionParser("query");
37 MuleDefinitionParser endpointQuery = new NestedMapDefinitionParser("properties", "queries");
38 endpointQuery.addCollection("properties");
39 registerMuleBeanDefinitionParser("query", new ParentContextDefinitionParser("connector", connectorQuery).otherwise(endpointQuery));
40 registerBeanDefinitionParser("extractors", new ParentDefinitionParser());
41 registerBeanDefinitionParser("transaction", new TransactionDefinitionParser(JdbcTransactionFactory.class));
42 }
43
44 }