import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.core.Ordered;
-import org.springframework.core.PriorityOrdered;
+import org.springframework.osgi.service.exporter.support.ExportContextClassLoader;
import org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean;
@SuppressWarnings(value = { "unchecked" })
public class MultipleServiceExporterPostProcessor implements
- BeanFactoryPostProcessor, PriorityOrdered {
+ BeanFactoryPostProcessor, Ordered {
private final static Log log = LogFactory
.getLog(MultipleServiceExporterPostProcessor.class);
private Class osgiServiceFactoryClass = OsgiServiceFactoryBean.class;
+ private Boolean useServiceProviderContextClassLoader = false;
+
+ private int order = Ordered.LOWEST_PRECEDENCE;
+
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
if (!(beanFactory instanceof BeanDefinitionRegistry)) {
MutablePropertyValues mpv = new MutablePropertyValues();
mpv.addPropertyValue("interfaces", interfaces.toArray());
mpv.addPropertyValue("targetBeanName", beanName);
+ if (useServiceProviderContextClassLoader)
+ mpv.addPropertyValue("contextClassLoader",
+ ExportContextClassLoader.SERVICE_PROVIDER);
RootBeanDefinition bd = new RootBeanDefinition(
osgiServiceFactoryClass, mpv);
}
public int getOrder() {
- return Ordered.LOWEST_PRECEDENCE;
+ return order;
+ }
+
+ public void setOrder(int order) {
+ this.order = order;
}
+
+ public void setUseServiceProviderContextClassLoader(
+ Boolean useServiceProviderContextClassLoader) {
+ this.useServiceProviderContextClassLoader = useServiceProviderContextClassLoader;
+ }
+
}