Author: matthieu
Date: Tue Nov  3 16:52:28 2015
New Revision: 1712346

URL: http://svn.apache.org/viewvc?rev=1712346&view=rev
Log:
JAMES-1626 use FileSystem to find configuration files

Added:
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/CommonServicesModule.java
      - copied, changed from r1712345, 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
    
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/modules/TestFilesystemModule.java
      - copied, changed from r1712345, 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
Removed:
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
    
james/project/trunk/server/container/cassandra-guice/src/test/resources/cassandra.properties
    
james/project/trunk/server/container/cassandra-guice/src/test/resources/elasticsearch.properties
    
james/project/trunk/server/container/cassandra-guice/src/test/resources/jmx.properties
Modified:
    
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/JMXServer.java
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/FileConfigurationProvider.java
    
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
    
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
    
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
    
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
    
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
    
james/project/trunk/server/container/core/src/test/java/org/apache/james/core/filesystem/FileSystemImplTest.java
    
james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
    
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java

Modified: 
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
 (original)
+++ 
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
 Tue Nov  3 16:52:28 2015
@@ -77,9 +77,8 @@ public final class CassandraCluster {
 
     private Optional<Session> tryInitializeSession() {
         try {
-            Cluster cluster = 
ClusterFactory.createClusterForSingleServerWithoutPassWord(CLUSTER_IP, 
CLUSTER_PORT_TEST);
             Cluster clusterWithInitializedKeyspace = 
ClusterWithKeyspaceCreatedFactory
-                .clusterWithInitializedKeyspace(cluster, KEYSPACE_NAME, 
REPLICATION_FACTOR);
+                .clusterWithInitializedKeyspace(getCluster(), KEYSPACE_NAME, 
REPLICATION_FACTOR);
             return Optional.of(new 
SessionWithInitializedTablesFactory(module).createSession(clusterWithInitializedKeyspace,
 KEYSPACE_NAME));
         } catch (NoHostAvailableException exception) {
             sleep(SLEEP_BEFORE_RETRY);
@@ -87,6 +86,10 @@ public final class CassandraCluster {
         }
     }
 
+    public Cluster getCluster() {
+        return 
ClusterFactory.createClusterForSingleServerWithoutPassWord(CLUSTER_IP, 
CLUSTER_PORT_TEST);
+    }
+
     private void sleep(long sleepMs) {
         try {
             Thread.sleep(sleepMs);

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
 Tue Nov  3 16:52:28 2015
@@ -19,6 +19,7 @@
 
 package org.apache.james;
 
+import org.apache.james.modules.CommonServicesModule;
 import org.apache.james.modules.data.CassandraDomainListModule;
 import org.apache.james.modules.data.CassandraRecipientRewriteTableModule;
 import org.apache.james.modules.data.CassandraUsersRepositoryModule;
@@ -35,7 +36,6 @@ import org.apache.james.modules.server.C
 import org.apache.james.modules.server.ConfigurationPerformerModule;
 import org.apache.james.modules.server.ConfigurationProviderModule;
 import org.apache.james.modules.server.DNSServiceModule;
-import org.apache.james.modules.server.FileSystemModule;
 import org.apache.james.modules.server.JMXServerModule;
 import org.apache.james.modules.server.MailStoreRepositoryModule;
 import org.apache.james.modules.server.QuotaModule;
@@ -47,8 +47,9 @@ import com.google.inject.util.Modules;
 public class CassandraJamesServerMain {
 
     public static final Module defaultModule = Modules.combine(
-            new CassandraMailboxModule(),
+            new CommonServicesModule(),
             new ConfigurationPerformerModule(),
+            new CassandraMailboxModule(),
             new CassandraSessionModule(),
             new ElasticSearchMailboxModule(),
             new CassandraUsersRepositoryModule(),
@@ -61,7 +62,6 @@ public class CassandraJamesServerMain {
             new SMTPServerModule(),
             new LMTPServerModule(),
             new ActiveMQQueueModule(),
-            new FileSystemModule(),
             new SieveModule(),
             new MailStoreRepositoryModule(),
             new CamelMailetContainerModule(),
@@ -70,8 +70,8 @@ public class CassandraJamesServerMain {
 
     public static void main(String[] args) throws Exception {
         CassandraJamesServer server = new CassandraJamesServer(Modules.combine(
-            defaultModule,
-            new JMXServerModule()));
+                defaultModule,
+                new JMXServerModule()));
         server.start();
     }
 

Copied: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/CommonServicesModule.java
 (from r1712345, 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/CommonServicesModule.java?p2=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/CommonServicesModule.java&p1=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java&r1=1712345&r2=1712346&rev=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/CommonServicesModule.java
 Tue Nov  3 16:52:28 2015
@@ -16,21 +16,46 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.modules.server;
 
+package org.apache.james.modules;
+
+import java.util.Optional;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.commons.cli.MissingArgumentException;
 import org.apache.james.core.JamesServerResourceLoader;
 import org.apache.james.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
+import org.apache.james.utils.ConfigurationProvider;
+import org.apache.james.utils.FileConfigurationProvider;
 
 import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
 
-public class FileSystemModule extends AbstractModule {
-
+public class CommonServicesModule extends AbstractModule {
+    
+    public static final String CONFIGURATION_PATH = "configurationPath";
+    
     @Override
-    public void configure() {
-        
bind(JamesDirectoriesProvider.class).to(JamesServerResourceLoader.class);
+    protected void configure() {
         bind(FileSystem.class).to(FileSystemImpl.class);
+        bind(ConfigurationProvider.class).to(FileConfigurationProvider.class);
     }
 
+    @Provides @Singleton @Named(CONFIGURATION_PATH)
+    public String configurationPath() {
+        return FileSystem.FILE_PROTOCOL_AND_CONF;
+    }
+    
+    @Provides @Singleton
+    public JamesDirectoriesProvider directories() throws 
MissingArgumentException {
+        String rootDirectory = Optional
+                .ofNullable(System.getProperty("working.directory"))
+                .orElseThrow(() -> new MissingArgumentException("Server needs 
a working.directory env entry"));
+        return new JamesServerResourceLoader(rootDirectory);
+    }
+    
 }

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
 Tue Nov  3 16:52:28 2015
@@ -71,7 +71,7 @@ public class CassandraSessionModule exte
     }
 
     private PropertiesConfiguration getConfiguration(FileSystem fileSystem) 
throws FileNotFoundException, ConfigurationException {
-        return new 
PropertiesConfiguration(fileSystem.getFile("cassandra.properties"));
+        return new 
PropertiesConfiguration(fileSystem.getFile(FileSystem.FILE_PROTOCOL_AND_CONF + 
"cassandra.properties"));
     }
     
 }
\ No newline at end of file

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
 Tue Nov  3 16:52:28 2015
@@ -53,7 +53,7 @@ public class ElasticSearchMailboxModule
     @Provides
     @Singleton
     protected ClientProvider provideClientProvider(FileSystem fileSystem) 
throws ConfigurationException, FileNotFoundException {
-        PropertiesConfiguration propertiesReader = new 
PropertiesConfiguration(fileSystem.getFile("elasticsearch.properties"));
+        PropertiesConfiguration propertiesReader = new 
PropertiesConfiguration(fileSystem.getFile(FileSystem.FILE_PROTOCOL_AND_CONF + 
"elasticsearch.properties"));
         ClientProvider clientProvider = new 
ClientProviderImpl(propertiesReader.getString("elasticsearch.masterHost"),
             propertiesReader.getInt("elasticsearch.port"));
         IndexCreationFactory.createIndex(clientProvider,

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java
 Tue Nov  3 16:52:28 2015
@@ -19,8 +19,6 @@
 
 package org.apache.james.modules.protocols;
 
-import org.apache.james.core.filesystem.FileSystemImpl;
-import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
 import org.apache.james.utils.GuiceProtocolHandlerLoader;
 
@@ -30,7 +28,6 @@ public class ProtocolHandlerModule exten
 
     @Override
     protected void configure() {
-        bind(FileSystem.class).to(FileSystemImpl.class);
         bind(ProtocolHandlerLoader.class).to(GuiceProtocolHandlerLoader.class);
     }
 

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/JMXServer.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/JMXServer.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/JMXServer.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/JMXServer.java
 Tue Nov  3 16:52:28 2015
@@ -19,32 +19,39 @@
 
 package org.apache.james.modules.server;
 
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableMap;
-import org.apache.james.util.RestrictingRMISocketFactory;
-import org.apache.james.utils.PropertiesReader;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.rmi.registry.LocateRegistry;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
 import javax.annotation.PreDestroy;
+import javax.inject.Inject;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXConnectorServerFactory;
 import javax.management.remote.JMXServiceURL;
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.rmi.registry.LocateRegistry;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.util.RestrictingRMISocketFactory;
+
+import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableMap;
 
 public class JMXServer {
 
+    private final FileSystem fileSystem;
     private final Set<String> registeredKeys;
     private final Object lock;
     private JMXConnectorServer jmxConnectorServer;
     private boolean isStarted;
 
-    public JMXServer() {
+    @Inject
+    public JMXServer(FileSystem fileSystem) {
+        this.fileSystem = fileSystem;
         isStarted = false;
         registeredKeys = new HashSet<>();
         lock = new Object();
@@ -79,11 +86,11 @@ public class JMXServer {
     }
 
     private void doStart() {
-        PropertiesReader propertiesReader = new 
PropertiesReader("jmx.properties");
-        String address = propertiesReader.getProperty("jmx.address");
-        int port = Integer.parseInt(propertiesReader.getProperty("jmx.port"));
-        String serviceURL = "service:jmx:rmi://" + address + "/jndi/rmi://" + 
address+ ":" + port +"/jmxrmi";
         try {
+            PropertiesConfiguration configuration = new 
PropertiesConfiguration(fileSystem.getFile(FileSystem.FILE_PROTOCOL_AND_CONF + 
"jmx.properties"));
+            String address = configuration.getString("jmx.address");
+            int port = configuration.getInt("jmx.port");
+            String serviceURL = "service:jmx:rmi://" + address + 
"/jndi/rmi://" + address+ ":" + port +"/jmxrmi";
             RestrictingRMISocketFactory restrictingRMISocketFactory = new 
RestrictingRMISocketFactory(address);
             LocateRegistry.createRegistry(port, restrictingRMISocketFactory, 
restrictingRMISocketFactory);
 

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/FileConfigurationProvider.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/FileConfigurationProvider.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/FileConfigurationProvider.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/FileConfigurationProvider.java
 Tue Nov  3 16:52:28 2015
@@ -19,23 +19,40 @@
 
 package org.apache.james.utils;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
-import java.util.Optional;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.apache.commons.cli.MissingArgumentException;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.modules.CommonServicesModule;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.Iterables;
+import com.google.inject.Singleton;
 
+@Singleton
 public class FileConfigurationProvider implements ConfigurationProvider {
 
     private static final String CONFIGURATION_FILE_SUFFIX = ".xml";
-
+    
+    private final FileSystem fileSystem;
+    private final String configurationPrefix;
+
+    @Inject
+    public FileConfigurationProvider(FileSystem fileSystem, 
@Named(CommonServicesModule.CONFIGURATION_PATH) String configurationPrefix) 
throws MissingArgumentException {
+        this.fileSystem = fileSystem;
+        this.configurationPrefix = configurationPrefix;
+    }
+    
     @Override
     public HierarchicalConfiguration getConfiguration(String component) throws 
ConfigurationException {
         Preconditions.checkNotNull(component);
@@ -47,8 +64,11 @@ public class FileConfigurationProvider i
 
     private InputStream retrieveConfigInputStream(String 
configurationFileWithoutExtension) throws ConfigurationException {
         
Preconditions.checkArgument(!Strings.isNullOrEmpty(configurationFileWithoutExtension),
 "The configuration file name should not be empty or null");
-        return 
Optional.ofNullable(ClassLoader.getSystemResourceAsStream(configurationFileWithoutExtension
 + CONFIGURATION_FILE_SUFFIX))
-            .orElseThrow(() -> new ConfigurationException("Unable to locate 
configuration file " + configurationFileWithoutExtension + 
CONFIGURATION_FILE_SUFFIX));
+        try {
+            return fileSystem.getResource(configurationPrefix + 
configurationFileWithoutExtension + CONFIGURATION_FILE_SUFFIX);
+        } catch (IOException e) {
+            throw new ConfigurationException("Unable to locate configuration 
file " + configurationFileWithoutExtension + CONFIGURATION_FILE_SUFFIX, e);
+        }
     }
 
     private XMLConfiguration getConfig(InputStream configStream) throws 
ConfigurationException {

Modified: 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
 Tue Nov  3 16:52:28 2015
@@ -20,7 +20,6 @@ package org.apache.james;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
@@ -29,10 +28,9 @@ import java.nio.charset.Charset;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.core.JamesServerResourceLoader;
-import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 import org.apache.james.mailbox.elasticsearch.EmbeddedElasticSearch;
 import org.apache.james.modules.TestElasticSearchModule;
+import org.apache.james.modules.TestFilesystemModule;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -62,25 +60,6 @@ public class CassandraJamesServerTest {
     @Rule
     public RuleChain chain = 
RuleChain.outerRule(temporaryFolder).around(embeddedElasticSearch);
 
-    private static class TestFilesystemModule extends AbstractModule {
-        
-        JamesServerResourceLoader jamesServerResourceLoader;
-
-        TestFilesystemModule(File tmpDir) {
-            jamesServerResourceLoader = new JamesServerResourceLoader() {
-                @Override
-                public String getRootDirectory() {
-                    return tmpDir.getAbsolutePath();
-                }
-            };
-        }
-        
-        @Override
-        protected void configure() {
-            
bind(JamesDirectoriesProvider.class).toInstance(jamesServerResourceLoader);
-        }
-    }
-    
     @Before
     public void setup() throws Exception {
         server = new 
CassandraJamesServer(Modules.override(CassandraJamesServerMain.defaultModule)

Copied: 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/modules/TestFilesystemModule.java
 (from r1712345, 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/modules/TestFilesystemModule.java?p2=james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/modules/TestFilesystemModule.java&p1=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java&r1=1712345&r2=1712346&rev=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/modules/TestFilesystemModule.java
 Tue Nov  3 16:52:28 2015
@@ -16,21 +16,31 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.modules.server;
+
+package org.apache.james.modules;
+
+import java.io.File;
 
 import org.apache.james.core.JamesServerResourceLoader;
-import org.apache.james.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
+import org.apache.james.modules.CommonServicesModule;
 
 import com.google.inject.AbstractModule;
+import com.google.inject.name.Names;
 
-public class FileSystemModule extends AbstractModule {
+public class TestFilesystemModule extends AbstractModule {
+    
+    private File workingDirectory;
 
-    @Override
-    public void configure() {
-        
bind(JamesDirectoriesProvider.class).to(JamesServerResourceLoader.class);
-        bind(FileSystem.class).to(FileSystemImpl.class);
+    public TestFilesystemModule(File workingDirectory) {
+        this.workingDirectory = workingDirectory;
     }
 
+    @Override
+    protected void configure() {
+        bind(JamesDirectoriesProvider.class).toInstance(new 
JamesServerResourceLoader(workingDirectory.getAbsolutePath()));
+        
bindConstant().annotatedWith(Names.named(CommonServicesModule.CONFIGURATION_PATH)).to(FileSystem.CLASSPATH_PROTOCOL);
+    }
+    
 }

Modified: 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java
 Tue Nov  3 16:52:28 2015
@@ -21,8 +21,12 @@ package org.apache.james.utils;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.commons.cli.MissingArgumentException;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.core.filesystem.FileSystemImpl;
+import org.apache.james.filesystem.api.FileSystem;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -42,8 +46,9 @@ public class FileConfigurationProviderTe
     private FileConfigurationProvider configurationProvider;
 
     @Before
-    public void setUp() {
-        configurationProvider = new FileConfigurationProvider();
+    public void setUp() throws MissingArgumentException {
+        FileSystemImpl fileSystem = new FileSystemImpl(new 
JamesServerResourceLoader("../"));
+        configurationProvider = new FileConfigurationProvider(fileSystem, 
FileSystem.CLASSPATH_PROTOCOL);
     }
 
     @Test(expected = IllegalArgumentException.class)

Modified: 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java
 Tue Nov  3 16:52:28 2015
@@ -25,6 +25,7 @@ import static org.assertj.core.api.Asser
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.james.core.JamesServerResourceLoader;
 import org.apache.james.core.filesystem.FileSystemImpl;
+import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
 import org.apache.james.mailrepository.file.FileMailRepository;
 import org.apache.james.modules.server.MailStoreRepositoryModule;
@@ -36,13 +37,15 @@ import com.google.common.collect.Sets;
 public class InMemoryMailRepositoryStoreTest {
 
     private InMemoryMailRepositoryStore repositoryStore;
+    private FileSystemImpl fileSystem;
 
     @Before
     public void setUp() throws Exception {
+        fileSystem = new FileSystemImpl(new JamesServerResourceLoader("../"));
         repositoryStore = new InMemoryMailRepositoryStore(Sets.newHashSet(
                 new MailStoreRepositoryModule.FileMailRepositoryProvider(
-                        new FileSystemImpl(new JamesServerResourceLoader()))));
-        repositoryStore.configure(new 
FileConfigurationProvider().getConfiguration("mailrepositorystore"));
+                        fileSystem)));
+        repositoryStore.configure(new FileConfigurationProvider(fileSystem, 
FileSystem.CLASSPATH_PROTOCOL).getConfiguration("mailrepositorystore"));
         repositoryStore.init();
     }
 
@@ -71,9 +74,9 @@ public class InMemoryMailRepositoryStore
         try {
             repositoryStore = new InMemoryMailRepositoryStore(Sets.newHashSet(
                     new MailStoreRepositoryModule.FileMailRepositoryProvider(
-                            new FileSystemImpl(new 
JamesServerResourceLoader()))));
-            repositoryStore.configure(new 
FileConfigurationProvider().getConfiguration("fakemailrepositorystore"));
-        } catch (Exception e) {
+                            fileSystem)));
+            repositoryStore.configure(new 
FileConfigurationProvider(fileSystem, 
FileSystem.CLASSPATH_PROTOCOL).getConfiguration("fakemailrepositorystore"));
+        } catch (ConfigurationException e) {
             fail("Unexpected failure : ", e);
         }
         repositoryStore.init();

Modified: 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
 (original)
+++ 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/JamesServerResourceLoader.java
 Tue Nov  3 16:52:28 2015
@@ -22,6 +22,12 @@ import org.apache.james.filesystem.api.J
 
 public class JamesServerResourceLoader implements JamesDirectoriesProvider {
 
+    private final String rootDirectory;
+
+    public JamesServerResourceLoader(String rootDirectory) {
+        this.rootDirectory = rootDirectory;
+    }
+
     /**
      * @see 
org.apache.james.container.spring.resource.JamesResourceLoader#getAbsoluteDirectory()
      */
@@ -60,7 +66,7 @@ public class JamesServerResourceLoader i
      * 
org.apache.james.container.spring.resource.JamesResourceLoader#getRootDirectory()
      */
     public String getRootDirectory() {
-        return "../";
+        return rootDirectory;
     }
 
 }
\ No newline at end of file

Modified: 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
 (original)
+++ 
james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
 Tue Nov  3 16:52:28 2015
@@ -24,10 +24,12 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import javax.inject.Inject;
+import javax.inject.Singleton;
 
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 
+@Singleton
 public class FileSystemImpl implements FileSystem {
 
     private final JamesDirectoriesProvider directoryProvider;

Modified: 
james/project/trunk/server/container/core/src/test/java/org/apache/james/core/filesystem/FileSystemImplTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/core/src/test/java/org/apache/james/core/filesystem/FileSystemImplTest.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/core/src/test/java/org/apache/james/core/filesystem/FileSystemImplTest.java
 (original)
+++ 
james/project/trunk/server/container/core/src/test/java/org/apache/james/core/filesystem/FileSystemImplTest.java
 Tue Nov  3 16:52:28 2015
@@ -26,20 +26,7 @@ public class FileSystemImplTest extends
 
     @Override
     protected FileSystem buildFileSystem(String configurationRootDirectory) {
-        return new FileSystemImpl(new 
TestDirectoryProvider(configurationRootDirectory));
+        return new FileSystemImpl(new 
JamesServerResourceLoader(configurationRootDirectory));
     }
     
-    private class TestDirectoryProvider extends JamesServerResourceLoader {
-        private String configurationRootDirectory;
-
-        public TestDirectoryProvider(String configurationRootDirectory) {
-            this.configurationRootDirectory = configurationRootDirectory;
-        }
-
-        @Override
-        public String getRootDirectory() {
-            return configurationRootDirectory;
-        }
-    }
-
 }

Modified: 
james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
 (original)
+++ 
james/project/trunk/server/container/spring/src/main/java/org/apache/james/container/spring/context/JamesServerApplicationContext.java
 Tue Nov  3 16:52:28 2015
@@ -34,7 +34,7 @@ public class JamesServerApplicationConte
      * The resourceloader to use. This must be defined as static, otherwise it
      * will fail to startup..
      */
-    private final static JamesResourceLoader resourceLoader = new 
DefaultJamesResourceLoader(new JamesServerResourceLoader());
+    private final static JamesResourceLoader resourceLoader = new 
DefaultJamesResourceLoader(new JamesServerResourceLoader("../"));
 
     public JamesServerApplicationContext(String[] configs) {
         super(configs);

Modified: 
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java?rev=1712346&r1=1712345&r2=1712346&view=diff
==============================================================================
--- 
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
 (original)
+++ 
james/project/trunk/server/container/spring/src/test/java/org/apache/james/container/spring/filesystem/FileSystemImplTest.java
 Tue Nov  3 16:52:28 2015
@@ -44,21 +44,7 @@ public class FileSystemImplTest extends
 
         @Override
         public JamesResourceLoader getResourceLoader() {
-            return new DefaultJamesResourceLoader(new 
TestDirectoryProvider(configurationRootDirectory));
-        }
-    }
-
-    private static class TestDirectoryProvider extends 
JamesServerResourceLoader {
-
-        private String configurationRootDirectory;
-
-        public TestDirectoryProvider(String configurationRootDirectory) {
-            this.configurationRootDirectory = configurationRootDirectory;
-        }
-
-        @Override
-        public String getRootDirectory() {
-            return configurationRootDirectory;
+            return new DefaultJamesResourceLoader(new 
JamesServerResourceLoader(configurationRootDirectory));
         }
     }
 




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to