X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.osgi%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fosgi%2FMultipleServiceExporterPostProcessor.java;h=e8e2bda399659f149a98edd1c7a22034f7cbc3bf;hb=b7d8fda867d99f7c6c59a4e3083d2319b043752c;hp=de759110f4ec1002a52691c94295593d0591489c;hpb=f8a01158f0d865ef1cf03eab7a7fa4c658777179;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/MultipleServiceExporterPostProcessor.java b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/MultipleServiceExporterPostProcessor.java index de759110f..e8e2bda39 100644 --- a/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/MultipleServiceExporterPostProcessor.java +++ b/runtime/org.argeo.slc.support.osgi/src/main/java/org/argeo/slc/osgi/MultipleServiceExporterPostProcessor.java @@ -16,12 +16,12 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; 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); @@ -29,6 +29,10 @@ public class MultipleServiceExporterPostProcessor implements 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)) { @@ -50,6 +54,9 @@ public class MultipleServiceExporterPostProcessor implements 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); @@ -77,6 +84,16 @@ public class MultipleServiceExporterPostProcessor implements } 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; + } + }