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  {
16      private ApplicationContext applicationContext;
17  
18      public <T> T create(Class<T> moduleClass) throws IllegalArgumentException
19      {
20          if (applicationContext == null)
21          {
22              throw new IllegalStateException("Application context missing");
23          }
24          return (T) applicationContext.getAutowireCapableBeanFactory().createBean(moduleClass, AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, false);
25      }
26  
27      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
28      {
29          this.applicationContext = applicationContext;
30      }
31  }