You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2008/04/10 11:15:25 UTC

svn commit: r646705 - in /mina/ftpserver/trunk: core/ core/src/main/java/org/apache/ftpserver/commandline/ core/src/main/java/org/apache/ftpserver/config/ core/src/test/java/org/apache/ftpserver/ core/src/test/java/org/apache/ftpserver/command/ core/sr...

Author: ngn
Date: Thu Apr 10 02:15:16 2008
New Revision: 646705

URL: http://svn.apache.org/viewvc?rev=646705&view=rev
Log:
Moving out the configuration and IoC classes from core, core now focused on being embeddable.

Added:
    mina/ftpserver/trunk/server/src/
    mina/ftpserver/trunk/server/src/main/
    mina/ftpserver/trunk/server/src/main/java/
    mina/ftpserver/trunk/server/src/main/java/org/
    mina/ftpserver/trunk/server/src/main/java/org/apache/
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/commandline/
      - copied from r645680, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/commandline/
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/commandline/CommandLine.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/commandline/CommandLine.java
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/commandline/Daemon.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/commandline/Daemon.java
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/config/
      - copied from r645680, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/config/PropertiesConfiguration.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/PropertiesConfiguration.java
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/config/XmlConfiguration.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/XmlConfiguration.java
    mina/ftpserver/trunk/server/src/main/java/org/apache/ftpserver/config/XmlConfigurationHandler.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/XmlConfigurationHandler.java
    mina/ftpserver/trunk/server/src/test/
    mina/ftpserver/trunk/server/src/test/java/
    mina/ftpserver/trunk/server/src/test/java/org/
    mina/ftpserver/trunk/server/src/test/java/org/apache/
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ComponentBeanTest.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/PojoBeanTest.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/config/
      - copied from r645680, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/config/ConfigurationTestTemplate.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/ConfigurationTestTemplate.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/config/PropertiesConfigurationTest.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/PropertiesConfigurationTest.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/config/XmlConfigurationTest.java
      - copied unchanged from r646703, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/XmlConfigurationTest.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/TestUtil.java
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/
    mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/ConfigurationClassUtilsTest.java
    mina/ftpserver/trunk/server/src/test/resources/
    mina/ftpserver/trunk/server/src/test/resources/XmlConfigurationHandler-test.xml
      - copied unchanged from r645680, mina/ftpserver/trunk/core/src/test/resources/XmlConfigurationHandler-test.xml
Removed:
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/commandline/
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ComponentBeanTest.java
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/PojoBeanTest.java
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/command/
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/
    mina/ftpserver/trunk/core/src/test/resources/XmlConfigurationHandler-test.xml
Modified:
    mina/ftpserver/trunk/core/pom.xml
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/ClassUtilsTest.java

Modified: mina/ftpserver/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/pom.xml?rev=646705&r1=646704&r2=646705&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/pom.xml (original)
+++ mina/ftpserver/trunk/core/pom.xml Thu Apr 10 02:15:16 2008
@@ -7,19 +7,19 @@
 	</parent>
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.apache.ftpserver</groupId>
-	<artifactId>core</artifactId>
+	<artifactId>ftpserver-core</artifactId>
 	<name>Apache FtpServer Core</name>
 	<version>1.0.0-SNAPSHOT</version>
 	<packaging>jar</packaging>
 	<scm>
 		<connection>
-			scm:svn:http://svn.apache.org/repos/asf/mina/sandbox/ftpserver/trunk/core
+			scm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/core
 		</connection>
 		<developerConnection>
-			scm:svn:https://svn.apache.org/repos/asf/mina/sandbox/ftpserver/trunk/core
+			scm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/core
 		</developerConnection>
 		<url>
-			http://svn.apache.org/viewvc/mina/sandbox/ftpserver/trunk/core
+			http://svn.apache.org/viewvc/mina/ftpserver/trunk/core
 		</url>
 	</scm>
 	<build>
@@ -93,42 +93,4 @@
 		</dependency>
 	</dependencies>
 
-	<reporting>
-		<plugins>
-			<plugin>
-				<artifactId>maven-checkstyle-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<artifactId>maven-javadoc-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<artifactId>
-					maven-project-info-reports-plugin
-				</artifactId>
-				<reportSets>
-					<reportSet>
-						<reports>
-							<report>dependencies</report>
-							<report>project-team</report>
-							<report>mailing-list</report>
-							<report>issue-tracking</report>
-							<report>license</report>
-							<report>scm</report>
-						</reports>
-					</reportSet>
-				</reportSets>
-			</plugin>
-			<plugin>
-				<artifactId>maven-surefire-report-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>cobertura-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>jxr-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</reporting>
 </project>

Modified: mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/ClassUtilsTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/ClassUtilsTest.java?rev=646705&r1=646704&r2=646705&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/ClassUtilsTest.java (original)
+++ mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/util/ClassUtilsTest.java Thu Apr 10 02:15:16 2008
@@ -20,16 +20,11 @@
 package org.apache.ftpserver.util;
 
 import java.net.InetAddress;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 
 import junit.framework.TestCase;
 
-import org.apache.ftpserver.config.PropertiesConfiguration;
-import org.apache.ftpserver.ftplet.Configuration;
-
 public class ClassUtilsTest extends TestCase {
 
 	public void testImplementsInterface() {
@@ -93,219 +88,6 @@
         }
     }
     
-    public void testCreateSimpleBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyBean.class.getName());
-        props.setProperty("config.foo", "flopp");
-        props.setProperty("config.bar", "123");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyBean bean = (MyBean) ClassUtils.createBean(config, null);
-        assertEquals("flopp", bean.getFoo());
-        assertEquals(123, bean.getBar());
-    }
-    
-    public void testCreateComplexBean() throws Exception {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyOtherBean.class.getName());
-        props.setProperty("config.baz", "1.2.3.4");
-        props.setProperty("config.myBean.class", MyBean.class.getName());
-        props.setProperty("config.myBean.foo", "flopp");
-        props.setProperty("config.myBean.bar", "123");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyOtherBean otherBean = (MyOtherBean) ClassUtils.createBean(config, null);
-        assertEquals(InetAddress.getByName("1.2.3.4"), otherBean.getBaz());
-        
-        MyBean bean = otherBean.getMyBean();
-        
-        assertEquals("flopp", bean.getFoo());
-        assertEquals(123, bean.getBar());
-    }
-
-    public void testCreateComplexBeanNoClassForSubBean() throws Exception {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyOtherBean.class.getName());
-        props.setProperty("config.baz", "1.2.3.4");
-        props.setProperty("config.myBean.foo", "flopp");
-        props.setProperty("config.myBean.bar", "123");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyOtherBean otherBean = (MyOtherBean) ClassUtils.createBean(config, null);
-        assertEquals(InetAddress.getByName("1.2.3.4"), otherBean.getBaz());
-        
-        MyBean bean = otherBean.getMyBean();
-        
-        assertEquals("flopp", bean.getFoo());
-        assertEquals(123, bean.getBar());
-    }
-    
-    public void testCreateListBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        props.setProperty("config.list", "foo,bar, bar, flopp  ");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        Iterator<?> iter = bean.getList().iterator();
-        
-        assertEquals("foo", iter.next());
-        assertEquals("bar", iter.next());
-        assertEquals("bar", iter.next());
-        assertEquals("flopp", iter.next());
-        assertFalse(iter.hasNext());
-    }
-    
-    public void testCreateAdvancedListBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        props.setProperty("config.list.1.class", MyBean.class.getName());
-        props.setProperty("config.list.1.foo", "foo1");
-        props.setProperty("config.list.2.class", MyBean.class.getName());
-        props.setProperty("config.list.2.foo", "foo2");
-        props.setProperty("config.list.3.class", MyBean.class.getName());
-        props.setProperty("config.list.3.foo", "foo3");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        Iterator<?> iter = bean.getList().iterator();
-        
-        MyBean myBean1 = (MyBean) iter.next();
-        assertEquals("foo1", myBean1.getFoo());
-
-        MyBean myBean2 = (MyBean) iter.next();
-        assertEquals("foo2", myBean2.getFoo());
-        
-        MyBean myBean3 = (MyBean) iter.next();
-        assertEquals("foo3", myBean3.getFoo());
-        
-        assertFalse(iter.hasNext());
-    }
-
-    public void testCreateArrayBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        props.setProperty("config.array", "1,12, 123, 1234  ");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        int[] array = bean.getArray();
-        
-        assertEquals(4, array.length);
-        assertEquals(1, array[0]);
-        assertEquals(12, array[1]);
-        assertEquals(123, array[2]);
-        assertEquals(1234, array[3]);
-    }
-    
-    public void testCreateAdvancedArrayBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        props.setProperty("config.myBeans.1.foo", "foo1");
-        props.setProperty("config.myBeans.2.foo", "foo2");
-        props.setProperty("config.myBeans.3.foo", "foo3");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        MyBean[] array = bean.getMyBeans();
-        
-        assertEquals(3, array.length);
-        assertEquals("foo1", array[0].getFoo());
-        assertEquals("foo2", array[1].getFoo());
-        assertEquals("foo3", array[2].getFoo());
-    }
-
-    public void testCreateSubClassArrayBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        props.setProperty("config.myBeans.1.class", MySubBean.class.getName());
-        props.setProperty("config.myBeans.1.foo", "foo1");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        MyBean[] array = bean.getMyBeans();
-        
-        assertEquals(1, array.length);
-        assertTrue(array[0] instanceof MySubBean);
-        assertEquals("foo1", array[0].getFoo());
-    }
-
-    public void testCreateLongArrayBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyCollectionBean.class.getName());
-        
-        for(int i = 1; i<13; i++) {
-            props.setProperty("config.array." + i, Integer.toString(i));
-        }
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
-        
-        int[] array = bean.getArray();
-        
-        assertEquals(12, array.length);
-        for(int i = 0; i<12; i++) {
-            assertEquals(i+1, array[i]);
-        }
-    }
-    
-    public void testCreateMapBean() {
-        Properties props = new Properties();
-        props.setProperty("config.class", MyMapBean.class.getName());
-        props.setProperty("config.map.foo1", "bar1");
-        props.setProperty("config.map.foo2", "bar2");
-        props.setProperty("config.map.foo3", "bar3");
-        props.setProperty("config.map.foo4", "bar4");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        MyMapBean bean = (MyMapBean) ClassUtils.createBean(config, null);
-        
-        Map<?, ?> map = bean.getMap();
-        
-        assertEquals(4, map.size());
-        assertEquals("bar1", map.get("foo1"));
-        assertEquals("bar2", map.get("foo2"));
-        assertEquals("bar3", map.get("foo3"));
-        assertEquals("bar4", map.get("foo4"));
-    }
-    
-    public void testCreateMap() {
-        Properties props = new Properties();
-        props.setProperty("config.foo1.class", MyBean.class.getName());
-        props.setProperty("config.foo1.foo", "bar1");
-        props.setProperty("config.foo2.class", MyBean.class.getName());
-        props.setProperty("config.foo2.foo", "bar2");
-        props.setProperty("config.foo3.class", MyBean.class.getName());
-        props.setProperty("config.foo3.foo", "bar3");
-        props.setProperty("config.foo4.class", MyBean.class.getName());
-        props.setProperty("config.foo4.foo", "bar4");
-        
-        Configuration config = new PropertiesConfiguration(props);
-        
-        Map<?, ?> map = ClassUtils.createMap(config);
-        
-        for(int i = 1; i<5; i++) {
-            MyBean bean = (MyBean) map.get("foo" + i);
-            assertEquals("bar" + i, bean.getFoo());
-            
-        }
-    }
- 
     public static class MyCollectionBean {
         private List<?> list;
         private int[] array;

Added: mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ComponentBeanTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ComponentBeanTest.java?rev=646705&view=auto
==============================================================================
--- mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ComponentBeanTest.java (added)
+++ mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ComponentBeanTest.java Thu Apr 10 02:15:16 2008
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */  
+
+package org.apache.ftpserver;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.config.PropertiesConfiguration;
+import org.apache.ftpserver.ftplet.Component;
+import org.apache.ftpserver.ftplet.Configuration;
+import org.apache.ftpserver.ftplet.FtpException;
+
+
+public class ComponentBeanTest extends TestCase {
+
+    public static class MockComponent implements Component {
+
+        public Configuration config;
+        public boolean disposed = false;
+        
+        public void configure(Configuration config) throws FtpException {
+            this.config = config;
+        }
+
+        public void dispose() {
+            disposed = true;
+        }
+        
+    }
+    
+    public void testLifecycle() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.class", MockComponent.class.getName());
+        props.setProperty("config.foo", "bar");
+        PropertiesConfiguration config = new PropertiesConfiguration(props);
+        
+        ComponentBean bean = (ComponentBean) Bean.createBean(config, null);
+        
+        MockComponent component = (MockComponent) bean.initBean();
+        assertEquals("bar", component.config.getString("foo"));
+        assertFalse(component.disposed);
+
+        bean.destroyBean();
+        assertTrue(component.disposed);
+        assertNull(bean.getBean());
+
+    }
+    
+    public void testLifecycleDefaultClass() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.foo", "bar");
+        PropertiesConfiguration config = new PropertiesConfiguration(props);
+        
+        
+        ComponentBean bean = (ComponentBean) Bean.createBean(config, MockComponent.class.getName());
+        
+        MockComponent component = (MockComponent) bean.initBean();
+        assertEquals("bar", component.config.getString("foo"));
+        assertFalse(component.disposed);
+        
+        bean.destroyBean();
+        assertTrue(component.disposed);
+        assertNull(bean.getBean());
+
+    }
+
+}

Added: mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java?rev=646705&view=auto
==============================================================================
--- mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java (added)
+++ mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/ConfigurableFtpServerContextTest.java Thu Apr 10 02:15:16 2008
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */  
+
+package org.apache.ftpserver;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.config.PropertiesConfiguration;
+import org.apache.ftpserver.ftplet.Configuration;
+import org.apache.ftpserver.listener.Listener;
+import org.apache.ftpserver.listener.mina.MinaListener;
+
+
+public class ConfigurableFtpServerContextTest extends TestCase {
+
+    public void testConfigListeners() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.listeners.foo1.class", MinaListener.class.getName());
+        props.setProperty("config.listeners.foo2.class", MinaListener.class.getName());
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        ConfigurableFtpServerContext ctx = new ConfigurableFtpServerContext(config);
+        
+        assertNotNull(ctx.getListener("foo1"));
+        assertTrue(ctx.getListener("foo1") instanceof MinaListener);
+
+        assertNotNull(ctx.getListener("foo2"));
+        assertTrue(ctx.getListener("foo2") instanceof MinaListener);
+        
+        Listener[] listeners = ctx.getAllListeners();
+        
+        assertEquals(2, listeners.length);
+        assertTrue(listeners[0] instanceof Listener);
+        assertTrue(listeners[1] instanceof Listener);
+        
+    }
+    
+}

Added: mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/PojoBeanTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/PojoBeanTest.java?rev=646705&view=auto
==============================================================================
--- mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/PojoBeanTest.java (added)
+++ mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/PojoBeanTest.java Thu Apr 10 02:15:16 2008
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */  
+
+package org.apache.ftpserver;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.config.PropertiesConfiguration;
+import org.apache.ftpserver.ftplet.Configuration;
+import org.apache.ftpserver.ftplet.FtpException;
+
+
+public class PojoBeanTest extends TestCase {
+
+    public static class MockPojo {
+
+        public Configuration config;
+        public boolean configured = false;
+        public boolean disposed = false;
+        
+        public String foo;
+        public int bar;
+        
+        public void setBar(int bar) {
+            this.bar = bar;
+        }
+
+        public void setFoo(String foo) {
+            this.foo = foo;
+        }
+
+        public void configure() throws FtpException {
+            
+            configured = true;
+        }
+
+        public void dispose() {
+            disposed = true;
+        }
+    }
+    
+    public void testLifecycle() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.class", MockPojo.class.getName());
+        props.setProperty("config.foo", "hello");
+        props.setProperty("config.bar", "123");
+
+        PropertiesConfiguration config = new PropertiesConfiguration(props);
+
+        PojoBean bean = (PojoBean) Bean.createBean(config, null);
+        
+        MockPojo pojo = (MockPojo) bean.initBean();
+        assertEquals("hello", pojo.foo);
+        assertEquals(123, pojo.bar);
+        assertFalse(pojo.disposed);
+        assertTrue(pojo.configured);
+
+        bean.destroyBean();
+        assertTrue(pojo.disposed);
+        assertNull(bean.getBean());
+    }
+    
+    /*public void testLifecycleDefaultClass() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.foo", "bar");
+        PropertiesConfiguration config = new PropertiesConfiguration(props);
+        
+        
+        ComponentBean bean = (ComponentBean) Bean.createBean(config, MockComponent.class.getName(), null);
+        
+        MockComponent component = (MockComponent) bean.initBean();
+        assertEquals("bar", component.config.getString("foo"));
+        assertFalse(component.disposed);
+        
+        bean.destroyBean();
+        assertTrue(component.disposed);
+    }*/
+
+}

Added: mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/TestUtil.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/TestUtil.java?rev=646705&view=auto
==============================================================================
--- mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/TestUtil.java (added)
+++ mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/test/TestUtil.java Thu Apr 10 02:15:16 2008
@@ -0,0 +1,17 @@
+package org.apache.ftpserver.test;
+
+
+import java.io.File;
+
+public class TestUtil {
+
+    public static File getBaseDir() {
+        // check Maven system prop first and use if set
+        String basedir = System.getProperty("basedir");
+        if(basedir != null) {
+            return new File(basedir);
+        } else {
+            return new File(".");
+        }
+    }
+}
\ No newline at end of file

Added: mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/ConfigurationClassUtilsTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/ConfigurationClassUtilsTest.java?rev=646705&view=auto
==============================================================================
--- mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/ConfigurationClassUtilsTest.java (added)
+++ mina/ftpserver/trunk/server/src/test/java/org/apache/ftpserver/util/ConfigurationClassUtilsTest.java Thu Apr 10 02:15:16 2008
@@ -0,0 +1,330 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */  
+
+package org.apache.ftpserver.util;
+
+import java.net.InetAddress;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.config.PropertiesConfiguration;
+import org.apache.ftpserver.ftplet.Configuration;
+
+public class ConfigurationClassUtilsTest extends TestCase {
+
+	public void testCreateSimpleBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyBean.class.getName());
+        props.setProperty("config.foo", "flopp");
+        props.setProperty("config.bar", "123");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyBean bean = (MyBean) ClassUtils.createBean(config, null);
+        assertEquals("flopp", bean.getFoo());
+        assertEquals(123, bean.getBar());
+    }
+    
+    public void testCreateComplexBean() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyOtherBean.class.getName());
+        props.setProperty("config.baz", "1.2.3.4");
+        props.setProperty("config.myBean.class", MyBean.class.getName());
+        props.setProperty("config.myBean.foo", "flopp");
+        props.setProperty("config.myBean.bar", "123");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyOtherBean otherBean = (MyOtherBean) ClassUtils.createBean(config, null);
+        assertEquals(InetAddress.getByName("1.2.3.4"), otherBean.getBaz());
+        
+        MyBean bean = otherBean.getMyBean();
+        
+        assertEquals("flopp", bean.getFoo());
+        assertEquals(123, bean.getBar());
+    }
+
+    public void testCreateComplexBeanNoClassForSubBean() throws Exception {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyOtherBean.class.getName());
+        props.setProperty("config.baz", "1.2.3.4");
+        props.setProperty("config.myBean.foo", "flopp");
+        props.setProperty("config.myBean.bar", "123");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyOtherBean otherBean = (MyOtherBean) ClassUtils.createBean(config, null);
+        assertEquals(InetAddress.getByName("1.2.3.4"), otherBean.getBaz());
+        
+        MyBean bean = otherBean.getMyBean();
+        
+        assertEquals("flopp", bean.getFoo());
+        assertEquals(123, bean.getBar());
+    }
+    
+    public void testCreateListBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        props.setProperty("config.list", "foo,bar, bar, flopp  ");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        Iterator<?> iter = bean.getList().iterator();
+        
+        assertEquals("foo", iter.next());
+        assertEquals("bar", iter.next());
+        assertEquals("bar", iter.next());
+        assertEquals("flopp", iter.next());
+        assertFalse(iter.hasNext());
+    }
+    
+    public void testCreateAdvancedListBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        props.setProperty("config.list.1.class", MyBean.class.getName());
+        props.setProperty("config.list.1.foo", "foo1");
+        props.setProperty("config.list.2.class", MyBean.class.getName());
+        props.setProperty("config.list.2.foo", "foo2");
+        props.setProperty("config.list.3.class", MyBean.class.getName());
+        props.setProperty("config.list.3.foo", "foo3");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        Iterator<?> iter = bean.getList().iterator();
+        
+        MyBean myBean1 = (MyBean) iter.next();
+        assertEquals("foo1", myBean1.getFoo());
+
+        MyBean myBean2 = (MyBean) iter.next();
+        assertEquals("foo2", myBean2.getFoo());
+        
+        MyBean myBean3 = (MyBean) iter.next();
+        assertEquals("foo3", myBean3.getFoo());
+        
+        assertFalse(iter.hasNext());
+    }
+
+    public void testCreateArrayBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        props.setProperty("config.array", "1,12, 123, 1234  ");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        int[] array = bean.getArray();
+        
+        assertEquals(4, array.length);
+        assertEquals(1, array[0]);
+        assertEquals(12, array[1]);
+        assertEquals(123, array[2]);
+        assertEquals(1234, array[3]);
+    }
+    
+    public void testCreateAdvancedArrayBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        props.setProperty("config.myBeans.1.foo", "foo1");
+        props.setProperty("config.myBeans.2.foo", "foo2");
+        props.setProperty("config.myBeans.3.foo", "foo3");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        MyBean[] array = bean.getMyBeans();
+        
+        assertEquals(3, array.length);
+        assertEquals("foo1", array[0].getFoo());
+        assertEquals("foo2", array[1].getFoo());
+        assertEquals("foo3", array[2].getFoo());
+    }
+
+    public void testCreateSubClassArrayBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        props.setProperty("config.myBeans.1.class", MySubBean.class.getName());
+        props.setProperty("config.myBeans.1.foo", "foo1");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        MyBean[] array = bean.getMyBeans();
+        
+        assertEquals(1, array.length);
+        assertTrue(array[0] instanceof MySubBean);
+        assertEquals("foo1", array[0].getFoo());
+    }
+
+    public void testCreateLongArrayBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyCollectionBean.class.getName());
+        
+        for(int i = 1; i<13; i++) {
+            props.setProperty("config.array." + i, Integer.toString(i));
+        }
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyCollectionBean bean = (MyCollectionBean) ClassUtils.createBean(config, null);
+        
+        int[] array = bean.getArray();
+        
+        assertEquals(12, array.length);
+        for(int i = 0; i<12; i++) {
+            assertEquals(i+1, array[i]);
+        }
+    }
+    
+    public void testCreateMapBean() {
+        Properties props = new Properties();
+        props.setProperty("config.class", MyMapBean.class.getName());
+        props.setProperty("config.map.foo1", "bar1");
+        props.setProperty("config.map.foo2", "bar2");
+        props.setProperty("config.map.foo3", "bar3");
+        props.setProperty("config.map.foo4", "bar4");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        MyMapBean bean = (MyMapBean) ClassUtils.createBean(config, null);
+        
+        Map<?, ?> map = bean.getMap();
+        
+        assertEquals(4, map.size());
+        assertEquals("bar1", map.get("foo1"));
+        assertEquals("bar2", map.get("foo2"));
+        assertEquals("bar3", map.get("foo3"));
+        assertEquals("bar4", map.get("foo4"));
+    }
+    
+    public void testCreateMap() {
+        Properties props = new Properties();
+        props.setProperty("config.foo1.class", MyBean.class.getName());
+        props.setProperty("config.foo1.foo", "bar1");
+        props.setProperty("config.foo2.class", MyBean.class.getName());
+        props.setProperty("config.foo2.foo", "bar2");
+        props.setProperty("config.foo3.class", MyBean.class.getName());
+        props.setProperty("config.foo3.foo", "bar3");
+        props.setProperty("config.foo4.class", MyBean.class.getName());
+        props.setProperty("config.foo4.foo", "bar4");
+        
+        Configuration config = new PropertiesConfiguration(props);
+        
+        Map<?, ?> map = ClassUtils.createMap(config);
+        
+        for(int i = 1; i<5; i++) {
+            MyBean bean = (MyBean) map.get("foo" + i);
+            assertEquals("bar" + i, bean.getFoo());
+            
+        }
+    }
+ 
+    public static class MyCollectionBean {
+        private List<?> list;
+        private int[] array;
+        private MyBean[] myBeans;
+
+        public MyBean[] getMyBeans() {
+            return myBeans;
+        }
+        public void setMyBeans(MyBean[] myBeans) {
+            this.myBeans = myBeans;
+        }
+        public int[] getArray() {
+            return array;
+        }
+        public void setArray(int[] array) {
+            this.array = array;
+        }
+        public List<?> getList() {
+            return list;
+        }
+        public void setList(List<?> list) {
+            this.list = list;
+        }
+    }
+    
+    public static class MyMapBean {
+        private Map<?, ?> map;
+
+        public Map<?, ?> getMap() {
+            return map;
+        }
+
+        public void setMap(Map<?, ?> map) {
+            this.map = map;
+        }
+
+    }
+    
+    public static class MyBean {
+        private String foo;
+        private int bar;
+        private String camelCasedProp;
+        
+        public int getBar() {
+            return bar;
+        }
+        public void setBar(int bar) {
+            this.bar = bar;
+        }
+        public String getFoo() {
+            return foo;
+        }
+        public void setFoo(String foo) {
+            this.foo = foo;
+        }
+        public String getCamelCasedProp() {
+            return camelCasedProp;
+        }
+        public void setCamelCasedProp(String camelCasedProp) {
+            this.camelCasedProp = camelCasedProp;
+        }
+    }
+    
+    public static class MySubBean extends MyBean {}
+    
+    public static class MyOtherBean {
+        private MyBean myBean;
+        private InetAddress baz;
+        public InetAddress getBaz() {
+            return baz;
+        }
+        public void setBaz(InetAddress baz) {
+            this.baz = baz;
+        }
+        public MyBean getMyBean() {
+            return myBean;
+        }
+        public void setMyBean(MyBean myBean) {
+            this.myBean = myBean;
+        }
+    }
+    
+}
\ No newline at end of file