Author: norman
Date: Sun Oct  4 17:45:04 2009
New Revision: 821567

URL: http://svn.apache.org/viewvc?rev=821567&view=rev
Log:
Handle HELP command and add some javadocs. Refactoring is complete now 
(JAMES-929)

Added:
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java
Removed:
    
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/EchoCommand.java
Modified:
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHelp.java
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManager.java
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
    
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdLoaderService.java
    
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHelp.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHelp.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHelp.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHelp.java
 Sun Oct  4 17:45:04 2009
@@ -19,6 +19,10 @@
 
 package org.apache.james.remotemanager;
 
+/**
+ * Provide help for a command
+ *
+ */
 public class CommandHelp {
 
     private String syntax;
@@ -33,18 +37,38 @@
         setDescription(desc);
     }
     
+    /**
+     * Set the syntax
+     * 
+     * @param syntax
+     */
     public void setSyntax(String syntax) {
         this.syntax = syntax;
     }
     
+    /**
+     * Return the syntax which should get used to call the command
+     * 
+     * @return syntax
+     */
     public String getSyntax() {
         return syntax;
     }
     
+    /**
+     * Return the description for this command
+     * 
+     * @return
+     */
     public String getDescription() {
         return desc;
     }
     
+    /**
+     * Set the description
+     * 
+     * @param desc
+     */
     public void setDescription(String desc) {
         this.desc = desc;
     }

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManager.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManager.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManager.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManager.java
 Sun Oct  4 17:45:04 2009
@@ -39,11 +39,6 @@
 
 /**
  * Provides a really rude network interface to administer James.
- * Allow to add accounts.
- * TODO: -improve protocol
- *       -add remove user
- *       -much more...
- * @version 1.0.0, 24/04/1999
  */
 public class RemoteManager
     extends AbstractProtocolServer implements RemoteManagerMBean {
@@ -81,12 +76,21 @@
         = new RemoteManagerHandlerConfigurationDataImpl();
 
 
+    /**
+     * The chain to use
+     */
     private RemoteManagerHandlerChain handlerChain;
 
 
+    /**
+     * The loader
+     */
     private LoaderService loader;
 
 
+    /**
+     * The configuration
+     */
     private Configuration handlerConfiguration;
     
     /**

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
 Sun Oct  4 17:45:04 2009
@@ -39,8 +39,6 @@
  * Provides a console-based administration interface covering most of the 
management 
  * functionality found in the classes from package org.apache.james.management
  * 
- * TODO: -improve protocol
- *       -much more...
  */
 public class RemoteManagerHandler implements ProtocolHandler, 
RemoteManagerSession {
  
@@ -170,6 +168,8 @@
      */
     public void resetHandler() {
         sessionEnded = true;
+        
+        // clear the state map
         getState().clear();
         
         // empty any previous line handler and add self (command dispatcher)

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
 Sun Oct  4 17:45:04 2009
@@ -40,7 +40,7 @@
      * @param description the description 
      */
     public RemoteManagerResponse(CharSequence description) {
-            this.rawLine = description.toString();
+        this.rawLine = description.toString();
     }
   
     public RemoteManagerResponse() {
@@ -99,6 +99,10 @@
      * @see java.lang.Object#toString()
      */
     public String toString() {
-        return getLines().toString();
+        if (getLines() != null) {
+            return getLines().toString();
+        } else {
+            return rawLine;
+        }
     }
 }

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
 Sun Oct  4 17:45:04 2009
@@ -47,5 +47,10 @@
     public void writeRemoteManagerResponse(RemoteManagerResponse response);
        
     
+    /**
+     * Return the Watchdog
+     * 
+     * @return watchdog
+     */
     public Watchdog getWatchdog();
 }

Modified: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdLoaderService.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdLoaderService.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdLoaderService.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CoreCmdLoaderService.java
 Sun Oct  4 17:45:04 2009
@@ -36,6 +36,8 @@
     private final static String DELUSERCMDHANDLER = 
DelUserCmdHandler.class.getName();
     private final static String EXPORTBAYESIANDATACMDHANDLER = 
ExportBayesianDataCmdHandler.class.getName();
     private final static String FLUSHSPOOLCMDHANDLER = 
FlushSpoolCmdHandler.class.getName();
+    private final static String HELPCMDHANDLER = 
HelpCmdHandler.class.getName();
+
     private final static String IMPORTBAYESIANDATACMDHANDLER = 
ImportBayesianDataCmdHandler.class.getName();
     private final static String LISTALLMAPPINGSCMDHANDLER = 
ListAllMappingsCmdHandler.class.getName();
     private final static String LISTDOMAINSCMDHANDLER = 
ListDomainsCmdHandler.class.getName();
@@ -82,6 +84,7 @@
         commands.add(DELUSERCMDHANDLER);
         commands.add(EXPORTBAYESIANDATACMDHANDLER);
         commands.add(FLUSHSPOOLCMDHANDLER);
+        commands.add(HELPCMDHANDLER);
         commands.add(IMPORTBAYESIANDATACMDHANDLER);
         commands.add(LISTALLMAPPINGSCMDHANDLER);
         commands.add(LISTDOMAINSCMDHANDLER);

Added: 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java?rev=821567&view=auto
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java
 (added)
+++ 
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java
 Sun Oct  4 17:45:04 2009
@@ -0,0 +1,94 @@
+/****************************************************************
+ * 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.james.remotemanager.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.james.remotemanager.CommandHandler;
+import org.apache.james.remotemanager.CommandHelp;
+import org.apache.james.remotemanager.RemoteManagerResponse;
+import org.apache.james.remotemanager.RemoteManagerSession;
+import org.apache.james.socket.ExtensibleHandler;
+import org.apache.james.socket.WiringException;
+
+public class HelpCmdHandler implements CommandHandler, ExtensibleHandler{
+
+    private final static String COMMAND_NAME = "HELP";
+    private CommandHelp help = new CommandHelp("help","displays this help");
+
+    private List<CommandHandler> extensions;
+    
+    /**
+     * @see org.apache.james.remotemanager.CommandHandler#getHelp()
+     */
+    public CommandHelp getHelp() {
+        return help;
+    }
+
+    /**
+     * @see 
org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession,
 java.lang.String, java.lang.String)
+     */
+    public RemoteManagerResponse onCommand(RemoteManagerSession session, 
String command, String parameters) {
+        RemoteManagerResponse response = null;
+        for (int i = 0; i < extensions.size(); i++) {
+            CommandHandler cmd = extensions.get(i);
+            CommandHelp help = cmd.getHelp();
+            if (help != null) {
+                if (response == null) {
+                    response = new RemoteManagerResponse(help.getSyntax() + 
"\t" + help.getDescription());
+                } else {
+                    response.appendLine(help.getSyntax() + "\t" + 
help.getDescription());
+                }
+            }
+        }
+        return response;
+    }
+  
+    /**
+     * @see org.apache.james.socket.CommonCommandHandler#getImplCommands()
+     */
+    public Collection<String> getImplCommands() {
+        List<String> commands = new ArrayList<String>();
+        commands.add(COMMAND_NAME);
+        return commands;
+    }
+
+    /**
+     * @see org.apache.james.socket.ExtensibleHandler#getMarkerInterfaces()
+     */
+    @SuppressWarnings("unchecked")
+    public List<Class<?>> getMarkerInterfaces() {
+        List mList = new ArrayList();
+        mList.add(CommandHandler.class);
+        return mList;
+    }
+
+    /**
+     * @see 
org.apache.james.socket.ExtensibleHandler#wireExtensions(java.lang.Class, 
java.util.List)
+     */
+    public void wireExtensions(Class interfaceName, List extension) throws 
WiringException {
+        if (interfaceName.equals(CommandHandler.class)) {
+            extensions = extension;
+        }
+    }
+
+}

Modified: 
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java?rev=821567&r1=821566&r2=821567&view=diff
==============================================================================
--- 
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
 (original)
+++ 
james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java
 Sun Oct  4 17:45:04 2009
@@ -364,9 +364,7 @@
         assertTrue(getLastLine(readAnswer()).endsWith(" does not exist"));
     }
 
-    /*
     public void testQuit() throws IOException {
-        int helpLines = 38;
     
         finishSetUp(m_testConfiguration);
         connect();
@@ -375,18 +373,16 @@
         sendCommand("help");
         delay();
         assertTrue("command line is effective", readAnswer().size() > 0);
-        readAnswer(helpLines);
         
         sendCommand("quit");
         delay();
-        assertTrue("",readAnswer(1).contains("Bye"));
+        assertTrue("",readAnswer(39).contains("Bye"));
 
         sendCommand("help");
         delay();
         assertNull("connection is closed", m_reader.readLine());
     }   
-    
-    */
+  
 
     public void testListUsers() throws IOException {
         finishSetUp(m_testConfiguration);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to