Author: bdonlan
Date: 2005-05-26 23:56:05 -0400 (Thu, 26 May 2005)
New Revision: 737

Added:
   trunk/clients/Javer2/src/org/haverdev/haver/server/MapWrap.java
Modified:
   trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/NormalContext.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java
   trunk/clients/Javer2/src/org/haverdev/javer2/ChannelPane.java
   trunk/clients/Javer2/src/org/haverdev/javer2/QueryPane.java
   trunk/clients/Javer2/store/
Log:
Add properties and AuthModes attributes to user entities. Fix some message 
names. Also log some trivia :)

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java       
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java       
2005-05-27 03:56:05 UTC (rev 737)
@@ -68,11 +68,9 @@
         String name = who.getName().toLowerCase();
         
         if (!who.isPersistant()) {
-            if (cache.containsKey(who.getName())) {
-                new File(path + name).delete();
-                cache.remove(name);
-                return;
-            }
+            cache.remove(name);
+            new File(path + name).delete();
+            return;
         }
         
         if (!cache.containsKey(name))

Added: trunk/clients/Javer2/src/org/haverdev/haver/server/MapWrap.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/MapWrap.java     
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/MapWrap.java     
2005-05-27 03:56:05 UTC (rev 737)
@@ -0,0 +1,96 @@
+/*
+ * MapWrap.java
+ *
+ * Created on May 26, 2005, 11:17 PM
+ */
+
+package org.haverdev.haver.server;
+import java.util.*;
+
+/**
+ * Java's XMLEncoder can't handle Collections.synchronized*, so let's teach it 
how
+ * to do so.
+ *
+ * @author bdonlan
+ */
+public class MapWrap extends java.util.AbstractMap {
+    
+    Map backing;
+    
+    /** Creates a new instance of MapWrap */
+    public MapWrap(Map backing) {
+        this.backing = backing;
+    }
+    
+    public MapWrap() {
+        backing = new HashMap();
+    }
+
+    public boolean containsKey(Object key) {
+        return backing.containsKey(key);
+    }
+
+    public boolean containsValue(Object value) {
+        return backing.containsValue(value);
+    }
+
+    public boolean equals(Object o) {
+        if (o instanceof MapWrap)
+            return backing.equals(((MapWrap) o).backing);
+        return backing.equals(o);
+    }
+
+    public Object get(Object key) {
+        return backing.get(key);
+    }
+
+    public void putAll(Map t) {
+        backing.putAll(t);
+    }
+
+    public Object remove(Object key) {
+        return backing.remove(key);
+    }
+
+    public Collection values() {
+        return backing.values();
+    }
+
+    public String toString() {
+        return backing.toString();
+    }
+
+    public int size() {
+        return backing.size();
+    }
+
+    public void clear() {
+        backing.clear();
+    }
+
+    protected Object clone() throws CloneNotSupportedException {
+        /*if (backing instanceof Cloneable)
+            return new MapWrap(((Cloneable)backing).clone());*/
+        throw new CloneNotSupportedException();
+    }
+
+    public Set entrySet() {
+        return backing.entrySet();
+    }
+
+    public int hashCode() {
+        return backing.hashCode();
+    }
+
+    public boolean isEmpty() {
+        return backing.isEmpty();
+    }
+
+    public Set keySet() {
+        return backing.keySet();
+    }
+
+    public Object put(Object key, Object value) {
+        return backing.put(key, value);
+    }
+}


Property changes on: 
trunk/clients/Javer2/src/org/haverdev/haver/server/MapWrap.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java        
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java        
2005-05-27 03:56:05 UTC (rev 737)
@@ -120,4 +120,6 @@
         out.append("\r\n");
         return out.toString();
     }
+
+
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/NormalContext.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/NormalContext.java       
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/NormalContext.java       
2005-05-27 03:56:05 UTC (rev 737)
@@ -85,7 +85,7 @@
     
     public void handle_BYE(String[] args) {
         String detail = args.length > 1 ? args[1] : null;
-        conn.cutConnection("active", detail);
+        conn.cutConnection("bye", detail);
     }
     
     // Debug hack

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java 
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java 
2005-05-27 03:56:05 UTC (rev 737)
@@ -18,12 +18,22 @@
     private PersistTest() {
     }
     
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Throwable {
+        Main.theStore = new DefaultUserStore();
+        
+        BeanInfo b = Introspector.getBeanInfo(UserEntity.class);
+        
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         UserEntity user = new UserEntity("bd_");
         user.setPersistant(true);
         
         XMLEncoder e = new XMLEncoder(baos);
+        PropertyDescriptor[] d2 = b.getPropertyDescriptors();
+        for (int i = 0; i < d2.length; i++)
+            System.err.println(d2[i].getName());
+        user.getProps().put("x", "y");
+        e.writeObject(user.getProps());
+        user.setAuthModes(new String[]{ "foo", "bar", "baz", "banana" });
         //e.setPersistenceDelegate(chan.getClass(), chan.delegate);
         e.writeObject(user);
         e.close();

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java  
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java  
2005-05-27 03:56:05 UTC (rev 737)
@@ -16,14 +16,37 @@
      HashSet channels = null;
      UserConnection conn = null;
      
-     HashMap props = new HashMap();
+     Map props = new MapWrap(Collections.synchronizedMap(new HashMap()));
      
+     String[] authmodes = { "guest" };
+     
+     protected void dirty() {
+         Main.theStore.dirtyUser(this);
+     }
+     
+     public void setAuthModes(String[] modes) {
+         authmodes = modes;
+         dirty();
+     }
+     
+     public String[] getAuthModes() {
+         return authmodes;
+     }
+     
      public void setPersistant(boolean p) {
          super.setPersistant(p);
-         Main.theStore.dirtyUser(this);
+         dirty();
          // TODO
      }
      
+     public Map getProps() {
+         return props;
+     }
+     
+     public void setProps(Map newprops) {
+         props = Collections.synchronizedMap(new HashMap(newprops));
+     }
+     
      public UserEntity() {
          
      }
@@ -40,6 +63,19 @@
      public synchronized void attach(UserConnection conn) throws 
PropagatedException {
          if (this.conn != null)
              throw new IllegalStateException("Trying to attach when already 
live");
+         props.put("lastConnect", new 
Date(System.currentTimeMillis()).toString());
+         Object o = props.get("recentConnects");
+         if (o == null)
+             o = new String[0];
+         if (o instanceof String[]) {
+             String[] old = (String[])o;
+             String[] new_ = new String[old.length >= 10 ? 10 : old.length + 
1];
+             System.arraycopy(old, 0, new_, 1, new_.length - 1);
+             new_[0] = new Date(System.currentTimeMillis()).toString();
+             o = new_;
+         }
+         props.put("recentConnects", o);
+         dirty();
          this.conn = conn;
          channels = new HashSet();
          join(Lobby.theLobby);
@@ -48,6 +84,8 @@
      public void detach() {
          if (conn == null)
              return;
+         props.put("lastDisconnect", new 
Date(System.currentTimeMillis()).toString());
+         dirty();
          quit("discon", null);
      }
 

Modified: trunk/clients/Javer2/src/org/haverdev/javer2/ChannelPane.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/javer2/ChannelPane.java       
2005-05-27 00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/javer2/ChannelPane.java       
2005-05-27 03:56:05 UTC (rev 737)
@@ -70,7 +70,7 @@
                 return;
             if (type.equals("say"))
                 putLine("<" + from + "> " + args[0]);
-            else if (type.equals("act"))
+            else if (type.equals("do"))
                 putLine("* " + from + " " + args[0]);
         }
     }
@@ -99,7 +99,7 @@
     }
 
     public void act(String line) {
-        client.sendPublicMessage(channel, "act", line);
+        client.sendPublicMessage(channel, "do", line);
     }
 
     public String getCaption() {

Modified: trunk/clients/Javer2/src/org/haverdev/javer2/QueryPane.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/javer2/QueryPane.java 2005-05-27 
00:29:56 UTC (rev 736)
+++ trunk/clients/Javer2/src/org/haverdev/javer2/QueryPane.java 2005-05-27 
03:56:05 UTC (rev 737)
@@ -37,7 +37,7 @@
         // message in the root frame anyway
         if (type.equals("say"))
             putLine("<" + name + "> " + arg);
-        else if (type.equals("act"))
+        else if (type.equals("do"))
             putLine("* " + name + " " + arg);
     }
     
@@ -48,7 +48,7 @@
 
     public void act(String line) {
         putLine("* " + client.getName() + " " + line);
-        client.sendPrivateMessage(name, "act", line);
+        client.sendPrivateMessage(name, "do", line);
     }
 
     public String getCaption() {


Property changes on: trunk/clients/Javer2/store
___________________________________________________________________
Name: svn:ignore
   + *



Reply via email to