View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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   * Registers Bean Definition Parsers for the "jdbc" namespace.
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  }