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());
+    }
+
 }