Allow SITE commands to be configured as any other command (FTPSERVER-343)

git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/trunk@886070 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
index 491a05f..0ac2d24 100644
--- a/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/CommandFactoryFactory.java
@@ -61,6 +61,11 @@
 import org.apache.ftpserver.command.impl.RNFR;
 import org.apache.ftpserver.command.impl.RNTO;
 import org.apache.ftpserver.command.impl.SITE;
+import org.apache.ftpserver.command.impl.SITE_DESCUSER;
+import org.apache.ftpserver.command.impl.SITE_HELP;
+import org.apache.ftpserver.command.impl.SITE_STAT;
+import org.apache.ftpserver.command.impl.SITE_WHO;
+import org.apache.ftpserver.command.impl.SITE_ZONE;
 import org.apache.ftpserver.command.impl.SIZE;
 import org.apache.ftpserver.command.impl.STAT;
 import org.apache.ftpserver.command.impl.STOR;
@@ -120,6 +125,12 @@
         DEFAULT_COMMAND_MAP.put("RNTO", new RNTO());
         DEFAULT_COMMAND_MAP.put("SITE", new SITE());
         DEFAULT_COMMAND_MAP.put("SIZE", new SIZE());
+        DEFAULT_COMMAND_MAP.put("SITE_DESCUSER", new SITE_DESCUSER());
+        DEFAULT_COMMAND_MAP.put("SITE_HELP", new SITE_HELP());
+        DEFAULT_COMMAND_MAP.put("SITE_STAT", new SITE_STAT());
+        DEFAULT_COMMAND_MAP.put("SITE_WHO", new SITE_WHO());
+        DEFAULT_COMMAND_MAP.put("SITE_ZONE", new SITE_ZONE());
+
         DEFAULT_COMMAND_MAP.put("STAT", new STAT());
         DEFAULT_COMMAND_MAP.put("STOR", new STOR());
         DEFAULT_COMMAND_MAP.put("STOU", new STOU());
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
index 52d3291..7bc106f 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/SITE.java
@@ -44,9 +44,6 @@
 
     private final Logger LOG = LoggerFactory.getLogger(SITE.class);
 
-    private static final HashMap<String, Command> COMMAND_MAP = new HashMap<String, Command>(
-            16);
-
     /**
      * Execute command.
      */
@@ -74,7 +71,7 @@
 
         // call appropriate command method
         String siteRequest = "SITE_" + argument;
-        Command command = (Command) COMMAND_MAP.get(siteRequest);
+        Command command = context.getCommandFactory().getCommand(siteRequest);
         try {
             if (command != null) {
                 command.execute(session, context, request);
@@ -93,18 +90,4 @@
         }
 
     }
-
-    // initialize all the SITE command handlers
-    static {
-        COMMAND_MAP.put("SITE_DESCUSER",
-                new org.apache.ftpserver.command.impl.SITE_DESCUSER());
-        COMMAND_MAP.put("SITE_HELP",
-                new org.apache.ftpserver.command.impl.SITE_HELP());
-        COMMAND_MAP.put("SITE_STAT",
-                new org.apache.ftpserver.command.impl.SITE_STAT());
-        COMMAND_MAP
-                .put("SITE_WHO", new org.apache.ftpserver.command.impl.SITE_WHO());
-        COMMAND_MAP.put("SITE_ZONE",
-                new org.apache.ftpserver.command.impl.SITE_ZONE());
-    }
 }