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
13
14
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
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 }