1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.james.container.spring.beanfactory;
20
21 import org.springframework.beans.BeansException;
22 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
23 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
24 import org.springframework.context.ApplicationContext;
25 import org.springframework.context.support.AbstractRefreshableApplicationContext;
26 import org.springframework.core.io.ClassPathResource;
27 import org.springframework.core.io.Resource;
28
29 import java.io.IOException;
30
31
32
33
34
35
36
37
38 public class AvalonApplicationContext extends AbstractRefreshableApplicationContext {
39
40 public static final String SPRING_BEANS_CONF = "spring-beans.xml";
41 public static final String PHOENIX_ASSEMBLY_CONF = "assembly.xml";
42
43 private Resource containerConfigurationResource;
44 private Resource applicationConfigurationResource;
45
46
47
48
49 public static AvalonApplicationContext newAvalonApplicationContext() {
50 return newAvalonApplicationContext(SPRING_BEANS_CONF, PHOENIX_ASSEMBLY_CONF);
51 }
52
53 public static AvalonApplicationContext newAvalonApplicationContext(String containerConf, String applicationConf) {
54 return newAvalonApplicationContext(new ClassPathResource(containerConf), new ClassPathResource(applicationConf));
55 }
56
57
58 public static AvalonApplicationContext newAvalonApplicationContext(Resource containerConfigurationResource,
59 Resource applicationConfigurationResource) {
60 AvalonApplicationContext result = new AvalonApplicationContext(null, containerConfigurationResource, applicationConfigurationResource);
61 result.refresh();
62 return result;
63 }
64
65 public AvalonApplicationContext(ApplicationContext parent,
66 Resource containerConfigurationResource,
67 Resource applicationConfigurationResource) {
68 super(parent);
69 this.containerConfigurationResource = containerConfigurationResource;
70 this.applicationConfigurationResource = applicationConfigurationResource;
71 }
72
73 protected void loadBeanDefinitions(DefaultListableBeanFactory defaultListableBeanFactory) throws IOException, BeansException {
74 loadAvalonBasedBeanDefinitions(defaultListableBeanFactory, containerConfigurationResource, applicationConfigurationResource);
75 }
76
77 public static void loadAvalonBasedBeanDefinitions(DefaultListableBeanFactory defaultListableBeanFactory, Resource containerConfigurationResource, Resource applicationConfigurationResource) {
78 XmlBeanDefinitionReader containerBeanDefinitionReader = new XmlBeanDefinitionReader(defaultListableBeanFactory);
79 int containerBeanCount = containerBeanDefinitionReader.loadBeanDefinitions(containerConfigurationResource);
80
81 AvalonBeanDefinitionReader applicationBeanDefinitionReader = new AvalonBeanDefinitionReader(defaultListableBeanFactory);
82 int applicationBeanCount = applicationBeanDefinitionReader.loadBeanDefinitions(applicationConfigurationResource);
83
84 int totalBeanCount = containerBeanCount + applicationBeanCount;
85 }
86 }