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
11
12
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 }