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]