pgoldstein 2002/09/28 17:03:10
Modified: src/java/org/apache/james/remotemanager
RemoteManagerHandler.java
Log:
i) Extensive commenting
ii) Refactoring of code to standardize handler method interfaces, isolate string
constants
iii) Corrected erroneous usage statements
iv) Added missing UNSETFORWARDING functionality
Revision Changes Path
1.17 +147 -34
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
Index: RemoteManagerHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- RemoteManagerHandler.java 23 Sep 2002 19:47:58 -0000 1.16
+++ RemoteManagerHandler.java 29 Sep 2002 00:03:10 -0000 1.17
@@ -52,14 +52,95 @@
extends BaseConnectionHandler
implements ConnectionHandler, Composable, Configurable, Target {
+ /**
+ * The text string for the ADDUSER command
+ */
+ private static final String COMMAND_ADDUSER = "ADDUSER";
+
+ /**
+ * The text string for the SETPASSWORD command
+ */
+ private static final String COMMAND_SETPASSWORD = "SETPASSWORD";
+
+ /**
+ * The text string for the DELUSER command
+ */
+ private static final String COMMAND_DELUSER = "DELUSER";
+
+ /**
+ * The text string for the LISTUSERS command
+ */
+ private static final String COMMAND_LISTUSERS = "LISTUSERS";
+
+ /**
+ * The text string for the COUNTUSERS command
+ */
+ private static final String COMMAND_COUNTUSERS = "COUNTUSERS";
+
+ /**
+ * The text string for the VERIFY command
+ */
+ private static final String COMMAND_VERIFY = "VERIFY";
+
+ /**
+ * The text string for the HELP command
+ */
+ private static final String COMMAND_HELP = "HELP";
+
+ /**
+ * The text string for the SETFORWARDING command
+ */
+ private static final String COMMAND_SETFORWARDING = "SETFORWARDING";
+
+ /**
+ * The text string for the UNSETFORWARDING command
+ */
+ private static final String COMMAND_UNSETFORWARDING = "UNSETFORWARDING";
+
+ /**
+ * The text string for the SETALIAS command
+ */
+ private static final String COMMAND_SETALIAS = "SETALIAS";
+
+ /**
+ * The text string for the UNSETALIAS command
+ */
+ private static final String COMMAND_UNSETALIAS = "UNSETALIAS";
+
+ /**
+ * The text string for the USER command
+ */
+ private static final String COMMAND_USER = "USER";
+
+ /**
+ * The text string for the QUIT command
+ */
+ private static final String COMMAND_QUIT = "QUIT";
+
+ /**
+ * The text string for the SHUTDOWN command
+ */
+ private static final String COMMAND_SHUTDOWN = "SHUTDOWN";
+
+ /**
+ * The UsersStore that contains all UsersRepositories managed by this
RemoteManager
+ */
private UsersStore usersStore;
+
+ /**
+ * The current UsersRepository being managed/viewed/modified
+ */
private UsersRepository users;
/**
* The scheduler used to handle timeouts for the RemoteManager
* interaction
- */
+ */
private TimeScheduler scheduler;
+
+ /**
+ * The reference to the internal MailServer service
+ */
private MailServer mailServer;
/**
@@ -140,14 +221,6 @@
public void handleConnection( final Socket connection )
throws IOException {
- /*
- if( adminAccounts.isEmpty() ) {
- getLogger().warn("No Administrative account defined");
- getLogger().warn("RemoteManager failed to be handled");
- return;
- }
- */
-
final PeriodicTimeTrigger trigger = new PeriodicTimeTrigger( timeout, -1 );
scheduler.addTrigger( this.toString(), trigger, this );
socket = connection;
@@ -274,36 +347,38 @@
String argument = null;
int breakIndex = command.indexOf(" ");
if (breakIndex > 0) {
- argument = command.substring((breakIndex + 1), command.length());
+ argument = command.substring(breakIndex + 1);
command = command.substring(0, breakIndex);
}
command = command.toUpperCase(Locale.US);
String argument1 = null;
- if (command.equals("ADDUSER")) {
+ if (command.equals(COMMAND_ADDUSER)) {
doADDUSER(argument);
- } else if (command.equals("SETPASSWORD")) {
+ } else if (command.equals(COMMAND_SETPASSWORD)) {
return doSETPASSWORD(argument);
- } else if (command.equals("DELUSER")) {
+ } else if (command.equals(COMMAND_DELUSER)) {
return doDELUSER(argument);
- } else if (command.equals("LISTUSERS")) {
+ } else if (command.equals(COMMAND_LISTUSERS)) {
return doLISTUSERS(argument);
- } else if (command.equals("COUNTUSERS")) {
+ } else if (command.equals(COMMAND_COUNTUSERS)) {
return doCOUNTUSERS(argument);
- } else if (command.equals("VERIFY")) {
+ } else if (command.equals(COMMAND_VERIFY)) {
return doVERIFY(argument);
- } else if (command.equals("HELP")) {
+ } else if (command.equals(COMMAND_HELP)) {
return doHELP(argument);
- } else if (command.equals("SETALIAS")) {
+ } else if (command.equals(COMMAND_SETALIAS)) {
return doSETALIAS(argument);
- } else if (command.equals("SETFORWARDING")) {
+ } else if (command.equals(COMMAND_SETFORWARDING)) {
return doSETFORWARDING(argument);
- } else if (command.equals("UNSETALIAS")) {
+ } else if (command.equals(COMMAND_UNSETALIAS)) {
return doUNSETALIAS(argument);
- } else if (command.equals("USER")) {
+ } else if (command.equals(COMMAND_UNSETFORWARDING)) {
+ return doUNSETFORWARDING(argument);
+ } else if (command.equals(COMMAND_USER)) {
return doUSER(argument);
- } else if (command.equals("QUIT")) {
+ } else if (command.equals(COMMAND_QUIT)) {
return doQUIT(argument);
- } else if (command.equals("SHUTDOWN")) {
+ } else if (command.equals(COMMAND_SHUTDOWN)) {
return doSHUTDOWN(argument);
} else {
return doUnknownCommand(rawCommand);
@@ -327,7 +402,7 @@
return true;
}
String username = argument.substring(0,breakIndex);
- String passwd = argument.substring((breakIndex + 1), argument.length());
+ String passwd = argument.substring(breakIndex + 1);
if (username.equals("") || passwd.equals("")) {
out.println("Usage: adduser [username] [password]");
out.flush();
@@ -344,6 +419,8 @@
String response = responseBuffer.toString();
out.println(response);
} else if ( inLocalUsers ) {
+ // TODO: Why does the LocalUsers repository get treated differently?
+ // What exactly is the LocalUsers repository?
success = mailServer.addUser(username, passwd);
} else {
DefaultUser user = new DefaultUser(username, "SHA");
@@ -384,7 +461,7 @@
return true;
}
String username = argument.substring(0,breakIndex);
- String passwd = argument.substring((breakIndex + 1), argument.length());
+ String passwd = argument.substring(breakIndex + 1);
if (username.equals("") || passwd.equals("")) {
out.println("Usage: adduser [username] [password]");
@@ -525,9 +602,10 @@
out.println("verify [username] verify if specified
user exist");
out.println("deluser [username] delete existing user");
out.println("setpassword [username] [password] sets a user's
password");
- out.println("setalias [username] [alias] sets a user's alias");
- out.println("unsetalias [username] removes a user's
alias");
- out.println("setforwarding [username] [emailaddress] forwards a user's
email to another account");
+ out.println("setalias [alias] [user] locally forwards all
email for 'alias' to 'user'");
+ out.println("unsetalias [alias] unsets an alias");
+ out.println("setforwarding [username] [emailaddress] forwards a user's
email to another email address");
+ out.println("unsetforwarding [username] removes a forward");
out.println("user [repositoryname] change to another user
repository");
out.println("shutdown kills the current JVM
(convenient when James is run as a daemon)");
out.println("quit close connection");
@@ -546,13 +624,13 @@
if ((argument == null) ||
(argument.equals("")) ||
((breakIndex = argument.indexOf(" ")) < 0)) {
- out.println("Usage: setforwarding [username] [emailaddress]");
+ out.println("Usage: setalias [username] [emailaddress]");
return true;
}
String username = argument.substring(0,breakIndex);
- String alias = argument.substring((breakIndex + 1), argument.length());
+ String alias = argument.substring(breakIndex + 1);
if (username.equals("") || alias.equals("")) {
- out.println("Usage: adduser [username] [alias]");
+ out.println("Usage: setalias [username] [alias]");
return true;
}
JamesUser user = (JamesUser) users.getUserByName(username);
@@ -603,7 +681,7 @@
return true;
}
String username = argument.substring(0,breakIndex);
- String forward = argument.substring((breakIndex + 1), argument.length());
+ String forward = argument.substring(breakIndex + 1);
if (username.equals("") || forward.equals("")) {
out.println("Usage: setforwarding [username] [emailaddress]");
return true;
@@ -689,6 +767,41 @@
}
/**
+ * Handler method called upon receipt of an UNSETFORWARDING command.
+ * Returns whether further commands should be read off the wire.
+ *
+ * @param argument the argument passed in with the command
+ */
+ private boolean doUNSETFORWARDING(String argument) {
+ if ((argument == null) || (argument.equals(""))) {
+ out.println("Usage: unsetforwarding [username]");
+ out.flush();
+ return true;
+ }
+ String username = argument;
+ JamesUser user = (JamesUser) users.getUserByName(username);
+ if (user == null) {
+ out.println("No such user " + username);
+ } else if (user.getForwarding()){
+ user.setForwarding(false);
+ users.updateUser(user);
+ StringBuffer responseBuffer =
+ new StringBuffer(64)
+ .append("Forward for ")
+ .append(username)
+ .append(" unset");
+ String response = responseBuffer.toString();
+ out.println(response);
+ getLogger().info(response);
+ } else {
+ out.println("Forwarding not active for" + username);
+ getLogger().info("Forwarding not active for" + username);
+ }
+ out.flush();
+ return true;
+ }
+
+ /**
* Handler method called upon receipt of a USER command.
* Returns whether further commands should be read off the wire.
*
@@ -729,7 +842,7 @@
* @param argument the argument passed in with the command
*/
private boolean doQUIT(String argument) {
- out.println("bye");
+ out.println("Bye");
out.flush();
return false;
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>