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
+ *