use of org.hibernate.boot.registry.BootstrapServiceRegistryBuilder in project hibernate-orm by hibernate.
the class OsgiSessionFactoryService method buildSessionFactory.
private Object buildSessionFactory(Bundle requestingBundle, OsgiClassLoader osgiClassLoader) {
final BootstrapServiceRegistryBuilder bsrBuilder = new BootstrapServiceRegistryBuilder();
bsrBuilder.applyClassLoaderService(new OSGiClassLoaderServiceImpl(osgiClassLoader, osgiServiceUtil));
final Integrator[] integrators = osgiServiceUtil.getServiceImpls(Integrator.class);
for (Integrator integrator : integrators) {
bsrBuilder.applyIntegrator(integrator);
}
final StrategyRegistrationProvider[] strategyRegistrationProviders = osgiServiceUtil.getServiceImpls(StrategyRegistrationProvider.class);
for (StrategyRegistrationProvider strategyRegistrationProvider : strategyRegistrationProviders) {
bsrBuilder.applyStrategySelectors(strategyRegistrationProvider);
}
final BootstrapServiceRegistry bsr = bsrBuilder.build();
final StandardServiceRegistryBuilder ssrBuilder = new StandardServiceRegistryBuilder(bsr);
// Allow bundles to put the config file somewhere other than the root level.
final BundleWiring bundleWiring = (BundleWiring) requestingBundle.adapt(BundleWiring.class);
final Collection<String> cfgResources = bundleWiring.listResources("/", "hibernate.cfg.xml", BundleWiring.LISTRESOURCES_RECURSE);
if (cfgResources.size() == 0) {
ssrBuilder.configure();
} else {
if (cfgResources.size() > 1) {
LOG.warn("Multiple hibernate.cfg.xml files found in the persistence bundle. Using the first one discovered.");
}
String cfgResource = "/" + cfgResources.iterator().next();
ssrBuilder.configure(cfgResource);
}
ssrBuilder.applySetting(AvailableSettings.JTA_PLATFORM, osgiJtaPlatform);
final StandardServiceRegistry ssr = ssrBuilder.build();
final MetadataBuilder metadataBuilder = new MetadataSources(ssr).getMetadataBuilder();
final TypeContributor[] typeContributors = osgiServiceUtil.getServiceImpls(TypeContributor.class);
for (TypeContributor typeContributor : typeContributors) {
metadataBuilder.applyTypes(typeContributor);
}
return metadataBuilder.build().buildSessionFactory();
}
use of org.hibernate.boot.registry.BootstrapServiceRegistryBuilder in project hibernate-orm by hibernate.
the class ServiceRegistryClosingCascadeTest method testSessionFactoryClosing.
@Test
public void testSessionFactoryClosing() {
BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().build();
StandardServiceRegistry sr = new StandardServiceRegistryBuilder(bsr).build();
assertTrue(((BootstrapServiceRegistryImpl) bsr).isActive());
Configuration config = new Configuration();
SessionFactory sf = config.buildSessionFactory(sr);
sf.close();
assertFalse(((BootstrapServiceRegistryImpl) bsr).isActive());
}
use of org.hibernate.boot.registry.BootstrapServiceRegistryBuilder in project hibernate-orm by hibernate.
the class CfgXmlResourceNameClosingTest method testStreamClosing.
@Test
public void testStreamClosing() {
BootstrapServiceRegistry bsr = new BootstrapServiceRegistryBuilder().applyClassLoaderService(classLoaderService).build();
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder(bsr).configure("org/hibernate/test/boot/cfgXml/hibernate.cfg.xml").build();
try {
for (InputStreamWrapper openedStream : classLoaderService.openedStreams) {
assertTrue(openedStream.wasClosed);
}
} finally {
StandardServiceRegistryBuilder.destroy(ssr);
}
assertTrue(classLoaderService.stopped);
}
use of org.hibernate.boot.registry.BootstrapServiceRegistryBuilder in project hibernate-orm by hibernate.
the class SchemaUpdateSchemaNameTest method cleanup.
@After
public void cleanup() {
// Drops the table after the sql alter test.
StandardServiceRegistry ssr = null;
try {
// build simple configuration
final Configuration cfg = buildConfiguration(SimpleFirst.class);
// Build Standard Service Registry
ssr = new StandardServiceRegistryBuilder(new BootstrapServiceRegistryBuilder().build(), cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml()).applySettings(cfg.getProperties()).build();
SessionFactory sf = cfg.buildSessionFactory(ssr);
try {
Session session = sf.openSession();
try {
session.getTransaction().begin();
session.createNativeQuery("DROP TABLE Simple").executeUpdate();
session.getTransaction().commit();
} catch (Throwable t) {
if (session.getTransaction().isActive()) {
session.getTransaction().rollback();
}
throw t;
} finally {
session.close();
}
} finally {
sf.close();
}
} finally {
StandardServiceRegistryBuilder.destroy(ssr);
}
}
use of org.hibernate.boot.registry.BootstrapServiceRegistryBuilder in project hibernate-orm by hibernate.
the class SchemaUpdateSchemaNameTest method testSqlAlterWithTableSchemaName.
@Test
public void testSqlAlterWithTableSchemaName() throws Exception {
StandardServiceRegistry ssr = null;
try {
final Configuration cfg = buildConfiguration(SimpleNext.class);
ssr = new StandardServiceRegistryBuilder(new BootstrapServiceRegistryBuilder().build(), cfg.getStandardServiceRegistryBuilder().getAggregatedCfgXml()).applySettings(cfg.getProperties()).build();
SessionFactory sf = cfg.buildSessionFactory(ssr);
try {
Session session = sf.openSession();
try {
session.getTransaction().begin();
session.createQuery("FROM Simple", SimpleNext.class).getResultList();
session.getTransaction().commit();
} catch (Throwable t) {
if (session.getTransaction().isActive()) {
session.getTransaction().rollback();
}
throw t;
} finally {
session.close();
}
} finally {
sf.close();
}
} finally {
StandardServiceRegistryBuilder.destroy(ssr);
}
}
Aggregations