+ // public void postProcessBeanFactory(
+ // ConfigurableListableBeanFactory beanFactory) throws BeansException {
+ // if (!(beanFactory instanceof BeanDefinitionRegistry)) {
+ // throw new SlcException("Can only work on "
+ // + BeanDefinitionRegistry.class);
+ // }
+ //
+ // long begin = System.currentTimeMillis();
+ //
+ // // Merge all beans implementing these interfaces
+ // Set<String> beanNames = new HashSet<String>();
+ // for (Class clss : interfaces) {
+ // String[] strs = beanFactory.getBeanNamesForType(clss, true, false);
+ // beanNames.addAll(Arrays.asList(strs));
+ // }
+ //
+ // // Register service factory beans for them
+ // for (String beanName : beanNames) {
+ // 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);
+ //
+ // String exporterBeanName = "osgiService." + beanName;
+ // if (log.isTraceEnabled())
+ // log.debug("Registering OSGi service exporter "
+ // + exporterBeanName);
+ // ((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(
+ // exporterBeanName, bd);
+ // }
+ //
+ // long end = System.currentTimeMillis();
+ // if (log.isTraceEnabled())
+ // log.debug("Multiple services exported in " + (end - begin)
+ // + " ms in bundle.");
+ //
+ // }
+