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);
     }
     
 }


Reply via email to