/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.integration.wildfly.cdi.integration; import java.util.Map; import javax.enterprise.inject.spi.BeanManager; import org.hibernate.boot.registry.StandardServiceInitiator; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.AvailableSettings; import org.hibernate.search.hcore.spi.BeanResolver; import org.hibernate.search.hcore.spi.EnvironmentSynchronizer; import org.hibernate.service.spi.ServiceContributor; import org.hibernate.service.spi.ServiceRegistryImplementor; /** * @author Yoann Rodiere */ public class CDIServiceContributor implements ServiceContributor { @Override public void contribute(StandardServiceRegistryBuilder serviceRegistryBuilder) { serviceRegistryBuilder.addInitiator( new BeanManagerSynchronizerInitiator() ); serviceRegistryBuilder.addInitiator( new BeanResolverInitiator() ); } private static BeanManager getBeanManager(Map<?, ?> configurationValues) { return (BeanManager) configurationValues.get( AvailableSettings.CDI_BEAN_MANAGER ); } private static class BeanManagerSynchronizerInitiator implements StandardServiceInitiator<EnvironmentSynchronizer> { @Override public Class<EnvironmentSynchronizer> getServiceInitiated() { return EnvironmentSynchronizer.class; } @Override @SuppressWarnings("rawtypes") public EnvironmentSynchronizer initiateService(Map configurationValues, ServiceRegistryImplementor registry) { BeanManager beanManager = getBeanManager( configurationValues ); if ( beanManager != null ) { return CDIBeanManagerSynchronizer.get( beanManager ); } else { return null; } } } private static class BeanResolverInitiator implements StandardServiceInitiator<BeanResolver> { @Override public Class<BeanResolver> getServiceInitiated() { return BeanResolver.class; } @Override @SuppressWarnings("rawtypes") public BeanResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) { BeanManager beanManager = getBeanManager( configurationValues ); if ( beanManager != null ) { return new CDIBeanResolver( beanManager ); } else { return null; } } } }