View Javadoc
1   package com.atlassian.plugin.osgi.bridge.external;
2   
3   import com.atlassian.plugin.hostcontainer.HostContainer;
4   import org.springframework.beans.BeansException;
5   import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
6   import org.springframework.context.ApplicationContext;
7   import org.springframework.context.ApplicationContextAware;
8   
9   /**
10   * Host container implementation that uses the bundle's application context
11   *
12   * @since 2.2.0
13   */
14  public class SpringHostContainer implements HostContainer, ApplicationContextAware {
15      private ApplicationContext applicationContext;
16  
17      public <T> T create(Class<T> moduleClass) throws IllegalArgumentException {
18          if (applicationContext == null) {
19              throw new IllegalStateException("Application context missing");
20          }
21          return (T) applicationContext.getAutowireCapableBeanFactory().createBean(moduleClass, AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, false);
22      }
23  
24      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
25          this.applicationContext = applicationContext;
26      }
27  }