Java 类javax.annotation.sql.DataSourceDefinition 实例源码

项目:hammock    文件:HammockDataSource.java   
private DataSource createDelegate(DataSourceDefinition dataSourceDefinition) {
    HikariConfig config = new HikariConfig();
    if (dataSourceDefinition.url() != null) {
        config.setJdbcUrl(dataSourceDefinition.url());
    }
    if (dataSourceDefinition.user() != null) {
        config.setUsername(dataSourceDefinition.user());
        config.setPassword(dataSourceDefinition.password());
    }
    if (dataSourceDefinition.maxPoolSize() > 0) {
        config.setMaximumPoolSize(dataSourceDefinition.maxPoolSize());
    }
    config.addDataSourceProperty("cachePrepStmts", "true");
    config.addDataSourceProperty("prepStmtCacheSize", "250");
    config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    return wrap(new HikariDataSource(config));
}
项目:hammock    文件:DataSourceExtension.java   
public void registerDataSources(@Observes AfterBeanDiscovery afterBeanDiscovery) {
    DataSourceDefinition defaultDataSource = dataSourceDefinitions.stream()
            .filter(dsd -> dsd.name().equals(EntityManagerFactoryProvider.DEFAULT_EMF))
            .findFirst()
            .orElse(null);
    Bean<ws.ament.hammock.jpa.DataSourceDefinition> defaultBean = beanDelegates
            .stream()
            .filter(b -> b.getName().equals(EntityManagerFactoryProvider.DEFAULT_EMF))
            .findFirst()
            .orElse(null);
    dataSourceDefinitions.stream().map(dataSourceDefinitionDataSourceDefinitionFunction)
            .map(dataSourceDefinition ->  new DataSourceDelegateBean(dataSourceDefinition.getName(),
                    () -> dataSourceDefinition))
            .forEach(afterBeanDiscovery::addBean);
    beanDelegates.stream().map(bean -> new DataSourceDelegateBean(bean.getName(), () -> bean.create(null)))
            .forEach(afterBeanDiscovery::addBean);
    databaseProducers.stream().map(producer -> new DataSourceDelegateBean(producer, create(producer)))
            .forEach(afterBeanDiscovery::addBean);
    if (defaultBean == null && defaultDataSource == null) {
        afterBeanDiscovery.addBean(new DefaultDataSourceBean());
    }
}
项目:hammock    文件:HammockDataSource.java   
public HammockDataSource(DataSourceDefinition dataSourceDefinition) {
    this.name = dataSourceDefinition.name();
    this.delegate = createDelegate(dataSourceDefinition);
}
项目:hammock    文件:DataSourceExtension.java   
public void findDataSourceDefinition(@Observes @WithAnnotations(DataSourceDefinition.class) ProcessAnnotatedType<?> pat) {
    DataSourceDefinition annotation = pat.getAnnotatedType().getJavaClass().getAnnotation(DataSourceDefinition.class);
    dataSourceDefinitions.add(annotation);
}
项目:hammock    文件:DataSourceExtension.java   
public void findDataSourceDefinitionBeans(@Observes ProcessBean<ws.ament.hammock.jpa.DataSourceDefinition> processBean) {
    beanDelegates.add(processBean.getBean());
}
项目:hammock    文件:DataSourceExtension.java   
public void findDataSourceProducers(@Observes ProcessProducer<?, ws.ament.hammock.jpa.DataSourceDefinition> processProducer) {
    Database database = processProducer.getAnnotatedMember().getAnnotation(Database.class);
    databaseProducers.add(database.value());
}
项目:hammock    文件:DataSourceExtension.java   
private Supplier<ws.ament.hammock.jpa.DataSourceDefinition> create(String name) {
    return () -> CDI.current().select(ws.ament.hammock.jpa.DataSourceDefinition.class)
            .select(database(name))
            .get();
}