/*
* 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.spring.injection.integration;
import java.util.Map;
import org.hibernate.boot.registry.StandardServiceInitiator;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.search.hcore.spi.BeanResolver;
import org.hibernate.service.spi.ServiceContributor;
import org.hibernate.service.spi.ServiceRegistryImplementor;
import org.springframework.beans.factory.BeanFactory;
/**
* @author Yoann Rodiere
*/
public class SpringBeanResolverContributor implements ServiceContributor {
public static final String BEAN_FACTORY = "hibernate.spring.bean_factory";
@Override
public void contribute(StandardServiceRegistryBuilder serviceRegistryBuilder) {
serviceRegistryBuilder.addInitiator( new Initiator() );
}
private static class Initiator implements StandardServiceInitiator<BeanResolver> {
@Override
public Class<BeanResolver> getServiceInitiated() {
return BeanResolver.class;
}
@Override
@SuppressWarnings("rawtypes")
public BeanResolver initiateService(Map configurationValues, ServiceRegistryImplementor registry) {
BeanFactory beanFactory = (BeanFactory) configurationValues.get( BEAN_FACTORY );
if ( beanFactory == null ) {
return null;
}
else {
return new SpringBeanResolver( beanFactory );
}
}
}
}