diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
index c21ee0f85..4ba421c44 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
@@ -62,6 +62,7 @@ import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.FileScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.FileSet;
import java.io.BufferedInputStream;
@@ -97,6 +98,7 @@ import java.util.Vector;
*
* @author Roger Vaughn rvaughn@seaconinc.com
* @author Glenn McAllister glennm@ca.ibm.com
+ * @author Magesh Umasankar
*/
public class FTP
extends Task
@@ -343,38 +345,27 @@ public class FTP
/**
* Sets the FTP action to be taken. Currently accepts "put", "get",
- * "del", and "list".
+ * "del", "mkdir" and "list".
+ *
+ * @deprecated setAction(String) is deprecated and is replaced with
+ * setAction(FTP.Action) to make Ant's Introspection
+ * mechanism do the work and also to encapsulate operations on
+ * the type in its own class.
*/
- public void setAction(String action) throws BuildException
- {
- String actionL = action.toLowerCase(Locale.US);
- if (actionL.equals("send") ||
- actionL.equals("put"))
- {
- this.action = SEND_FILES;
- }
- else if (actionL.equals("recv") ||
- actionL.equals("get"))
- {
- this.action = GET_FILES;
- }
- else if (actionL.equals("del") ||
- actionL.equals("delete" ))
- {
- this.action = DEL_FILES;
- }
- else if (actionL.equals("list"))
- {
- this.action = LIST_FILES;
- }
- else if (actionL.equals("mkdir"))
- {
- this.action = MK_DIR;
- }
- else
- {
- throw new BuildException("action " + action + " is not supported");
- }
+ public void setAction(String action) throws BuildException {
+ log("DEPRECATED - The setAction(String) method has been deprecated."
+ + " Use setAction(FTP.Action) instead.");
+ Action a = new Action();
+ a.setValue(action);
+ this.action = a.getAction();
+ }
+
+ /**
+ * Sets the FTP action to be taken. Currently accepts "put", "get",
+ * "del", "mkdir" and "list".
+ */
+ public void setAction(Action action) throws BuildException {
+ this.action = action.getAction();
}
/**
@@ -943,4 +934,34 @@ public class FTP
}
}
}
+
+ public static class Action extends EnumeratedAttribute {
+
+ private final static String[] validActions = {
+ "send", "put", "recv", "get", "del", "delete", "list", "mkdir"
+ };
+
+ public String[] getValues() {
+ return validActions;
+ }
+
+ public int getAction() {
+ String actionL = getValue().toLowerCase(Locale.US);
+ if (actionL.equals("send") ||
+ actionL.equals("put")) {
+ return SEND_FILES;
+ } else if (actionL.equals("recv") ||
+ actionL.equals("get")) {
+ return GET_FILES;
+ } else if (actionL.equals("del") ||
+ actionL.equals("delete" )) {
+ return DEL_FILES;
+ } else if (actionL.equals("list")) {
+ return LIST_FILES;
+ } else if (actionL.equals("mkdir")) {
+ return MK_DIR;
+ }
+ return SEND_FILES;
+ }
+ }
}