Author: ngn
Date: Sat Oct 18 22:33:49 2008
New Revision: 705958
URL: http://svn.apache.org/viewvc?rev=705958&view=rev
Log:
Finishing up bundle config
Making PropertiesUserManager load from classpath if file not found on file
system, useful when embedding into for example web applications
Cleaning up some "throws"
Modified:
mina/ftpserver/trunk/core/pom.xml
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml
Modified: mina/ftpserver/trunk/core/pom.xml
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/pom.xml?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/pom.xml (original)
+++ mina/ftpserver/trunk/core/pom.xml Sat Oct 18 22:33:49 2008
@@ -70,14 +70,17 @@
org.apache.ftpserver.filesystem.nativefs,
org.apache.ftpserver.ftpletcontainer,
org.apache.ftpserver.listener, org.apache.ftpserver.main,
-
org.apache.ftpserver.message, org.apache.ftpserver.ssl
+
org.apache.ftpserver.message, org.apache.ftpserver.ssl,
+
org.apache.ftpserver.usermanager
</Export-Package>
<Private-Package>
org.apache.ftpserver.command.impl,
+
org.apache.ftpserver.command.impl.listing,
org.apache.ftpserver.config.spring,
org.apache.ftpserver.filesystem.nativefs.impl,
org.apache.ftpserver.ftpletcontainer.impl,
org.apache.ftpserver.impl, org.apache.ftpserver.listener.nio,
org.apache.ftpserver.message.impl, org.apache.ftpserver.ssl.impl,
+
org.apache.ftpserver.usermanager.impl,
org.apache.ftpserver.util</Private-Package>
<Import-Package>
org.springframework.beans.factory.config;resolution:=optional;version="2.5",
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
(original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
Sat Oct 18 22:33:49 2008
@@ -19,6 +19,8 @@
package org.apache.ftpserver;
+import org.apache.ftpserver.ftplet.FtpException;
+
/**
* This is the starting point of all the servers. It invokes a new listener
@@ -33,7 +35,7 @@
/**
* Start the server. Open a new listener thread.
*/
- void start() throws Exception;
+ void start() throws FtpException;
/**
* Stop the server. Stop the listener thread.
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServerFactory.java
Sat Oct 18 22:33:49 2008
@@ -47,7 +47,7 @@
*
* @throws Exception
*/
- public FtpServerFactory() throws Exception {
+ public FtpServerFactory() {
serverContext = new DefaultFtpServerContext();
}
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
Sat Oct 18 22:33:49 2008
@@ -26,6 +26,9 @@
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpFile;
import org.apache.ftpserver.ftplet.User;
+import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* File system view based on native file system. Here the root directory will
be
@@ -36,6 +39,10 @@
*/
public class NativeFileSystemView implements FileSystemView {
+ private final Logger LOG = LoggerFactory
+ .getLogger(NativeFileSystemView.class);
+
+
// the root directory will always end with '/'.
private String rootDir;
@@ -77,6 +84,9 @@
if (!rootDir.endsWith("/")) {
rootDir += '/';
}
+
+ LOG.debug("Native filesystem view created for user \"{}\" with root
\"{}\"", user.getName(), rootDir);
+
this.rootDir = rootDir;
this.user = user;
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpServerContext.java
Sat Oct 18 22:33:49 2008
@@ -86,7 +86,7 @@
}
- public DefaultFtpServerContext() throws Exception {
+ public DefaultFtpServerContext() {
// create the default listener
listeners.put("default", new ListenerFactory().createListener());
}
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
Sat Oct 18 22:33:49 2008
@@ -21,7 +21,10 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -105,12 +108,16 @@
in = getClass().getClassLoader().getResourceAsStream(
defaultResourceName);
if (in != null) {
- pair.defaultProperties.load(in);
+ try {
+ pair.defaultProperties.load(in);
+ } catch (IOException e) {
+ throw new FtpServerConfigurationException(
+ "Failed to load messages from \"" +
defaultResourceName + "\", file not found in classpath");
+ }
+ } else {
+ throw new FtpServerConfigurationException(
+ "Failed to load messages from \"" +
defaultResourceName + "\", file not found in classpath");
}
- } catch (Exception ex) {
- LOG.warn("MessageResourceImpl.createPropertiesPair()", ex);
- throw new FtpServerConfigurationException(
- "MessageResourceImpl.createPropertiesPair()", ex);
} finally {
IoUtils.close(in);
}
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/PropertiesUserManagerFactory.java
Sat Oct 18 22:33:49 2008
@@ -23,6 +23,8 @@
import org.apache.ftpserver.usermanager.impl.Md5PasswordEncryptor;
import org.apache.ftpserver.usermanager.impl.PropertiesUserManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Factory for the properties file based <code>UserManager</code>
implementation.
@@ -32,12 +34,17 @@
*/
public class PropertiesUserManagerFactory implements UserManagerFactory {
+
+
private String adminName = "admin";
- private File userDataFile = new File("./res/user.gen");
+ private File userDataFile;
private PasswordEncryptor passwordEncryptor = new Md5PasswordEncryptor();
+ /**
+ * Creates a [EMAIL PROTECTED] PropertiesUserManager} instance based on
the provided configuration
+ */
public PropertiesUserManager createUserManager() {
return new PropertiesUserManager(passwordEncryptor, userDataFile,
adminName);
}
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/usermanager/impl/PropertiesUserManager.java
Sat Oct 18 22:33:49 2008
@@ -23,6 +23,7 @@
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
@@ -60,7 +61,7 @@
private BaseProperties userDataProp;
- private File userDataFile = new File("./res/user.gen");
+ private File userDataFile;
@@ -75,15 +76,38 @@
try {
userDataProp = new BaseProperties();
- if (userDataFile != null && userDataFile.exists()) {
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(userDataFile);
- userDataProp.load(fis);
- } finally {
- IoUtils.close(fis);
+ if (userDataFile != null) {
+ LOG.debug("File configured, will try loading");
+
+ if(userDataFile.exists()) {
+ LOG.debug("File found on file system");
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(userDataFile);
+ userDataProp.load(fis);
+ } finally {
+ IoUtils.close(fis);
+ }
+ } else {
+ // try loading it from the classpath
+ LOG.debug("File not found on file system, try loading from
classpath");
+
+ InputStream is =
getClass().getClassLoader().getResourceAsStream(userDataFile.getPath());
+
+ if(is != null) {
+ try {
+ userDataProp.load(is);
+ } finally {
+ IoUtils.close(is);
+ }
+ } else {
+ throw new FtpServerConfigurationException(
+ "User data file specified but could not be
located, " +
+ "neither on the file system or in the
classpath: "
+ + userDataFile.getPath());
+ }
}
- }
+ }
} catch (IOException e) {
throw new FtpServerConfigurationException(
"Error loading user data file : "
Modified:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
(original)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FileUserManagerConfigTest.java
Sat Oct 18 22:33:49 2008
@@ -35,6 +35,8 @@
*/
public class FileUserManagerConfigTest extends SpringConfigTestTemplate {
+ private static final String USER_FILE_PATH =
"src/test/resources/users.properties";
+
private PropertiesUserManager createPropertiesUserManager(String config) {
DefaultFtpServer server = createServer(config);
@@ -42,36 +44,36 @@
}
public void testFile() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"/tmp/foo.users\" />");
- assertEquals(new File("/tmp/foo.users"), um.getFile());
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
/>");
+ assertEquals(new File("src/test/resources/users.properties"),
um.getFile());
}
public void testMd5PasswordEncryptor() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"foo\"
encrypt-passwords=\"md5\" />");
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
encrypt-passwords=\"md5\" />");
assertTrue(um.getPasswordEncryptor() instanceof Md5PasswordEncryptor);
}
public void testTruePasswordEncryptor() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"foo\"
encrypt-passwords=\"true\" />");
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
encrypt-passwords=\"true\" />");
assertTrue(um.getPasswordEncryptor() instanceof Md5PasswordEncryptor);
}
public void testNonePasswordEncryptor() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"foo\"
encrypt-passwords=\"clear\" />");
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
encrypt-passwords=\"clear\" />");
assertTrue(um.getPasswordEncryptor() instanceof
ClearTextPasswordEncryptor);
}
public void testSaltedPasswordEncryptor() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"foo\"
encrypt-passwords=\"salted\" />");
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
encrypt-passwords=\"salted\" />");
assertTrue(um.getPasswordEncryptor() instanceof
SaltedPasswordEncryptor);
}
public void testFalsePasswordEncryptor() throws Throwable {
- PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"foo\"
encrypt-passwords=\"false\" />");
+ PropertiesUserManager um =
createPropertiesUserManager("<file-user-manager file=\"" + USER_FILE_PATH + "\"
encrypt-passwords=\"false\" />");
assertTrue(um.getPasswordEncryptor() instanceof
ClearTextPasswordEncryptor);
}
Modified:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
(original)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/MyCustomListener.java
Sat Oct 18 22:33:49 2008
@@ -85,7 +85,7 @@
}
- public void start(FtpServerContext serverContext) throws Exception {
+ public void start(FtpServerContext serverContext) {
}
Modified:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
(original)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
Sat Oct 18 22:33:49 2008
@@ -100,10 +100,9 @@
String[] languages = server.getServerContext().getMessageResource()
.getAvailableLanguages();
- assertEquals(3, languages.length);
- assertEquals("se", languages[0]);
- assertEquals("no", languages[1]);
- assertEquals("da", languages[2]);
+ assertEquals(2, languages.length);
+ assertEquals("en", languages[0]);
+ assertEquals("zh-tw", languages[1]);
NativeFileSystemFactory fs = (NativeFileSystemFactory)
server.getFileSystem();
assertTrue(fs.isCreateHome());
Modified:
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml?rev=705958&r1=705957&r2=705958&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml
(original)
+++
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml
Sat Oct 18 22:33:49 2008
@@ -64,7 +64,7 @@
</ftplet>
</ftplets>
- <!--<file-user-manager file="/tmp/foo.users"
encrypt-passwords="true" />-->
+ <!--<file-user-manager
file="src/test/resources/users.properties" encrypt-passwords="true" />-->
<user-manager>
<beans:bean
class="org.apache.ftpserver.config.spring.MockUserManager"/>
</user-manager>
@@ -77,6 +77,6 @@
<beans:bean class="org.apache.ftpserver.command.impl.STAT" />
</command>
</commands>
- <messages languages="se no ,da" />
+ <messages languages="en zh-tw" />
</server>