use of org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter in project hibernate-orm by hibernate.
the class PersistenceUnitOverridesTests method testIntegrationOverridesOfPersistenceXmlDataSourceWithDriverManagerInfo.
@Test
@TestForIssue(jiraKey = "HHH-13640")
public void testIntegrationOverridesOfPersistenceXmlDataSourceWithDriverManagerInfo() {
// mimics a DataSource defined in the persistence.xml
final DataSourceStub dataSource = new DataSourceStub("puDataSource");
final PersistenceUnitInfoAdapter info = new PersistenceUnitInfoAdapter() {
@Override
public DataSource getNonJtaDataSource() {
return dataSource;
}
};
final Map<String, Object> integrationSettings = new HashMap<>();
integrationSettings.put(AvailableSettings.JPA_JDBC_DRIVER, ConnectionProviderBuilder.DRIVER);
integrationSettings.put(AvailableSettings.JPA_JDBC_URL, ConnectionProviderBuilder.URL);
integrationSettings.put(AvailableSettings.JPA_JDBC_USER, ConnectionProviderBuilder.USER);
integrationSettings.put(AvailableSettings.JPA_JDBC_PASSWORD, ConnectionProviderBuilder.PASS);
integrationSettings.put("hibernate.connection.init_sql", "");
final PersistenceProvider provider = new HibernatePersistenceProvider();
final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(info, integrationSettings);
try {
final SessionFactoryImplementor sessionFactory = emf.unwrap(SessionFactoryImplementor.class);
final ConnectionProvider connectionProvider = sessionFactory.getServiceRegistry().getService(ConnectionProvider.class);
assertThat(connectionProvider, instanceOf(DriverManagerConnectionProviderImpl.class));
} finally {
emf.close();
}
}
use of org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter in project hibernate-orm by hibernate.
the class PersistenceUnitOverridesTests method testPassingIntegrationJpaJdbcOverrideForJtaDataSourceProperty.
@Test
public void testPassingIntegrationJpaJdbcOverrideForJtaDataSourceProperty() {
PersistenceProvider provider = new HibernatePersistenceProvider() {
@Override
public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map integrationOverrides) {
return super.createContainerEntityManagerFactory(new DelegatingPersistenceUnitInfo(info) {
// inject a JPA JTA DataSource setting into the PU
final DataSource puDataSource;
final Properties puProperties;
{
puDataSource = new DataSourceStub("puDataSource");
puProperties = new Properties();
puProperties.putAll(info.getProperties());
puProperties.put(AvailableSettings.JPA_JTA_DATASOURCE, puDataSource);
}
@Override
public DataSource getJtaDataSource() {
return null;
}
@Override
public DataSource getNonJtaDataSource() {
return null;
}
@Override
public Properties getProperties() {
return puProperties;
}
}, integrationOverrides);
}
};
final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(new PersistenceUnitInfoAdapter(), // a JTA DataSource (nor the reverse). However, that is a useful thing to support
ConnectionProviderBuilder.getJpaConnectionProviderProperties("db2"));
try {
final Map<String, Object> properties = emf.getProperties();
final Object hibernateJdbcDriver = properties.get(AvailableSettings.URL);
assertThat(hibernateJdbcDriver, notNullValue());
final Object jpaJdbcDriver = properties.get(AvailableSettings.JPA_JDBC_URL);
assertThat((String) jpaJdbcDriver, containsString("db2"));
// see if the values had the affect to adjust the `ConnectionProvider` used
final ConnectionProvider connectionProvider = emf.unwrap(SessionFactoryImplementor.class).getServiceRegistry().getService(ConnectionProvider.class);
assertThat(connectionProvider, instanceOf(DriverManagerConnectionProviderImpl.class));
} finally {
emf.close();
}
}
use of org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter in project hibernate-orm by hibernate.
the class PersistenceUnitOverridesTests method testPassingIntegrationJtaDataSourceOverrideForJpaJdbcSettings.
@Test
public void testPassingIntegrationJtaDataSourceOverrideForJpaJdbcSettings() {
final PersistenceUnitInfoAdapter puInfo = new PersistenceUnitInfoAdapter(ConnectionProviderBuilder.getJpaConnectionProviderProperties("db2"));
final DataSource integrationDataSource = new DataSourceStub("integrationDataSource");
final HibernatePersistenceProvider provider = new HibernatePersistenceProvider();
// todo (6.0) : fix for Oracle see HHH-13432
// puInfo.getProperties().setProperty( AvailableSettings.HQL_BULK_ID_STRATEGY, MultiTableBulkIdStrategyStub.class.getName() );
final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(puInfo, Collections.singletonMap(AvailableSettings.JPA_JTA_DATASOURCE, integrationDataSource));
try {
// first let's check the DataSource used in the EMF...
final ConnectionProvider connectionProvider = emf.unwrap(SessionFactoryImplementor.class).getServiceRegistry().getService(ConnectionProvider.class);
assertThat(connectionProvider, instanceOf(DatasourceConnectionProviderImpl.class));
final DatasourceConnectionProviderImpl dsCp = (DatasourceConnectionProviderImpl) connectionProvider;
assertThat(dsCp.getDataSource(), is(integrationDataSource));
// now let's check that it is exposed via the EMF properties
// - note : the spec does not indicate that this should work, but
// it worked this way in previous versions
final Object jtaDs = emf.getProperties().get(AvailableSettings.JPA_JTA_DATASOURCE);
assertThat(jtaDs, is(integrationDataSource));
// Additionally, we should have set Hibernate's DATASOURCE setting
final Object hibDs = emf.getProperties().get(AvailableSettings.JPA_JTA_DATASOURCE);
assertThat(hibDs, is(integrationDataSource));
// Make sure the non-jta-data-source setting was cleared or otherwise null
final Object nonJtaDs = emf.getProperties().get(AvailableSettings.JPA_NON_JTA_DATASOURCE);
assertThat(nonJtaDs, nullValue());
} finally {
emf.close();
}
}
use of org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter in project hibernate-orm by hibernate.
the class PersistenceUnitOverridesTests method testIntegrationOverridesOfCfgXml.
@Test
public void testIntegrationOverridesOfCfgXml() {
final PersistenceUnitInfoAdapter info = new PersistenceUnitInfoAdapter() {
private final Properties props = new Properties();
{
props.put(AvailableSettings.CFG_XML_FILE, "org/hibernate/orm/test/bootstrap/jpa/hibernate.cfg.xml");
}
@Override
public Properties getProperties() {
return props;
}
};
final PersistenceProvider provider = new HibernatePersistenceProvider();
final Map integrationSettings = Collections.singletonMap(AvailableSettings.DIALECT, IntegrationDialect.class.getName());
final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(info, integrationSettings);
try {
assertThat(emf.getProperties().get(AvailableSettings.DIALECT), is(IntegrationDialect.class.getName()));
assertThat(emf.unwrap(SessionFactoryImplementor.class).getJdbcServices().getDialect(), instanceOf(IntegrationDialect.class));
final EntityPersister entityMapping = emf.unwrap(SessionFactoryImplementor.class).getRuntimeMetamodels().getMappingMetamodel().getEntityDescriptor(MappedEntity.class);
assertThat(entityMapping, notNullValue());
assertThat(entityMapping.getCacheAccessStrategy().getAccessType(), is(AccessType.READ_ONLY));
} finally {
emf.close();
}
}
use of org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter in project hibernate-orm by hibernate.
the class PersistenceUnitOverridesTests method testIntegrationOverridesOfPersistenceXmlDataSource.
@Test
@TestForIssue(jiraKey = "HHH-13640")
public void testIntegrationOverridesOfPersistenceXmlDataSource() {
// mimics a DataSource defined in the persistence.xml
final DataSourceStub dataSource = new DataSourceStub("puDataSource");
final PersistenceUnitInfoAdapter info = new PersistenceUnitInfoAdapter() {
@Override
public DataSource getNonJtaDataSource() {
return dataSource;
}
};
// Now create "integration Map" that overrides the DataSource to use
final DataSource override = new DataSourceStub("integrationDataSource");
final Map<String, Object> integrationSettings = new HashMap<>();
integrationSettings.put(AvailableSettings.JPA_NON_JTA_DATASOURCE, override);
// todo (6.0) : fix for Oracle see HHH-13432
// integrationSettings.put( AvailableSettings.HQL_BULK_ID_STRATEGY, new MultiTableBulkIdStrategyStub() );
final PersistenceProvider provider = new HibernatePersistenceProvider();
final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(info, integrationSettings);
try {
final Map<String, Object> properties = emf.getProperties();
assertThat(properties.get(AvailableSettings.JPA_NON_JTA_DATASOURCE), notNullValue());
assertThat(properties.get(AvailableSettings.JPA_NON_JTA_DATASOURCE), is(override));
final SessionFactoryImplementor sessionFactory = emf.unwrap(SessionFactoryImplementor.class);
final ConnectionProvider connectionProvider = sessionFactory.getServiceRegistry().getService(ConnectionProvider.class);
assertThat(connectionProvider, instanceOf(DatasourceConnectionProviderImpl.class));
final DatasourceConnectionProviderImpl dsProvider = (DatasourceConnectionProviderImpl) connectionProvider;
assertThat(dsProvider.getDataSource(), is(override));
} finally {
emf.close();
}
}
Aggregations