Search in sources :

Example 6 with DataSourceStub

use of org.hibernate.testing.jdbc.DataSourceStub in project hibernate-orm by hibernate.

the class PersistenceUnitOverridesTests method testIntegrationOverridesOfPersistenceXmlDataSourceWithDriverManagerInfoUsingJakarta.

@Test
@TestForIssue(jiraKey = "HHH-13640")
public void testIntegrationOverridesOfPersistenceXmlDataSourceWithDriverManagerInfoUsingJakarta() {
    // 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.JAKARTA_JDBC_DRIVER, ConnectionProviderBuilder.DRIVER);
    integrationSettings.put(AvailableSettings.JAKARTA_JDBC_URL, ConnectionProviderBuilder.URL);
    integrationSettings.put(AvailableSettings.JAKARTA_JDBC_USER, ConnectionProviderBuilder.USER);
    integrationSettings.put(AvailableSettings.JAKARTA_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();
    }
}
Also used : DriverManagerConnectionProviderImpl(org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl) DataSourceStub(org.hibernate.testing.jdbc.DataSourceStub) HashMap(java.util.HashMap) SessionFactoryImplementor(org.hibernate.engine.spi.SessionFactoryImplementor) PersistenceProvider(jakarta.persistence.spi.PersistenceProvider) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) EntityManagerFactory(jakarta.persistence.EntityManagerFactory) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) PersistenceUnitInfoAdapter(org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter) ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 7 with DataSourceStub

use of org.hibernate.testing.jdbc.DataSourceStub in project hibernate-orm by hibernate.

the class PersistenceUnitOverridesTests method testPassingIntegrationJpaJdbcOverridesForJtaDataSourceElement.

@Test
public // )
void testPassingIntegrationJpaJdbcOverridesForJtaDataSourceElement() {
    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 = new DataSourceStub("puDataSource");

                @Override
                public DataSource getJtaDataSource() {
                    return puDataSource;
                }
            }, 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();
    }
}
Also used : DelegatingPersistenceUnitInfo(org.hibernate.testing.util.jpa.DelegatingPersistenceUnitInfo) PersistenceProvider(jakarta.persistence.spi.PersistenceProvider) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) PersistenceUnitInfo(jakarta.persistence.spi.PersistenceUnitInfo) DelegatingPersistenceUnitInfo(org.hibernate.testing.util.jpa.DelegatingPersistenceUnitInfo) PersistenceUnitInfoAdapter(org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter) DataSource(javax.sql.DataSource) ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) DriverManagerConnectionProviderImpl(org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl) DataSourceStub(org.hibernate.testing.jdbc.DataSourceStub) EntityManagerFactory(jakarta.persistence.EntityManagerFactory) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Example 8 with DataSourceStub

use of org.hibernate.testing.jdbc.DataSourceStub in project hibernate-orm by hibernate.

the class PersistenceUnitInfoTests method testJtaDataExposedAsProperty.

@Test
@TestForIssue(jiraKey = "HHH-13432")
public void testJtaDataExposedAsProperty() {
    final DataSource puDataSource = new DataSourceStub("puDataSource");
    final PersistenceUnitInfoAdapter info = new PersistenceUnitInfoAdapter() {

        @Override
        public DataSource getJtaDataSource() {
            return puDataSource;
        }
    };
    final PersistenceProvider provider = new HibernatePersistenceProvider();
    final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(info, Collections.emptyMap());
    // 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(puDataSource));
    // now let's check that it is exposed via the EMF properties
    // - again, the spec does not indicate that this should work, but
    // it worked this way in previous versions
    final Map<String, Object> properties = emf.getProperties();
    final Object o = properties.get(AvailableSettings.JPA_JTA_DATASOURCE);
    assertEquals(puDataSource, o);
}
Also used : DataSourceStub(org.hibernate.testing.jdbc.DataSourceStub) DatasourceConnectionProviderImpl(org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl) PersistenceProvider(jakarta.persistence.spi.PersistenceProvider) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) EntityManagerFactory(jakarta.persistence.EntityManagerFactory) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) PersistenceUnitInfoAdapter(org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter) DataSource(javax.sql.DataSource) ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 9 with DataSourceStub

use of org.hibernate.testing.jdbc.DataSourceStub in project hibernate-orm by hibernate.

the class PersistenceUnitInfoTests method testNonJtaDataExposedAsProperty.

@Test
@TestForIssue(jiraKey = "HHH-13432")
public void testNonJtaDataExposedAsProperty() {
    final DataSource puDataSource = new DataSourceStub("puDataSource");
    final PersistenceUnitInfoAdapter info = new PersistenceUnitInfoAdapter() {

        @Override
        public DataSource getNonJtaDataSource() {
            return puDataSource;
        }
    };
    final PersistenceProvider provider = new HibernatePersistenceProvider();
    final EntityManagerFactory emf = provider.createContainerEntityManagerFactory(info, Collections.emptyMap());
    // 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(puDataSource));
    // 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 o = emf.getProperties().get(AvailableSettings.JPA_NON_JTA_DATASOURCE);
    assertThat(o, is(puDataSource));
}
Also used : DataSourceStub(org.hibernate.testing.jdbc.DataSourceStub) DatasourceConnectionProviderImpl(org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl) PersistenceProvider(jakarta.persistence.spi.PersistenceProvider) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) EntityManagerFactory(jakarta.persistence.EntityManagerFactory) HibernatePersistenceProvider(org.hibernate.jpa.HibernatePersistenceProvider) PersistenceUnitInfoAdapter(org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter) DataSource(javax.sql.DataSource) ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Aggregations

EntityManagerFactory (jakarta.persistence.EntityManagerFactory)9 ConnectionProvider (org.hibernate.engine.jdbc.connections.spi.ConnectionProvider)9 HibernatePersistenceProvider (org.hibernate.jpa.HibernatePersistenceProvider)9 DataSourceStub (org.hibernate.testing.jdbc.DataSourceStub)9 PersistenceUnitInfoAdapter (org.hibernate.testing.util.jpa.PersistenceUnitInfoAdapter)9 Test (org.junit.Test)9 PersistenceProvider (jakarta.persistence.spi.PersistenceProvider)8 DataSource (javax.sql.DataSource)7 HashMap (java.util.HashMap)6 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)6 DatasourceConnectionProviderImpl (org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl)5 TestForIssue (org.hibernate.testing.TestForIssue)5 DriverManagerConnectionProviderImpl (org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl)4 PersistenceUnitInfo (jakarta.persistence.spi.PersistenceUnitInfo)3 Map (java.util.Map)3 SessionFactoryImplementor (org.hibernate.engine.spi.SessionFactoryImplementor)3 DelegatingPersistenceUnitInfo (org.hibernate.testing.util.jpa.DelegatingPersistenceUnitInfo)3 Properties (java.util.Properties)1