Author: ngn
Date: Sat Nov 15 13:46:14 2008
New Revision: 717933
URL: http://svn.apache.org/viewvc?rev=717933&view=rev
Log:
Allow the XML config to use the Spring beans:map element for defining ftplets
Added:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
Modified:
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java?rev=717933&r1=717932&r2=717933&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
(original)
+++
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
Sat Nov 15 13:46:14 2008
@@ -184,18 +184,25 @@
private Map parseFtplets(final Element childElm,
final ParserContext parserContext,
final BeanDefinitionBuilder builder) {
- ManagedMap ftplets = new ManagedMap();
List<Element> childs = SpringUtil.getChildElements(childElm);
- for (Element ftpletElm : childs) {
- ftplets
- .put(ftpletElm.getAttribute("name"), SpringUtil
- .parseSpringChildElement(ftpletElm, parserContext,
- builder));
+ if(childs.size() > 0 && childs.get(0).getLocalName().equals("map")) {
+ // using a beans:map element
+ return (Map) parserContext.getDelegate().parseMapElement(
+ childs.get(0),
+ builder.getBeanDefinition());
+ } else {
+ ManagedMap ftplets = new ManagedMap();
+ for (Element ftpletElm : childs) {
+ ftplets
+ .put(ftpletElm.getAttribute("name"), SpringUtil
+ .parseSpringChildElement(ftpletElm,
parserContext,
+ builder));
+ }
+
+ return ftplets;
}
-
- return ftplets;
}
/**
Modified:
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd?rev=717933&r1=717932&r2=717933&view=diff
==============================================================================
---
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
(original)
+++
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
Sat Nov 15 13:46:14 2008
@@ -143,7 +143,7 @@
<!-- Element used to configure Ftplets for used with the server -->
<xs:element name="ftplets">
<xs:complexType>
- <xs:sequence>
+ <xs:choice>
<xs:element name="ftplet" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
@@ -155,7 +155,8 @@
<xs:attribute name="name"
use="required" type="xs:string" />
</xs:complexType>
</xs:element>
- </xs:sequence>
+ <xs:element ref="beans:map" />
+ </xs:choice>
</xs:complexType>
</xs:element>
Added:
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
URL:
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java?rev=717933&view=auto
==============================================================================
---
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
(added)
+++
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/FtpletsConfigTest.java
Sat Nov 15 13:46:14 2008
@@ -0,0 +1,72 @@
+/*
+ * 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.config.spring;
+
+import java.io.File;
+import java.util.Map;
+
+import org.apache.ftpserver.FtpServer;
+import org.apache.ftpserver.ftplet.Ftplet;
+import org.apache.ftpserver.ftpletcontainer.FtpletContainer;
+import org.apache.ftpserver.impl.DefaultFtpServer;
+import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
+import org.apache.ftpserver.usermanager.Md5PasswordEncryptor;
+import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
+import org.apache.ftpserver.usermanager.impl.PropertiesUserManager;
+
+/**
+*
+* @author The Apache MINA Project ([EMAIL PROTECTED])
+* @version $Rev$, $Date$
+*
+*/
+public class FtpletsConfigTest extends SpringConfigTestTemplate {
+
+ private static final String USER_FILE_PATH =
"src/test/resources/users.properties";
+
+ private Map<String, Ftplet> createFtplets(String config) {
+ DefaultFtpServer server = (DefaultFtpServer) createServer("<ftplets>"
+ config + "</ftplets>");
+
+ return server.getFtplets();
+ }
+
+ public void testFtplet() throws Throwable {
+ Map<String, Ftplet> ftplets = createFtplets("<ftplet name=\"foo\">" +
+ "<beans:bean class=\"" + TestFtplet.class.getName() +
"\">" +
+ "<beans:property name=\"foo\" value=\"123\" />" +
+ "</beans:bean></ftplet>");
+
+ assertEquals(1, ftplets.size());
+ assertEquals(123, ((TestFtplet)ftplets.get("foo")).getFoo());
+ }
+
+ public void testFtpletMap() throws Throwable {
+ Map<String, Ftplet> ftplets = createFtplets("<beans:map>" +
+
"<beans:entry><beans:key><beans:value>foo</beans:value></beans:key>" +
+ "<beans:bean class=\"" + TestFtplet.class.getName() +
"\">" +
+ "<beans:property name=\"foo\" value=\"123\" />" +
+ "</beans:bean>" +
+ "</beans:entry></beans:map>");
+
+ assertEquals(1, ftplets.size());
+ assertEquals(123, ((TestFtplet)ftplets.get("foo")).getFoo());
+ }
+
+}