Package com.vladmihalcea.flexypool.config

Source Code of com.vladmihalcea.flexypool.config.AbstractFlexyDataSourceConfiguration

package com.vladmihalcea.flexypool.config;

import com.vladmihalcea.flexypool.FlexyPoolDataSource;
import com.vladmihalcea.flexypool.adaptor.PoolAdapterFactory;
import com.vladmihalcea.flexypool.strategy.IncrementPoolOnTimeoutConnectionAcquiringStrategy;
import com.vladmihalcea.flexypool.strategy.RetryConnectionAcquiringStrategy;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.util.UUID;

/**
* AbstractFlexyDataSourceConfiguration - Abstract Configuration for flexypool data source
*
* @author Vlad Mihalcea
*/
public abstract class AbstractFlexyDataSourceConfiguration<T extends DataSource> {

    public abstract T getPoolingDataSource();

    public abstract Configuration configuration();

    public int getMaxOverflowPoolSize() {
        return 5;
    }

    public int getRetryAttempts() {
        return 2;
    }

    protected Configuration configuration(PoolAdapterFactory<T> poolAdapter) {
        return new Configuration.Builder<T>(
                UUID.randomUUID().toString(),
                getPoolingDataSource(),
                poolAdapter
        ).build();
    }

    @Bean(initMethod = "start", destroyMethod = "stop")
    public FlexyPoolDataSource dataSource() {
        Configuration configuration = configuration();
        return new FlexyPoolDataSource(configuration,
                new IncrementPoolOnTimeoutConnectionAcquiringStrategy.Factory(getMaxOverflowPoolSize()),
                new RetryConnectionAcquiringStrategy.Factory(getRetryAttempts())
        );
    }
}
TOP

Related Classes of com.vladmihalcea.flexypool.config.AbstractFlexyDataSourceConfiguration

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.