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