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 2010/03/07 18:51:34 UTC
svn commit: r920048 - in /mina/ftpserver:
branches/1.0.x/core/src/test/java/org/apache/ftpserver/impl/
branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/
branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/
trunk/core/...
Author: ngn
Date: Sun Mar 7 17:51:34 2010
New Revision: 920048
URL: http://svn.apache.org/viewvc?rev=920048&view=rev
Log:
Improving fix for padding lines in replies starting with digits
Added:
mina/ftpserver/branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
mina/ftpserver/trunk/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
- copied, changed from r919957, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
Removed:
mina/ftpserver/branches/1.0.x/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java
Modified:
mina/ftpserver/branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
Modified: mina/ftpserver/branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java?rev=920048&r1=920047&r2=920048&view=diff
==============================================================================
--- mina/ftpserver/branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java (original)
+++ mina/ftpserver/branches/1.0.x/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java Sun Mar 7 17:51:34 2010
@@ -19,6 +19,7 @@
package org.apache.ftpserver.ftplet;
+
/**
* FTP reply object.
*
@@ -72,6 +73,10 @@
return message;
}
+ private boolean isDigit(char c) {
+ return c >= 48 && c <= 57;
+ }
+
/*
* (non-Javadoc)
*
@@ -106,7 +111,15 @@
sb.append(" ");
}
- if(line.length() > 0 && Character.isDigit(line.charAt(0))) {
+ // "If an intermediary line begins with a 3-digit number, the Server
+ // must pad the front to avoid confusion.
+ if(i > 0
+ && i + 1 < lines.length
+ && line.length() > 2
+ && isDigit(line.charAt(0))
+ && isDigit(line.charAt(1))
+ && isDigit(line.charAt(2))
+ ) {
sb.append(" ");
}
sb.append(line);
Added: mina/ftpserver/branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java?rev=920048&view=auto
==============================================================================
--- mina/ftpserver/branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java (added)
+++ mina/ftpserver/branches/1.0.x/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java Sun Mar 7 17:51:34 2010
@@ -0,0 +1,100 @@
+/*
+ * 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.ftplet;
+
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.ftplet.DefaultFtpReply;
+
+/**
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ *
+ */
+public class DefaultFtpReplyTest extends TestCase {
+
+ public void testSingleLineToString() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo bar");
+
+ assertEquals("123 foo bar\r\n", response.toString());
+ }
+
+ public void testNullToString() {
+ DefaultFtpReply response = new DefaultFtpReply(123, (String) null);
+
+ assertEquals("123 \r\n", response.toString());
+ }
+
+ public void testMultipleLinesToString() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\nbar\nbaz");
+
+ assertEquals("123-foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesEndWithNewlineToString() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\nbar\nbaz\n");
+
+ assertEquals("123-foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testArrayLinesToString() {
+ DefaultFtpReply response = new DefaultFtpReply(123, new String[] {
+ "foo", "bar", "baz" });
+
+ assertEquals("123-foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToString1() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "\nfoo\nbar\nbaz");
+
+ assertEquals("123-\r\nfoo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringSpaceFirst() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n bar\nbaz");
+
+ assertEquals("123-foo\r\n bar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringThreeNumbers() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n234bar\nbaz");
+
+ assertEquals("123-foo\r\n 234bar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringThreeNumbersOnFirstLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "234foo\nbar\nbaz");
+
+ assertEquals("123-234foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringThreeNumbersOnLastLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\nbar\n234baz");
+
+ assertEquals("123-foo\r\nbar\r\n123 234baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringSingleNumberOnLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n2bar\nbaz");
+
+ assertEquals("123-foo\r\n2bar\r\n123 baz\r\n", response.toString());
+ }
+
+}
Modified: mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java?rev=920048&r1=920047&r2=920048&view=diff
==============================================================================
--- mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java (original)
+++ mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/DefaultFtpReply.java Sun Mar 7 17:51:34 2010
@@ -19,6 +19,7 @@
package org.apache.ftpserver.ftplet;
+
/**
* FTP reply object.
*
@@ -87,6 +88,10 @@
return code < 400;
}
+ private boolean isDigit(char c) {
+ return c >= 48 && c <= 57;
+ }
+
/*
* (non-Javadoc)
*
@@ -121,7 +126,15 @@
sb.append(" ");
}
- if(line.length() > 0 && Character.isDigit(line.charAt(0))) {
+ // "If an intermediary line begins with a 3-digit number, the Server
+ // must pad the front to avoid confusion.
+ if(i > 0
+ && i + 1 < lines.length
+ && line.length() > 2
+ && isDigit(line.charAt(0))
+ && isDigit(line.charAt(1))
+ && isDigit(line.charAt(2))
+ ) {
sb.append(" ");
}
sb.append(line);
Copied: mina/ftpserver/trunk/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java (from r919957, mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java)
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java?p2=mina/ftpserver/trunk/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java&p1=mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java&r1=919957&r2=920048&rev=920048&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/impl/DefaultFtpReplyTest.java (original)
+++ mina/ftpserver/trunk/ftplet-api/src/test/java/org/apache/ftpserver/ftplet/DefaultFtpReplyTest.java Sun Mar 7 17:51:34 2010
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.ftpserver.impl;
+package org.apache.ftpserver.ftplet;
import junit.framework.TestCase;
@@ -73,10 +73,28 @@
assertEquals("123-foo\r\n bar\r\n123 baz\r\n", response.toString());
}
- public void testMultipleLinesToStringNumberFirst() {
+ public void testMultipleLinesToStringThreeNumbers() {
DefaultFtpReply response = new DefaultFtpReply(123, "foo\n234bar\nbaz");
assertEquals("123-foo\r\n 234bar\r\n123 baz\r\n", response.toString());
}
+ public void testMultipleLinesToStringThreeNumbersOnFirstLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "234foo\nbar\nbaz");
+
+ assertEquals("123-234foo\r\nbar\r\n123 baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringThreeNumbersOnLastLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\nbar\n234baz");
+
+ assertEquals("123-foo\r\nbar\r\n123 234baz\r\n", response.toString());
+ }
+
+ public void testMultipleLinesToStringSingleNumberOnLine() {
+ DefaultFtpReply response = new DefaultFtpReply(123, "foo\n2bar\nbaz");
+
+ assertEquals("123-foo\r\n2bar\r\n123 baz\r\n", response.toString());
+ }
+
}