use of org.hibernate.integrator.spi.Integrator in project hibernate-orm by hibernate.
the class OsgiPersistenceProvider method generateSettings.
@SuppressWarnings("unchecked")
private Map generateSettings(Map properties) {
final Map settings = new HashMap();
if (properties != null) {
settings.putAll(properties);
}
settings.put(AvailableSettings.JTA_PLATFORM, osgiJtaPlatform);
final Integrator[] integrators = osgiServiceUtil.getServiceImpls(Integrator.class);
final IntegratorProvider integratorProvider = new IntegratorProvider() {
@Override
public List<Integrator> getIntegrators() {
return Arrays.asList(integrators);
}
};
settings.put(EntityManagerFactoryBuilderImpl.INTEGRATOR_PROVIDER, integratorProvider);
final StrategyRegistrationProvider[] strategyRegistrationProviders = osgiServiceUtil.getServiceImpls(StrategyRegistrationProvider.class);
final StrategyRegistrationProviderList strategyRegistrationProviderList = new StrategyRegistrationProviderList() {
@Override
public List<StrategyRegistrationProvider> getStrategyRegistrationProviders() {
return Arrays.asList(strategyRegistrationProviders);
}
};
settings.put(EntityManagerFactoryBuilderImpl.STRATEGY_REGISTRATION_PROVIDERS, strategyRegistrationProviderList);
final TypeContributor[] typeContributors = osgiServiceUtil.getServiceImpls(TypeContributor.class);
final TypeContributorList typeContributorList = new TypeContributorList() {
@Override
public List<TypeContributor> getTypeContributors() {
return Arrays.asList(typeContributors);
}
};
settings.put(EntityManagerFactoryBuilderImpl.TYPE_CONTRIBUTORS, typeContributorList);
return settings;
}
use of org.hibernate.integrator.spi.Integrator in project hibernate-orm by hibernate.
the class CallbackTest method prepareBootstrapRegistryBuilder.
@Override
protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) {
super.prepareBootstrapRegistryBuilder(builder);
builder.applyIntegrator(new Integrator() {
@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
integrate(serviceRegistry);
}
private void integrate(SessionFactoryServiceRegistry serviceRegistry) {
serviceRegistry.getService(EventListenerRegistry.class).setListeners(EventType.DELETE, listener);
listener.initialize();
}
@Override
public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
listener.cleanup();
}
});
}
use of org.hibernate.integrator.spi.Integrator in project hibernate-orm by hibernate.
the class TestCollectionInitializingDuringFlush method prepareBootstrapRegistryBuilder.
@Override
protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) {
super.prepareBootstrapRegistryBuilder(builder);
builder.applyIntegrator(new Integrator() {
@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
integrate(serviceRegistry);
}
private void integrate(SessionFactoryServiceRegistry serviceRegistry) {
serviceRegistry.getService(EventListenerRegistry.class).getEventListenerGroup(EventType.PRE_UPDATE).appendListener(InitializingPreUpdateEventListener.INSTANCE);
}
@Override
public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
}
});
}
use of org.hibernate.integrator.spi.Integrator in project hibernate-orm by hibernate.
the class EagerKeyManyToOneTest method prepareBootstrapRegistryBuilder.
@Override
protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) {
super.prepareBootstrapRegistryBuilder(builder);
builder.applyIntegrator(new Integrator() {
@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
integrate(serviceRegistry);
}
private void integrate(SessionFactoryServiceRegistry serviceRegistry) {
serviceRegistry.getService(EventListenerRegistry.class).prependListeners(EventType.LOAD, new CustomLoadListener());
}
@Override
public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
}
});
}
use of org.hibernate.integrator.spi.Integrator in project hibernate-orm by hibernate.
the class EntityManagerFactoryBuilderImpl method buildBootstrapServiceRegistry.
/**
* Builds the {@link BootstrapServiceRegistry} used to eventually build the {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder}; mainly
* used here during instantiation to define class-loading behavior.
*
* @param integrationSettings Any integration settings passed by the EE container or SE application
*
* @return The built BootstrapServiceRegistry
*/
private BootstrapServiceRegistry buildBootstrapServiceRegistry(Map integrationSettings, ClassLoader providedClassLoader, ClassLoaderService providedClassLoaderService) {
final BootstrapServiceRegistryBuilder bsrBuilder = new BootstrapServiceRegistryBuilder();
final IntegratorProvider integratorProvider = (IntegratorProvider) integrationSettings.get(INTEGRATOR_PROVIDER);
if (integratorProvider != null) {
for (Integrator integrator : integratorProvider.getIntegrators()) {
bsrBuilder.applyIntegrator(integrator);
}
}
final StrategyRegistrationProviderList strategyRegistrationProviderList = (StrategyRegistrationProviderList) integrationSettings.get(STRATEGY_REGISTRATION_PROVIDERS);
if (strategyRegistrationProviderList != null) {
for (StrategyRegistrationProvider strategyRegistrationProvider : strategyRegistrationProviderList.getStrategyRegistrationProviders()) {
bsrBuilder.applyStrategySelectors(strategyRegistrationProvider);
}
}
if (providedClassLoaderService != null) {
bsrBuilder.applyClassLoaderService(providedClassLoaderService);
} else {
if (persistenceUnit.getClassLoader() != null) {
bsrBuilder.applyClassLoader(persistenceUnit.getClassLoader());
}
if (providedClassLoader != null) {
bsrBuilder.applyClassLoader(providedClassLoader);
}
final ClassLoader appClassLoader = (ClassLoader) integrationSettings.get(org.hibernate.cfg.AvailableSettings.APP_CLASSLOADER);
if (appClassLoader != null) {
LOG.debugf("Found use of deprecated `%s` setting; use `%s` instead.", org.hibernate.cfg.AvailableSettings.APP_CLASSLOADER, org.hibernate.cfg.AvailableSettings.CLASSLOADERS);
}
final Object classLoadersSetting = integrationSettings.get(org.hibernate.cfg.AvailableSettings.CLASSLOADERS);
if (classLoadersSetting != null) {
if (java.util.Collection.class.isInstance(classLoadersSetting)) {
for (ClassLoader classLoader : (java.util.Collection<ClassLoader>) classLoadersSetting) {
bsrBuilder.applyClassLoader(classLoader);
}
} else if (classLoadersSetting.getClass().isArray()) {
for (ClassLoader classLoader : (ClassLoader[]) classLoadersSetting) {
bsrBuilder.applyClassLoader(classLoader);
}
} else if (ClassLoader.class.isInstance(classLoadersSetting)) {
bsrBuilder.applyClassLoader((ClassLoader) classLoadersSetting);
}
}
// configurationValues not assigned yet, using directly the properties of the PU
Properties puProperties = persistenceUnit.getProperties();
if (puProperties != null) {
final String tcclLookupPrecedence = puProperties.getProperty(org.hibernate.cfg.AvailableSettings.TC_CLASSLOADER);
if (tcclLookupPrecedence != null) {
bsrBuilder.applyTcclLookupPrecedence(TcclLookupPrecedence.valueOf(tcclLookupPrecedence.toUpperCase(Locale.ROOT)));
}
}
}
return bsrBuilder.build();
}
Aggregations