| Method from com.opensymphony.xwork2.config.ConfigurationManager Detail: |
public void addConfigurationProvider(ConfigurationProvider provider) {
addContainerProvider(provider);
} Deprecated! Since - 2.1, use #addContainerProvider()
adds a configuration provider to the List of ConfigurationProviders. a given ConfigurationProvider may be added
more than once |
public void addContainerProvider(ContainerProvider provider) {
if (!containerProviders.contains(provider)) {
containerProviders.add(provider);
}
}
adds a configuration provider to the List of ConfigurationProviders. a given ConfigurationProvider may be added
more than once |
public void clearConfigurationProviders() {
clearContainerProviders();
} Deprecated! Since - 2.1, use #clearContainerProviders()
clears the registered ConfigurationProviders. this method will call destroy() on each of the registered
ConfigurationProviders |
public void clearContainerProviders() {
for (ContainerProvider containerProvider : containerProviders) {
try {
containerProvider.destroy();
}
catch(Exception e) {
LOG.warn("error while destroying container provider ["+containerProvider+"]", e);
}
}
containerProviders.clear();
}
|
public synchronized void conditionalReload() {
if (FileManager.isReloadingConfigs()) {
boolean reload;
if (LOG.isDebugEnabled()) {
LOG.debug("Checking ConfigurationProviders for reload.");
}
reload = false;
List< ContainerProvider > providers = getContainerProviders();
for (ContainerProvider provider : providers) {
if (provider.needsReload()) {
if (LOG.isInfoEnabled()) {
LOG.info("Detected container provider "+provider+" needs to be reloaded. Reloading all providers.");
}
reload = true;
//break;
}
}
if (packageProviders != null && reload) {
for (PackageProvider provider : packageProviders) {
if (provider.needsReload()) {
if (LOG.isInfoEnabled()) {
LOG.info("Detected package provider "+provider+" needs to be reloaded. Reloading all providers.");
}
reload = true;
//break;
}
}
}
if (reload) {
for (ContainerProvider containerProvider : containerProviders) {
try {
containerProvider.destroy();
}
catch(Exception e) {
LOG.warn("error while destroying configuration provider ["+containerProvider+"]", e);
}
}
packageProviders = configuration.reloadContainer(providers);
}
}
}
Reloads the Configuration files if the configuration files indicate that they need to be reloaded. |
public synchronized void destroyConfiguration() {
clearConfigurationProviders(); // let's destroy the ConfigurationProvider first
containerProviders = new CopyOnWriteArrayList< ContainerProvider >();
if (configuration != null)
configuration.destroy(); // let's destroy it first, before nulling it.
configuration = null;
}
Destroy its managing Configuration instance |
public synchronized Configuration getConfiguration() {
if (configuration == null) {
setConfiguration(new DefaultConfiguration(defaultFrameworkBeanName));
try {
configuration.reloadContainer(getContainerProviders());
} catch (ConfigurationException e) {
setConfiguration(null);
throw new ConfigurationException("Unable to load configuration.", e);
}
} else {
conditionalReload();
}
return configuration;
}
Get the current XWork configuration object. By default an instance of DefaultConfiguration will be returned |
public List<ConfigurationProvider> getConfigurationProviders() {
List< ContainerProvider > contProviders = getContainerProviders();
List< ConfigurationProvider > providers = new ArrayList< ConfigurationProvider >();
for (ContainerProvider prov : contProviders) {
if (prov instanceof ConfigurationProvider) {
providers.add((ConfigurationProvider) prov);
}
}
return providers;
} Deprecated! Since - 2.1, use #getContainerProviders()
Get the current list of ConfigurationProviders. If no custom ConfigurationProviders have been added, this method
will return a list containing only the default ConfigurationProvider, XMLConfigurationProvider. if a custom
ConfigurationProvider has been added, then the XmlConfigurationProvider must be added by hand.
WARNING: This returns only ContainerProviders that can be cast into ConfigurationProviders |
public List<ContainerProvider> getContainerProviders() {
providerLock.lock();
try {
if (containerProviders.size() == 0) {
containerProviders.add(new XWorkConfigurationProvider());
containerProviders.add(new XmlConfigurationProvider("xwork.xml", false));
}
return containerProviders;
} finally {
providerLock.unlock();
}
}
Get the current list of ConfigurationProviders. If no custom ConfigurationProviders have been added, this method
will return a list containing only the default ConfigurationProvider, XMLConfigurationProvider. if a custom
ConfigurationProvider has been added, then the XmlConfigurationProvider must be added by hand.
TODO: the lazy instantiation of XmlConfigurationProvider should be refactored to be elsewhere. the behavior described above seems unintuitive. |
public synchronized void reload() {
packageProviders = getConfiguration().reloadContainer(getContainerProviders());
}
|
public synchronized void setConfiguration(Configuration configuration) {
this.configuration = configuration;
}
|
public void setConfigurationProviders(List<ConfigurationProvider> configurationProviders) {
// Silly copy necessary due to lack of ability to cast generic lists
List< ContainerProvider > contProviders = new ArrayList< ContainerProvider >();
contProviders.addAll(configurationProviders);
setContainerProviders(contProviders);
} Deprecated! Since - 2.1, use #setContainerProvider()
Set the list of configuration providers |
public void setContainerProviders(List<ContainerProvider> containerProviders) {
providerLock.lock();
try {
this.containerProviders = new CopyOnWriteArrayList< ContainerProvider >(containerProviders);
} finally {
providerLock.unlock();
}
}
Set the list of configuration providers |