Package org.mule.module.db.config

Source Code of org.mule.module.db.config.DbNamespaceHandler

/*
* Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/

package org.mule.module.db.config;

import static org.mule.config.spring.handlers.AbstractMuleNamespaceHandler.IgnoredDefinitionParser;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.DATABASE_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.DATA_SOURCE_REF_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.DRIVER_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.HOST_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.LOGIN_TIMEOUT_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.PASSWORD_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.PORT_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.TRANSACTION_ISOLATION_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.URL_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.USER_ATTRIBUTE;
import static org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser.USE_XA_TRANSACTIONS_ATTRIBUTE;
import org.mule.config.spring.parsers.processors.CheckExclusiveAttributeAndText;
import org.mule.config.spring.parsers.processors.CheckExclusiveAttributes;
import org.mule.config.spring.parsers.processors.CheckRequiredAttributes;
import org.mule.module.db.internal.config.domain.connection.PoolingProfileBeanDefinitionParser;
import org.mule.module.db.internal.config.domain.database.DbConfigDefinitionParser;
import org.mule.module.db.internal.config.domain.database.DbConfigFactoryBean;
import org.mule.module.db.internal.config.domain.database.DerbyConfigFactoryBean;
import org.mule.module.db.internal.config.domain.database.MySqlConfigFactoryBean;
import org.mule.module.db.internal.config.domain.database.OracleConfigFactoryBean;
import org.mule.module.db.internal.config.domain.param.InOutParamDefinitionDefinitionParser;
import org.mule.module.db.internal.config.domain.param.InputParamValueBeanDefinitionParser;
import org.mule.module.db.internal.config.domain.param.OutputParamDefinitionDefinitionParser;
import org.mule.module.db.internal.config.domain.query.QueryTemplateBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.BulkExecuteProcessorBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.DeleteProcessorBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.ExecuteDdlProcessorBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.InsertProcessorBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.SelectProcessorDefinitionParser;
import org.mule.module.db.internal.config.processor.StoredProcedureProcessorBeanDefinitionParser;
import org.mule.module.db.internal.config.processor.UpdateProcessorBeanDefinitionParser;

import org.springframework.beans.factory.xml.NamespaceHandlerSupport;

public class DbNamespaceHandler extends NamespaceHandlerSupport
{

    public void init()
    {
        registerBeanDefinitionParser("select", new SelectProcessorDefinitionParser());
        registerBeanDefinitionParser("update", new UpdateProcessorBeanDefinitionParser());
        registerBeanDefinitionParser("delete", new DeleteProcessorBeanDefinitionParser());
        registerBeanDefinitionParser("insert", new InsertProcessorBeanDefinitionParser());
        registerBeanDefinitionParser("execute-ddl", new ExecuteDdlProcessorBeanDefinitionParser());
        registerBeanDefinitionParser("stored-procedure", new StoredProcedureProcessorBeanDefinitionParser());

        BulkExecuteProcessorBeanDefinitionParser bulkExecuteProcessorBeanDefinitionParser = new BulkExecuteProcessorBeanDefinitionParser();
        bulkExecuteProcessorBeanDefinitionParser.registerPreProcessor(new CheckExclusiveAttributeAndText("file"));
        registerBeanDefinitionParser("bulk-execute", bulkExecuteProcessorBeanDefinitionParser);

        registerBeanDefinitionParser("in-param", new InputParamValueBeanDefinitionParser());
        registerBeanDefinitionParser("out-param", new OutputParamDefinitionDefinitionParser());
        registerBeanDefinitionParser("inout-param", new InOutParamDefinitionDefinitionParser());

        registerBeanDefinitionParser("template-query", new QueryTemplateBeanDefinitionParser());
        registerBeanDefinitionParser("template-query-ref", new QueryTemplateBeanDefinitionParser());

        registerConfigDefinitionParsers();

        registerBeanDefinitionParser("pooling-profile", new PoolingProfileBeanDefinitionParser());
    }

    private void registerConfigDefinitionParsers()
    {
        registerBeanDefinitionParser("generic-config", new DbConfigDefinitionParser(DbConfigFactoryBean.class, new CheckExclusiveAttributes(new String[][] {
                new String[] {DRIVER_ATTRIBUTE, URL_ATTRIBUTE, LOGIN_TIMEOUT_ATTRIBUTE, TRANSACTION_ISOLATION_ATTRIBUTE, USE_XA_TRANSACTIONS_ATTRIBUTE},
                new String[] {DATA_SOURCE_REF_ATTRIBUTE}})));

        registerBeanDefinitionParser("derby-config", new DbConfigDefinitionParser(DerbyConfigFactoryBean.class, new CheckExclusiveAttributes(new String[][] {
                new String[] {URL_ATTRIBUTE, LOGIN_TIMEOUT_ATTRIBUTE, TRANSACTION_ISOLATION_ATTRIBUTE, USE_XA_TRANSACTIONS_ATTRIBUTE},
                new String[] {DATA_SOURCE_REF_ATTRIBUTE}})));

        DbConfigDefinitionParser oracleDbConfigFactoryBean = new DbConfigDefinitionParser(OracleConfigFactoryBean.class, new CheckExclusiveAttributes(new String[][] {
                new String[] {URL_ATTRIBUTE, LOGIN_TIMEOUT_ATTRIBUTE, TRANSACTION_ISOLATION_ATTRIBUTE, USE_XA_TRANSACTIONS_ATTRIBUTE},
                new String[] {DATA_SOURCE_REF_ATTRIBUTE}}));
        oracleDbConfigFactoryBean.registerPreProcessor(new CheckRequiredAttributes(new String[][] {{DATA_SOURCE_REF_ATTRIBUTE}, {USER_ATTRIBUTE, PASSWORD_ATTRIBUTE}}));
        oracleDbConfigFactoryBean.addAlias("instance", "database");
        registerBeanDefinitionParser("oracle-config", oracleDbConfigFactoryBean);

        registerBeanDefinitionParser("mysql-config", new DbConfigDefinitionParser(MySqlConfigFactoryBean.class, new CheckExclusiveAttributes(new String[][] {
                new String[] {URL_ATTRIBUTE, LOGIN_TIMEOUT_ATTRIBUTE, TRANSACTION_ISOLATION_ATTRIBUTE, USE_XA_TRANSACTIONS_ATTRIBUTE},
                new String[] {HOST_ATTRIBUTE, PORT_ATTRIBUTE, DATABASE_ATTRIBUTE, LOGIN_TIMEOUT_ATTRIBUTE, TRANSACTION_ISOLATION_ATTRIBUTE, USE_XA_TRANSACTIONS_ATTRIBUTE},
                new String[] {DATA_SOURCE_REF_ATTRIBUTE}})));

        registerIgnoredElement(DbConfigDefinitionParser.CONNECTION_PROPERTIES_ELEMENT_NAME);
        registerIgnoredElement(DbConfigDefinitionParser.PROPERTY_ELEMENT_NAME);
        registerIgnoredElement(DbConfigDefinitionParser.DATA_TYPES_ELEMENT);
        registerIgnoredElement(DbConfigDefinitionParser.DATA_TYPE_ELEMENT);
    }

    private void registerIgnoredElement(String name)
    {
        registerBeanDefinitionParser(name, new IgnoredDefinitionParser());
    }
}
TOP

Related Classes of org.mule.module.db.config.DbNamespaceHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.