Search in sources :

Example 1 with IntegratorProvider

use of org.hibernate.jpa.boot.spi.IntegratorProvider 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;
}
Also used : StrategyRegistrationProvider(org.hibernate.boot.registry.selector.StrategyRegistrationProvider) HashMap(java.util.HashMap) Integrator(org.hibernate.integrator.spi.Integrator) TypeContributorList(org.hibernate.jpa.boot.spi.TypeContributorList) HashMap(java.util.HashMap) Map(java.util.Map) IntegratorProvider(org.hibernate.jpa.boot.spi.IntegratorProvider) StrategyRegistrationProviderList(org.hibernate.jpa.boot.spi.StrategyRegistrationProviderList) TypeContributor(org.hibernate.boot.model.TypeContributor)

Example 2 with IntegratorProvider

use of org.hibernate.jpa.boot.spi.IntegratorProvider 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();
}
Also used : BootstrapServiceRegistryBuilder(org.hibernate.boot.registry.BootstrapServiceRegistryBuilder) StrategyRegistrationProvider(org.hibernate.boot.registry.selector.StrategyRegistrationProvider) BeanValidationIntegrator(org.hibernate.cfg.beanvalidation.BeanValidationIntegrator) Integrator(org.hibernate.integrator.spi.Integrator) Properties(java.util.Properties) IntegratorProvider(org.hibernate.jpa.boot.spi.IntegratorProvider) StrategyRegistrationProviderList(org.hibernate.jpa.boot.spi.StrategyRegistrationProviderList)

Aggregations

StrategyRegistrationProvider (org.hibernate.boot.registry.selector.StrategyRegistrationProvider)2 Integrator (org.hibernate.integrator.spi.Integrator)2 IntegratorProvider (org.hibernate.jpa.boot.spi.IntegratorProvider)2 StrategyRegistrationProviderList (org.hibernate.jpa.boot.spi.StrategyRegistrationProviderList)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Properties (java.util.Properties)1 TypeContributor (org.hibernate.boot.model.TypeContributor)1 BootstrapServiceRegistryBuilder (org.hibernate.boot.registry.BootstrapServiceRegistryBuilder)1 BeanValidationIntegrator (org.hibernate.cfg.beanvalidation.BeanValidationIntegrator)1 TypeContributorList (org.hibernate.jpa.boot.spi.TypeContributorList)1