io.agroal.api.AgroalDataSource Java Examples
The following examples show how to use
io.agroal.api.AgroalDataSource.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DevModeTestEndpoint.java From quarkus with Apache License 2.0 | 7 votes |
@GET @Path("/{dataSourceName}/{jdbcUrl}/{username}/{minSize}/{maxSize}") public String test(@PathParam("dataSourceName") String dataSourceName, @PathParam("jdbcUrl") String jdbcUrl, @PathParam("username") String username, @PathParam("minSize") int minSize, @PathParam("maxSize") int maxSize) throws Exception { AgroalDataSource ds; if (dataSourceName.equals("default")) { ds = CDI.current().select(AgroalDataSource.class) .get(); } else { ds = CDI.current().select(AgroalDataSource.class, new DataSource.DataSourceLiteral(dataSourceName)) .get(); } testDataSource(dataSourceName, ds, URLDecoder.decode(jdbcUrl, StandardCharsets.UTF_8.name()), username, minSize, maxSize); return "ok"; }
Example #2
Source File: NamedDataSourceConfigTest.java From quarkus with Apache License 2.0 | 6 votes |
private static void dataSourceAssert(String dataSourceName, AgroalDataSource dataSource, String jdbcUrl, String username, int minSize, int maxSize) throws SQLException { AgroalConnectionPoolConfiguration configuration = null; try { configuration = dataSource.getConfiguration().connectionPoolConfiguration(); } catch (NullPointerException e) { // we catch the NPE here as we have a proxy and we can't test dataSource directly fail("Datasource " + dataSourceName + " should not be null"); } assertEquals(jdbcUrl, configuration.connectionFactoryConfiguration().jdbcUrl()); assertEquals(username, configuration.connectionFactoryConfiguration().principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); assertFalse(dataSource.getConfiguration().metricsEnabled()); // metrics not enabled by default try (Connection connection = dataSource.getConnection()) { } }
Example #3
Source File: UnknownDriverConfigTest.java From quarkus with Apache License 2.0 | 6 votes |
private static void testDataSource(AgroalDataSource dataSource, String username, int minSize, int maxSize, int initialSize, Duration backgroundValidationInterval, Duration acquisitionTimeout, Duration leakDetectionInterval, Duration idleRemovalInterval, Duration maxLifetime, String newConnectionSql) throws SQLException { AgroalConnectionPoolConfiguration configuration = dataSource.getConfiguration().connectionPoolConfiguration(); AgroalConnectionFactoryConfiguration agroalConnectionFactoryConfiguration = configuration .connectionFactoryConfiguration(); assertEquals("jdbc:h2:tcp://localhost/mem:default", agroalConnectionFactoryConfiguration.jdbcUrl()); assertEquals(username, agroalConnectionFactoryConfiguration.principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); assertEquals(initialSize, configuration.initialSize()); assertEquals(backgroundValidationInterval, configuration.validationTimeout()); assertEquals(acquisitionTimeout, configuration.acquisitionTimeout()); assertEquals(leakDetectionInterval, configuration.leakTimeout()); assertEquals(idleRemovalInterval, configuration.reapTimeout()); assertEquals(maxLifetime, configuration.maxLifetime()); assertTrue(configuration.transactionIntegration() instanceof NarayanaTransactionIntegration); assertEquals(AgroalConnectionFactoryConfiguration.TransactionIsolation.SERIALIZABLE, agroalConnectionFactoryConfiguration.jdbcTransactionIsolation()); assertTrue(agroalConnectionFactoryConfiguration.trackJdbcResources()); assertTrue(dataSource.getConfiguration().metricsEnabled()); assertEquals(newConnectionSql, agroalConnectionFactoryConfiguration.initialSql()); try (Connection connection = dataSource.getConnection()) { } }
Example #4
Source File: MultipleDataSourcesTestUtil.java From quarkus with Apache License 2.0 | 6 votes |
static void testDataSource(String dataSourceName, AgroalDataSource dataSource, String jdbcUrl, String username, int minSize, int maxSize) throws SQLException { AgroalConnectionPoolConfiguration configuration = null; try { configuration = dataSource.getConfiguration().connectionPoolConfiguration(); } catch (NullPointerException e) { // we catch the NPE here as we have a proxy and we can't test dataSource directly fail("Datasource " + dataSourceName + " should not be null"); } assertEquals(jdbcUrl, configuration.connectionFactoryConfiguration().jdbcUrl()); assertEquals(username, configuration.connectionFactoryConfiguration().principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); try (Connection connection = dataSource.getConnection()) { } }
Example #5
Source File: LegacyMultipleDataSourcesConfigTest.java From quarkus with Apache License 2.0 | 6 votes |
private static void testDataSource(String dataSourceName, AgroalDataSource dataSource, String jdbcUrl, String username, int minSize, int maxSize) throws SQLException { AgroalConnectionPoolConfiguration configuration = null; try { configuration = dataSource.getConfiguration().connectionPoolConfiguration(); } catch (NullPointerException e) { // we catch the NPE here as we have a proxy and we can't test dataSource directly fail("Datasource " + dataSourceName + " should not be null"); } assertEquals(jdbcUrl, configuration.connectionFactoryConfiguration().jdbcUrl()); assertEquals(username, configuration.connectionFactoryConfiguration().principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); try (Connection connection = dataSource.getConnection()) { } }
Example #6
Source File: LegacyDefaultDataSourceConfigTest.java From quarkus with Apache License 2.0 | 6 votes |
private static void testDataSource(AgroalDataSource dataSource, String username, int minSize, int maxSize, int initialSize, Duration backgroundValidationInterval, Duration acquisitionTimeout, Duration leakDetectionInterval, Duration idleRemovalInterval, Duration maxLifetime, String newConnectionSql) throws SQLException { AgroalConnectionPoolConfiguration configuration = dataSource.getConfiguration().connectionPoolConfiguration(); AgroalConnectionFactoryConfiguration agroalConnectionFactoryConfiguration = configuration .connectionFactoryConfiguration(); assertEquals("jdbc:h2:tcp://localhost/mem:default", agroalConnectionFactoryConfiguration.jdbcUrl()); assertEquals(username, agroalConnectionFactoryConfiguration.principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); assertEquals(initialSize, configuration.initialSize()); assertEquals(backgroundValidationInterval, configuration.validationTimeout()); assertEquals(acquisitionTimeout, configuration.acquisitionTimeout()); assertEquals(leakDetectionInterval, configuration.leakTimeout()); assertEquals(idleRemovalInterval, configuration.reapTimeout()); assertEquals(maxLifetime, configuration.maxLifetime()); assertTrue(configuration.transactionIntegration() instanceof NarayanaTransactionIntegration); assertEquals(AgroalConnectionFactoryConfiguration.TransactionIsolation.SERIALIZABLE, agroalConnectionFactoryConfiguration.jdbcTransactionIsolation()); assertTrue(agroalConnectionFactoryConfiguration.trackJdbcResources()); assertTrue(dataSource.getConfiguration().metricsEnabled()); assertEquals(newConnectionSql, agroalConnectionFactoryConfiguration.initialSql()); try (Connection connection = dataSource.getConnection()) { } }
Example #7
Source File: DefaultDataSourceConfigTest.java From quarkus with Apache License 2.0 | 6 votes |
private static void testDataSource(AgroalDataSource dataSource, String username, int minSize, int maxSize, int initialSize, Duration backgroundValidationInterval, Duration acquisitionTimeout, Duration leakDetectionInterval, Duration idleRemovalInterval, Duration maxLifetime, String newConnectionSql) throws SQLException { AgroalConnectionPoolConfiguration configuration = dataSource.getConfiguration().connectionPoolConfiguration(); AgroalConnectionFactoryConfiguration agroalConnectionFactoryConfiguration = configuration .connectionFactoryConfiguration(); assertEquals("jdbc:h2:tcp://localhost/mem:default", agroalConnectionFactoryConfiguration.jdbcUrl()); assertEquals(username, agroalConnectionFactoryConfiguration.principal().getName()); assertEquals(minSize, configuration.minSize()); assertEquals(maxSize, configuration.maxSize()); assertEquals(initialSize, configuration.initialSize()); assertEquals(backgroundValidationInterval, configuration.validationTimeout()); assertEquals(acquisitionTimeout, configuration.acquisitionTimeout()); assertEquals(leakDetectionInterval, configuration.leakTimeout()); assertEquals(idleRemovalInterval, configuration.reapTimeout()); assertEquals(maxLifetime, configuration.maxLifetime()); assertTrue(configuration.transactionIntegration() instanceof NarayanaTransactionIntegration); assertEquals(AgroalConnectionFactoryConfiguration.TransactionIsolation.SERIALIZABLE, agroalConnectionFactoryConfiguration.jdbcTransactionIsolation()); assertTrue(agroalConnectionFactoryConfiguration.trackJdbcResources()); assertTrue(dataSource.getConfiguration().metricsEnabled()); assertEquals(newConnectionSql, agroalConnectionFactoryConfiguration.initialSql()); try (Connection connection = dataSource.getConnection()) { } }
Example #8
Source File: AgroalCounter.java From quarkus with Apache License 2.0 | 6 votes |
private AgroalDataSource getDataSource() { AgroalDataSource dsLocal = dataSource; if (dsLocal == null) { synchronized (this) { dsLocal = dataSource; if (dsLocal == null) { if (dataSourceName == null || DataSourceUtil.isDefault(dataSourceName)) { dataSource = dsLocal = Arc.container().instance(AgroalDataSource.class).get(); } else { dataSource = dsLocal = Arc.container() .instance(AgroalDataSource.class, new DataSourceLiteral(dataSourceName)) .get(); } } } } return dsLocal; }
Example #9
Source File: AgroalGauge.java From quarkus with Apache License 2.0 | 6 votes |
private AgroalDataSource getDataSource() { AgroalDataSource dsLocal = dataSource; if (dsLocal == null) { synchronized (this) { dsLocal = dataSource; if (dsLocal == null) { if (dataSourceName == null || DataSourceUtil.isDefault(dataSourceName)) { dataSource = dsLocal = Arc.container().instance(AgroalDataSource.class).get(); } else { dataSource = dsLocal = Arc.container() .instance(AgroalDataSource.class, new DataSourceLiteral(dataSourceName)) .get(); } } } } return dsLocal; }
Example #10
Source File: DataSourceTenantConnectionResolver.java From quarkus with Apache License 2.0 | 6 votes |
@Override public ConnectionProvider resolve(String tenantId) { LOG.debugv("resolve({0})", tenantId); final MultiTenancyStrategy strategy = jpaConfig.getMultiTenancyStrategy(); LOG.debugv("multitenancy strategy: {0}", strategy); AgroalDataSource dataSource = tenantDataSource(jpaConfig, tenantId, strategy); if (dataSource == null) { throw new IllegalStateException("No instance of datasource found for tenant: " + tenantId); } if (strategy == MultiTenancyStrategy.SCHEMA) { return new TenantConnectionProvider(tenantId, dataSource); } return new QuarkusConnectionProvider(dataSource); }
Example #11
Source File: QuarkusQuartzConnectionPoolProvider.java From quarkus with Apache License 2.0 | 6 votes |
public QuarkusQuartzConnectionPoolProvider() { final ArcContainer container = Arc.container(); final InstanceHandle<AgroalDataSource> instanceHandle; final boolean useDefaultDataSource = "QUARKUS_QUARTZ_DEFAULT_DATASOURCE".equals(dataSourceName); if (useDefaultDataSource) { instanceHandle = container.instance(AgroalDataSource.class); } else { instanceHandle = container.instance(AgroalDataSource.class, new DataSourceLiteral(dataSourceName)); } if (instanceHandle.isAvailable()) { this.dataSource = instanceHandle.get(); } else { String message = String.format( "JDBC Store configured but '%s' datasource is missing. You can configure your datasource by following the guide available at: https://quarkus.io/guides/datasource", useDefaultDataSource ? "default" : dataSourceName); throw new IllegalStateException(message); } }
Example #12
Source File: DataSourceTenantConnectionResolver.java From quarkus with Apache License 2.0 | 5 votes |
/** * Returns either the default data source or the tenant specific one. * * @param tenantId Tenant identifier. The value is required (non-{@literal null}) in case of * {@link MultiTenancyStrategy#DATABASE}. * @param strategy Current multitenancy strategy Required value that cannot be {@literal null}. * * @return Data source. */ private static AgroalDataSource tenantDataSource(JPAConfig jpaConfig, String tenantId, MultiTenancyStrategy strategy) { if (strategy != MultiTenancyStrategy.SCHEMA) { return Arc.container().instance(AgroalDataSource.class, new DataSource.DataSourceLiteral(tenantId)).get(); } String dataSourceName = jpaConfig.getMultiTenancySchemaDataSource(); if (dataSourceName == null) { AgroalDataSource dataSource = Arc.container().instance(AgroalDataSource.class).get(); return createFrom(dataSource.getConfiguration()); } return Arc.container().instance(AgroalDataSource.class, new DataSource.DataSourceLiteral(dataSourceName)).get(); }
Example #13
Source File: DataSources.java From quarkus with Apache License 2.0 | 5 votes |
@PreDestroy public void stop() { for (AgroalDataSource dataSource : dataSources.values()) { if (dataSource != null) { dataSource.close(); } } }
Example #14
Source File: QuarkusConnectionProvider.java From quarkus with Apache License 2.0 | 5 votes |
@Override public boolean isUnwrappableAs(final Class unwrapType) { return ConnectionProvider.class.equals(unwrapType) || QuarkusConnectionProvider.class.isAssignableFrom(unwrapType) || DataSource.class.isAssignableFrom(unwrapType) || AgroalDataSource.class.isAssignableFrom(unwrapType); }
Example #15
Source File: QuarkusConnectionProvider.java From quarkus with Apache License 2.0 | 5 votes |
@Override public <T> T unwrap(final Class<T> unwrapType) { if (ConnectionProvider.class.equals(unwrapType) || QuarkusConnectionProvider.class.isAssignableFrom(unwrapType)) { return (T) this; } else if (DataSource.class.isAssignableFrom(unwrapType) || AgroalDataSource.class.isAssignableFrom(unwrapType)) { return (T) dataSource; } else { throw new UnknownUnwrapTypeException(unwrapType); } }
Example #16
Source File: AgroalDataSourceFactory.java From kumuluzee with MIT License | 5 votes |
public static AgroalDataSource createDataSource(DataSourceConfig dsc, boolean jtaPresent) { AgroalDataSourceConfigurationSupplier dataSourceConfig = new AgroalDataSourceConfigurationSupplier(); AgroalConnectionPoolConfigurationSupplier poolConfig = dataSourceConfig.connectionPoolConfiguration(); AgroalConnectionFactoryConfigurationSupplier connectionFactoryConfig = poolConfig.connectionFactoryConfiguration(); if (!jtaPresent) { dataSourceConfig.dataSourceImplementation(DataSourceImplementation.HIKARI); } else { poolConfig.transactionIntegration( JtaProvider.getInstance().getTransactionIntegration() ); } if (!StringUtils.isNullOrEmpty( dsc.getDriverClass() )) { connectionFactoryConfig.connectionProviderClassName(dsc.getDriverClass()); } else if (!StringUtils.isNullOrEmpty( dsc.getDataSourceClass( ))) { connectionFactoryConfig.connectionProviderClassName(dsc.getDataSourceClass()); } if (!StringUtils.isNullOrEmpty( dsc.getConnectionUrl() )) { connectionFactoryConfig.jdbcUrl(dsc.getConnectionUrl()); } setDatabaseCredentials(connectionFactoryConfig, dsc.getUsername(), dsc.getPassword()); setConnectionPoolConfiguration(poolConfig, connectionFactoryConfig, dsc.getPool(), !jtaPresent); dsc.getProps().forEach(connectionFactoryConfig::jdbcProperty); try { return AgroalDataSource.from( dataSourceConfig ); } catch (SQLException e) { throw new KumuluzServerException("Failed to create DataSource", e); } }
Example #17
Source File: AgroalDataSourceFactory.java From kumuluzee with MIT License | 5 votes |
public static AgroalDataSource createXaDataSource(XaDataSourceConfig xdsc, boolean jtaPresent) { AgroalDataSourceConfigurationSupplier xaDataSourceConfig = new AgroalDataSourceConfigurationSupplier(); AgroalConnectionPoolConfigurationSupplier poolConfig = xaDataSourceConfig.connectionPoolConfiguration(); AgroalConnectionFactoryConfigurationSupplier connectionFactoryConfig = poolConfig.connectionFactoryConfiguration(); if (jtaPresent) { poolConfig.transactionIntegration( JtaProvider.getInstance().getTransactionIntegration() ); } if (!StringUtils.isNullOrEmpty( xdsc.getXaDatasourceClass() )) { connectionFactoryConfig.connectionProviderClassName( xdsc.getXaDatasourceClass() ); } setDatabaseCredentials(connectionFactoryConfig, xdsc.getUsername(), xdsc.getPassword()); setConnectionPoolConfiguration(poolConfig, connectionFactoryConfig, xdsc.getPool(), false); xdsc.getProps().forEach(connectionFactoryConfig::jdbcProperty); try { return AgroalDataSource.from( xaDataSourceConfig ); } catch (SQLException e) { throw new KumuluzServerException("Failed to create XaDataSource", e); } }
Example #18
Source File: AgroalCPDataSourceProvider.java From vertx-jdbc-client with Apache License 2.0 | 5 votes |
@Override public int maximumPoolSize(DataSource dataSource, JsonObject config) throws SQLException { if (dataSource instanceof AgroalDataSource) { return ((AgroalDataSource) dataSource).getConfiguration().connectionPoolConfiguration().maxSize(); } return -1; }
Example #19
Source File: DataSourceTenantConnectionResolver.java From quarkus with Apache License 2.0 | 5 votes |
/** * Create a new data source from the given configuration. * * @param config Configuration to use. * * @return New data source instance. */ private static AgroalDataSource createFrom(AgroalDataSourceConfiguration config) { try { return AgroalDataSource.from(config); } catch (SQLException ex) { throw new IllegalStateException("Failed to create a new data source based on the default config", ex); } }
Example #20
Source File: DataSources.java From quarkus with Apache License 2.0 | 5 votes |
public AgroalDataSource getDataSource(String dataSourceName) { return dataSources.computeIfAbsent(dataSourceName, new Function<String, AgroalDataSource>() { @Override public AgroalDataSource apply(String s) { return doCreateDataSource(s); } }); }
Example #21
Source File: AgroalRecorder.java From quarkus with Apache License 2.0 | 5 votes |
public Supplier<AgroalDataSource> agroalDataSourceSupplier(String dataSourceName, @SuppressWarnings("unused") DataSourcesRuntimeConfig dataSourcesRuntimeConfig) { final AgroalDataSource agroalDataSource = DataSources.fromName(dataSourceName); return new Supplier<AgroalDataSource>() { @Override public AgroalDataSource get() { return agroalDataSource; } }; }
Example #22
Source File: DataSourceTenantConnectionResolver.java From quarkus with Apache License 2.0 | 4 votes |
public TenantConnectionProvider(String tenantId, AgroalDataSource dataSource) { super(dataSource); this.tenantId = tenantId; }
Example #23
Source File: QuarkusConnectionProvider.java From quarkus with Apache License 2.0 | 4 votes |
public QuarkusConnectionProvider(final AgroalDataSource dataSource) { this.dataSource = dataSource; }
Example #24
Source File: AgroalDataSourceReplacement.java From quarkus with Apache License 2.0 | 4 votes |
@Substitute static AgroalDataSource from(AgroalDataSourceConfiguration configuration, AgroalDataSourceListener... listeners) throws SQLException { return new DataSource(configuration, listeners); }
Example #25
Source File: AgroalProcessor.java From quarkus with Apache License 2.0 | 4 votes |
@Record(ExecutionTime.RUNTIME_INIT) @BuildStep void generateDataSourceBeans(AgroalRecorder recorder, DataSourcesRuntimeConfig dataSourcesRuntimeConfig, List<AggregatedDataSourceBuildTimeConfigBuildItem> aggregatedBuildTimeConfigBuildItems, SslNativeConfigBuildItem sslNativeConfig, Capabilities capabilities, BuildProducer<SyntheticBeanBuildItem> syntheticBeanBuildItemBuildProducer, BuildProducer<JdbcDataSourceBuildItem> jdbcDataSource) { if (aggregatedBuildTimeConfigBuildItems.isEmpty()) { // No datasource has been configured so bail out return; } for (Map.Entry<String, DataSourceSupport.Entry> entry : getDataSourceSupport(aggregatedBuildTimeConfigBuildItems, sslNativeConfig, capabilities).entries.entrySet()) { String dataSourceName = entry.getKey(); SyntheticBeanBuildItem.ExtendedBeanConfigurator configurator = SyntheticBeanBuildItem .configure(AgroalDataSource.class) .addType(DATA_SOURCE) .scope(Singleton.class) .setRuntimeInit() .unremovable() // pass the runtime config into the recorder to ensure that the DataSource related beans // are created after runtime configuration has been setup .supplier(recorder.agroalDataSourceSupplier(dataSourceName, dataSourcesRuntimeConfig)); if (entry.getValue().isDefault) { configurator.addQualifier(Default.class); } else { // this definitely not ideal, but 'elytron-jdbc-security' uses it (although it could be easily changed) // which means that perhaps other extensions might depend on this as well... configurator.name(dataSourceName); configurator.addQualifier().annotation(DotNames.NAMED).addValue("value", dataSourceName).done(); configurator.addQualifier().annotation(DataSource.class).addValue("value", dataSourceName).done(); } syntheticBeanBuildItemBuildProducer.produce(configurator.done()); jdbcDataSource.produce(new JdbcDataSourceBuildItem(dataSourceName, entry.getValue().resolvedDbKind, entry.getValue().isDefault)); } }
Example #26
Source File: AgroalCounter.java From quarkus with Apache License 2.0 | 4 votes |
public void setDataSource(AgroalDataSource dataSource) { this.dataSource = dataSource; }
Example #27
Source File: AgroalCPDataSourceProvider.java From vertx-jdbc-client with Apache License 2.0 | 4 votes |
@Override public void close(DataSource dataSource) throws SQLException { if (dataSource instanceof AgroalDataSource) { ((AgroalDataSource) dataSource).close(); } }
Example #28
Source File: DataSources.java From quarkus with Apache License 2.0 | 2 votes |
/** * Meant to be used from recorders that create synthetic beans that need access to {@code Datasource}. * In such using {@code Arc.container.instance(DataSource.class)} is not possible because * {@code Datasource} is itself a synthetic bean. * <p> * This method relies on the fact that {@code DataSources} should - given the same input - * always return the same {@code AgroalDataSource} no matter how many times it is invoked * (which makes sense because {@code DataSource} is a {@code Singleton} bean). * <p> * This method is thread-safe */ public static AgroalDataSource fromName(String dataSourceName) { return Arc.container().instance(DataSources.class).get() .getDataSource(dataSourceName); }