package org.springframework.cloud.config.java;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.cloud.service.PooledServiceConnectorConfig;
import org.springframework.cloud.service.ServiceConnectorConfig;
import org.springframework.cloud.service.document.MongoDbFactoryConfig;
import org.springframework.cloud.service.messaging.RabbitConnectionFactoryConfig;
import org.springframework.cloud.service.relational.DataSourceConfig;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import javax.sql.DataSource;
/**
* @author Scott Frederick
*/
public interface ServiceConnectionFactory {
DataSource dataSource();
DataSource dataSource(DataSourceConfig dataSourceConfig);
DataSource dataSource(String serviceId);
DataSource dataSource(String serviceId, DataSourceConfig dataSourceConfig);
MongoDbFactory mongoDbFactory();
MongoDbFactory mongoDbFactory(MongoDbFactoryConfig mongoDbFactoryConfig);
MongoDbFactory mongoDbFactory(String serviceId);
MongoDbFactory mongoDbFactory(String serviceId, MongoDbFactoryConfig mongoDbFactoryConfig);
ConnectionFactory rabbitConnectionFactory();
ConnectionFactory rabbitConnectionFactory(RabbitConnectionFactoryConfig rabbitConnectionFactoryConfig);
ConnectionFactory rabbitConnectionFactory(String serviceId);
ConnectionFactory rabbitConnectionFactory(String serviceId,
RabbitConnectionFactoryConfig rabbitConnectionFactoryConfig);
RedisConnectionFactory redisConnectionFactory();
RedisConnectionFactory redisConnectionFactory(PooledServiceConnectorConfig redisConnectionFactoryConfig);
RedisConnectionFactory redisConnectionFactory(String serviceId);
RedisConnectionFactory redisConnectionFactory(String serviceId,
PooledServiceConnectorConfig redisConnectionFactoryConfig);
Object service();
<T> T service(Class<T> serviceConnectorType);
Object service(String serviceId);
<T> T service(String serviceId, Class<T> serviceConnectorType);
<T> T service(String serviceId, Class<T> serviceConnectorType, ServiceConnectorConfig serviceConnectorConfig);
}