1 package org.kuali.ole;
2
3 import org.kuali.rice.core.api.config.ConfigurationException;
4 import org.kuali.rice.core.api.config.property.Config;
5 import org.kuali.rice.core.api.config.property.ConfigContext;
6 import org.kuali.rice.core.impl.config.property.JAXBConfigImpl;
7 import org.springframework.beans.factory.FactoryBean;
8
9 import java.util.List;
10
11
12
13
14
15
16
17
18 public class OleConfigFactoryBean implements FactoryBean<Config> {
19 private List<String> configLocations;
20 private boolean initialize = false;
21 private boolean systemPropertiesAlwaysWin = true;
22 public static String CONFIG_OVERRIDE_LOCATION;
23
24
25 @Override
26 public org.kuali.rice.core.api.config.property.Config getObject() throws Exception {
27
28 org.kuali.rice.core.api.config.property.Config oldConfig = null;
29
30 if (getConfigLocations() == null) {
31 throw new ConfigurationException("No config locations declared, at least one is required");
32 }
33
34 if (ConfigContext.getCurrentContextConfig() != null) {
35 oldConfig = ConfigContext.getCurrentContextConfig();
36 }
37
38 JAXBConfigImpl config = null;
39 if (CONFIG_OVERRIDE_LOCATION != null) {
40 config = new JAXBConfigImpl(CONFIG_OVERRIDE_LOCATION, oldConfig);
41 } else {
42 config = new JAXBConfigImpl(getConfigLocations(), oldConfig);
43 }
44
45 config.setSystemOverride(systemPropertiesAlwaysWin);
46 config.parseConfig();
47
48 if (initialize) {
49 ConfigContext.init(config);
50 }
51
52 return config;
53 }
54
55 @Override
56 public Class<Config> getObjectType() {
57 return org.kuali.rice.core.api.config.property.Config.class;
58 }
59
60 @Override
61 public boolean isSingleton() {
62 return true;
63 }
64
65 public List<String> getConfigLocations() {
66 return this.configLocations;
67 }
68
69 public void setConfigLocations(List<String> configLocations) {
70 this.configLocations = configLocations;
71 }
72
73 public void setInitialize(boolean initialize) {
74 this.initialize = initialize;
75 }
76
77 public boolean isSystemPropertiesAlwaysWin() {
78 return systemPropertiesAlwaysWin;
79 }
80
81 public void setSystemPropertiesAlwaysWin(boolean systemPropertiesAlwaysWin) {
82 this.systemPropertiesAlwaysWin = systemPropertiesAlwaysWin;
83 }
84 }