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 @@ +