Author: bdonlan
Date: 2005-05-23 22:26:23 -0400 (Mon, 23 May 2005)
New Revision: 726
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/AlreadyThereJoin.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ChannelNotFound.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/Forbidden.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/InternalCommandException.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/MissingMessageType.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/NotPresentPart.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/PropagatedException.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UnknownClientCommandException.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserAlreadyExists.java
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserNotFound.java
Log:
Exceptions now trace their origin command automagically.
Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
2005-05-24 02:00:16 UTC (rev 725)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -200,9 +200,10 @@
if (detail != null)
sayonara[2] = detail;
sendLine(sayonara);
- cutConnection();
if (this.e != null)
this.e.quit(reason, detail);
+ e = null;
+ cutConnection();
}
protected synchronized void ioExcept(IOException e) {
@@ -346,8 +347,11 @@
try {
m.invoke(this, args);
} catch (InvocationTargetException e) {
- if (e.getTargetException() instanceof PropagatedException)
- throw (PropagatedException)e.getTargetException();
+ if (e.getTargetException() instanceof PropagatedException) {
+ PropagatedException pe =
(PropagatedException)e.getTargetException();
+ pe.setCmd(cmd[0]);
+ throw pe;
+ }
e.getTargetException().printStackTrace();
throw new InternalCommandException(cmd[0], e);
} catch (Throwable t) {
@@ -390,10 +394,10 @@
String who = args[1];
User them = (User)Lobby.theLobby.lookup("user", who);
if (them == null)
- throw new UserNotFound("TO", who);
+ throw new UserNotFound(who);
String margs[] = new String[args.length - 2];
if (margs.length == 0)
- throw new MissingMessageType("TO");
+ throw new MissingMessageType();
System.arraycopy(args, 2, margs, 0, margs.length);
them.sendPrivateMessage(e.getName(), margs);
}
@@ -403,7 +407,7 @@
String filter = args[2];
Channel theChannel = (Channel)Lobby.theLobby.lookup("channel",
channel);
if (theChannel == null)
- throw new ChannelNotFound("LIST", channel);
+ throw new ChannelNotFound(channel);
String[] members = theChannel.getNames(filter);
String[] response = new String[members.length + 3];
System.arraycopy(args, 0, response, 0, 3);
@@ -416,7 +420,7 @@
Channel chan_e = (Channel)Lobby.theLobby.lookup("channel",
channel);
// Special case!
if (chan_e == Lobby.theLobby)
- throw new Forbidden("PART", "&lobby");
+ throw new Forbidden("&lobby");
e.join(chan_e);
}
@@ -425,16 +429,18 @@
Channel chan_e = (Channel)Lobby.theLobby.lookup("channel",
channel);
// Special case!
if (chan_e == Lobby.theLobby)
- throw new Forbidden("PART", "&lobby");
+ throw new Forbidden("&lobby");
e.part(chan_e);
}
public void handle_IN(String[] args) throws PropagatedException {
String channel = args[1]; // TODO: check presence
Channel chan_e = (Channel)Lobby.theLobby.lookup("channel",
channel);
+ if (chan_e == null)
+ throw new ChannelNotFound(channel);
String[] margs = new String[args.length - 2];
if (margs.length == 0)
- throw new MissingMessageType("IN");
+ throw new MissingMessageType();
System.arraycopy(args, 2, margs, 0, margs.length);
chan_e.distributePublicMessage(e, margs);
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/AlreadyThereJoin.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/AlreadyThereJoin.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/AlreadyThereJoin.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -2,6 +2,6 @@
public final class AlreadyThereJoin extends SimplePropagatedException {
public AlreadyThereJoin(String name) {
- super("JOIN", "join.already", name);
+ super("join.already", name);
}
}
\ No newline at end of file
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ChannelNotFound.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ChannelNotFound.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ChannelNotFound.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -13,8 +13,8 @@
public class ChannelNotFound extends SimplePropagatedException {
/** Creates a new instance of ChannelNotFound */
- public ChannelNotFound(String cmd, String channel) {
- super(cmd, "notfound.channel", channel);
+ public ChannelNotFound(String channel) {
+ super("unknown.channel", channel);
}
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/Forbidden.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/Forbidden.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/Forbidden.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -13,8 +13,8 @@
public class Forbidden extends SimplePropagatedException {
/** Creates a new instance of Forbidden */
- public Forbidden(String cmd, String detail) {
- super(cmd, "forbidden", detail);
+ public Forbidden(String detail) {
+ super("forbidden", detail);
}
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/InternalCommandException.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/InternalCommandException.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/InternalCommandException.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -1,10 +1,10 @@
package org.haverdev.haver.server.exceptions;
public final class InternalCommandException extends PropagatedException {
- String cmd, reason;
+ String reason;
public InternalCommandException(String cmd, String reason) {
- super("Command " + cmd + " failed: " + reason);
- this.cmd = cmd;
+ super("Command " + cmd + "failed: " + reason);
+ this.cmd = (cmd != null ? cmd : "UNKNOWN");
this.reason = reason;
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/MissingMessageType.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/MissingMessageType.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/MissingMessageType.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -13,8 +13,8 @@
public class MissingMessageType extends SimplePropagatedException {
/** Creates a new instance of MissingMessageType */
- public MissingMessageType(String cmd) {
- super(cmd, "missing.type", null);
+ public MissingMessageType() {
+ super("missing.type", null);
}
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/NotPresentPart.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/NotPresentPart.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/NotPresentPart.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -2,6 +2,6 @@
public final class NotPresentPart extends SimplePropagatedException {
public NotPresentPart(String name) {
- super("PART", "part.notthere", name);
+ super("part.notthere", name);
}
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/PropagatedException.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/PropagatedException.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/PropagatedException.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -2,7 +2,17 @@
public abstract class PropagatedException extends Exception {
public abstract String[] clientReport();
+ protected String cmd = "UNKNOWN";
+
public PropagatedException(String reason) {
super(reason);
}
+
+ public void setCmd(String cmd) {
+ this.cmd = cmd;
+ }
+
+ public String getCmd() {
+ return cmd;
+ }
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -1,10 +1,9 @@
package org.haverdev.haver.server.exceptions;
public abstract class SimplePropagatedException extends PropagatedException {
- String cmd, code, detail;
- public SimplePropagatedException(String cmd, String code, String detail) {
- super(detail == null ? "Error " + code + " in command " + cmd :
detail);
- this.cmd = cmd;
+ String code, detail;
+ public SimplePropagatedException(String code, String detail) {
+ super(detail == null ? code : detail);
this.code = code;
this.detail = detail;
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UnknownClientCommandException.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UnknownClientCommandException.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UnknownClientCommandException.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -1,10 +1,9 @@
package org.haverdev.haver.server.exceptions;
public final class UnknownClientCommandException extends PropagatedException {
- String cmd;
public UnknownClientCommandException(String[] cmd) {
super("Unknown command " + cmd[0]);
- this.cmd = cmd[0];
+ setCmd(cmd[0]);
}
public String[] clientReport() {
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserAlreadyExists.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserAlreadyExists.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserAlreadyExists.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -2,6 +2,6 @@
public final class UserAlreadyExists extends SimplePropagatedException {
public UserAlreadyExists(String name) {
- super("IDENT", "exists.user", name);
+ super("exists.user", name);
}
}
Modified:
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserNotFound.java
===================================================================
---
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserNotFound.java
2005-05-24 02:00:16 UTC (rev 725)
+++
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/UserNotFound.java
2005-05-24 02:26:23 UTC (rev 726)
@@ -13,8 +13,8 @@
public class UserNotFound extends SimplePropagatedException {
/** Creates a new instance of UserNotFound */
- public UserNotFound(String cmd, String name) {
- super(cmd, "notfound.user", name);
+ public UserNotFound(String name) {
+ super("unknown.user", name);
}
}