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>
 


Reply via email to