Index: spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java
===================================================================
--- spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java (revision 667185)
+++ spring-deployment/src/main/java/org/apache/james/container/spring/adaptor/AvalonConfigurationFileProvider.java (working copy)
@@ -21,6 +21,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.phoenix.tools.configuration.ConfigurationBuilder;
import org.apache.james.container.spring.configuration.ConfigurationInterceptor;
+import org.apache.james.services.FileSystem;
import org.springframework.core.io.Resource;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationContext;
@@ -31,6 +32,7 @@
import java.util.List;
import java.io.InputStream;
import java.io.IOException;
+import java.io.File;
/**
* loads the well-known classic James configuration file
@@ -39,29 +41,38 @@
*/
public class AvalonConfigurationFileProvider implements ConfigurationProvider, ApplicationContextAware {
- private String absoluteFilePath;
private List configurationInterceptors;
private ApplicationContext applicationContext;
+ private FileSystem fileSystem;
private String configuration;
- public void setConfigurationResource(String configuration) {
- this.configuration = configuration;
- }
-
public Configuration getConfiguration() {
- Resource resource = applicationContext.getResource(configuration);
- InputStream inputStream;
- try {
- inputStream = resource.getInputStream();
- } catch (IOException e) {
- throw new RuntimeException("could not locate configuration file " + configuration, e);
+ InputStream inputStream = null;
+ String systemId = null;
+ if (fileSystem != null) {
+ try {
+ File configurationFile = fileSystem.getFile(configuration);
+ systemId = configurationFile.toURL().toString();
+ inputStream = fileSystem.getResource(configuration);
+ } catch (IOException e) {
+ //try another way
+ }
}
+ if (inputStream == null) {
+ Resource resource = applicationContext.getResource(configuration);
+ try {
+ inputStream = resource.getInputStream();
+ systemId = resource.getURL().toString();
+ } catch (IOException e) {
+ throw new RuntimeException("could not locate configuration file " + configuration, e);
+ }
+ }
InputSource inputSource = new InputSource(inputStream);
Configuration configuration;
try
{
- inputSource.setSystemId(resource.getURL().toString());
+ inputSource.setSystemId(systemId);
configuration = ConfigurationBuilder.build(inputSource, null, null);
}
catch( final Exception e )
@@ -89,4 +100,12 @@
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
+
+ public void setConfigurationResource(String configuration) {
+ this.configuration = configuration;
+ }
+
+ public void setFileSystem(FileSystem fileSystem) {
+ this.fileSystem = fileSystem;
+ }
}
Index: spring-deployment/src/main/java/org/apache/james/container/spring/beanfactory/AvalonBeanDefinitionReader.java
===================================================================
--- spring-deployment/src/main/java/org/apache/james/container/spring/beanfactory/AvalonBeanDefinitionReader.java (revision 667185)
+++ spring-deployment/src/main/java/org/apache/james/container/spring/beanfactory/AvalonBeanDefinitionReader.java (working copy)
@@ -138,6 +138,7 @@
private Configuration getConfiguration(Resource resource) throws IOException {
InputSource inputSource = new InputSource(resource.getInputStream());
+ inputSource.setSystemId(resource.getURL().toString());
try
{
Configuration configuration = ConfigurationBuilder.build(inputSource, null, null);
Index: spring-deployment/src/main/config/james/spring-beans.xml
===================================================================
--- spring-deployment/src/main/config/james/spring-beans.xml (revision 667185)
+++ spring-deployment/src/main/config/james/spring-beans.xml (working copy)
@@ -86,6 +86,7 @@
+