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   import javax.annotation.Nonnull;
10  
11  /**
12   * Host container implementation that uses the bundle's application context
13   *
14   * @since 2.2.0
15   */
16  public class SpringHostContainer implements HostContainer, ApplicationContextAware {
17      private ApplicationContext applicationContext;
18  
19      public <T> T create(Class<T> moduleClass) throws IllegalArgumentException {
20          if (applicationContext == null) {
21              throw new IllegalStateException("Application context missing");
22          }
23          //noinspection unchecked
24          return (T) applicationContext.getAutowireCapableBeanFactory().createBean(moduleClass, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, false);
25      }
26  
27      public void setApplicationContext(@Nonnull ApplicationContext applicationContext) throws BeansException {
28          this.applicationContext = applicationContext;
29      }
30  }