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