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]