Author: bdonlan
Date: 2005-06-09 22:56:27 -0400 (Thu, 09 Jun 2005)
New Revision: 751

Added:
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserInfo.java
Removed:
   trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java
Modified:
   trunk/clients/Javer2/nbproject/build-impl.xml
   trunk/clients/Javer2/nbproject/genfiles.properties
   trunk/clients/Javer2/nbproject/project.properties
   trunk/clients/Javer2/nbproject/project.xml
   trunk/clients/Javer2/server.conf
   trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/DefaultUserStore.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/DynamicChannelPlugin.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/EntityLoader.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/PersistBot.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserCommandReflect.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserContextFactory.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/UserStore.java
Log:
Remove XML usage, and some other stuff I forgot >.>

Modified: trunk/clients/Javer2/nbproject/build-impl.xml
===================================================================
--- trunk/clients/Javer2/nbproject/build-impl.xml       2005-06-01 18:16:12 UTC 
(rev 750)
+++ trunk/clients/Javer2/nbproject/build-impl.xml       2005-06-10 02:56:27 UTC 
(rev 751)
@@ -19,7 +19,7 @@
   - cleanup
 
 -->
-<project name="Javer2-impl" default="build" basedir="..">
+<project name="Javer2-impl" default="default" basedir=".." 
xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2"; 
xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1";>
     <target name="default" depends="test,jar,javadoc" description="Build and 
test whole project."/>
     <!-- 
     ======================
@@ -44,30 +44,6 @@
         <property file="nbproject/project.properties"/>
     </target>
     <target name="-do-init" 
depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property">
-        <j2seproject:property name="platform.home" 
value="platforms.${platform.active}.home" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <j2seproject:property name="platform.bootcp" 
value="platforms.${platform.active}.bootclasspath" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <j2seproject:property name="platform.compiler" 
value="platforms.${platform.active}.compile" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <j2seproject:property name="platform.javac.tmp" 
value="platforms.${platform.active}.javac" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <condition property="platform.javac" 
value="${platform.home}/bin/javac">
-            <equals arg1="${platform.javac.tmp}" 
arg2="$${platforms.${platform.active}.javac}"/>
-        </condition>
-        <property name="platform.javac" value="${platform.javac.tmp}"/>
-        <j2seproject:property name="platform.java.tmp" 
value="platforms.${platform.active}.java" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <condition property="platform.java" value="${platform.home}/bin/java">
-            <equals arg1="${platform.java.tmp}" 
arg2="$${platforms.${platform.active}.java}"/>
-        </condition>
-        <property name="platform.java" value="${platform.java.tmp}"/>
-        <condition property="platform.invalid" value="true">
-            <or>
-                <contains string="${platform.javac}" 
substring="$${platforms."/>
-                <contains string="${platform.java}" substring="$${platforms."/>
-            </or>
-        </condition>
-        <fail unless="platform.home">Must set platform.home</fail>
-        <fail unless="platform.bootcp">Must set platform.bootcp</fail>
-        <fail unless="platform.java">Must set platform.java</fail>
-        <fail unless="platform.javac">Must set platform.javac</fail>
-        <fail if="platform.invalid">Platform is not correctly set up</fail>
         <available file="${manifest.file}" property="manifest.available"/>
         <condition property="manifest.available+main.class">
             <and>
@@ -78,7 +54,11 @@
                 </not>
             </and>
         </condition>
-        <available property="have.tests" file="${test.src.dir}"/>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
         <condition property="netbeans.home+have.tests">
             <and>
                 <isset property="netbeans.home"/>
@@ -123,14 +103,14 @@
         </macrodef>
     </target>
     <target name="-init-macrodef-javac">
-        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/1";>
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/2";>
             <attribute name="srcdir" default="${src.dir}"/>
             <attribute name="destdir" default="${build.classes.dir}"/>
             <attribute name="classpath" default="${javac.classpath}"/>
             <attribute name="debug" default="${javac.debug}"/>
             <element name="customize" optional="true"/>
             <sequential>
-                <javac srcdir="@{srcdir}" destdir="@{destdir}" 
debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" 
target="${javac.target}" fork="yes" executable="${platform.javac}" 
includeantruntime="false">
+                <javac srcdir="@{srcdir}" destdir="@{destdir}" 
debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" 
target="${javac.target}" includeantruntime="false">
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
@@ -141,10 +121,10 @@
         </macrodef>
     </target>
     <target name="-init-macrodef-junit">
-        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/1";>
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/2";>
             <attribute name="includes" default="**/*Test.java"/>
             <sequential>
-                <junit showoutput="true" fork="true" dir="${basedir}" 
failureproperty="tests.failed" errorproperty="tests.failed" 
jvm="${platform.java}">
+                <junit showoutput="true" fork="true" dir="${basedir}" 
failureproperty="tests.failed" errorproperty="tests.failed">
                     <batchtest todir="${build.test.results.dir}">
                         <fileset dir="${test.src.dir}" includes="@{includes}"/>
                     </batchtest>
@@ -170,9 +150,6 @@
                     <classpath>
                         <path path="@{classpath}"/>
                     </classpath>
-                    <bootclasspath>
-                        <path path="${platform.bootcp}"/>
-                    </bootclasspath>
                 </nbjpdastart>
             </sequential>
         </macrodef>
@@ -186,12 +163,12 @@
         </macrodef>
     </target>
     <target name="-init-macrodef-debug">
-        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/1";>
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/2";>
             <attribute name="classname" default="${main.class}"/>
             <attribute name="classpath" default="${debug.classpath}"/>
-            <attribute name="args" default="${application.args}"/>
+            <element name="customize" optional="true"/>
             <sequential>
-                <java fork="true" classname="@{classname}" dir="${work.dir}" 
jvm="${platform.java}">
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
                     <jvmarg value="-Xdebug"/>
                     <jvmarg value="-Xnoagent"/>
                     <jvmarg value="-Djava.compiler=none"/>
@@ -204,7 +181,7 @@
                         <propertyref prefix="run-sys-prop."/>
                         <mapper type="glob" from="run-sys-prop.*" to="*"/>
                     </syspropertyset>
-                    <arg line="@{args}"/>
+                    <customize/>
                 </java>
             </sequential>
         </macrodef>
@@ -214,7 +191,7 @@
             <attribute name="classname" default="${main.class}"/>
             <element name="customize" optional="true"/>
             <sequential>
-                <java fork="true" classname="@{classname}" dir="${work.dir}" 
jvm="${platform.java}">
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
                     <jvmarg line="${run.jvmargs}"/>
                     <classpath>
                         <path path="${run.classpath}"/>
@@ -231,7 +208,7 @@
     <target name="-init-presetdef-jar">
         <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1";>
             <jar jarfile="${dist.jar}" compress="${jar.compress}">
-                <fileset dir="${build.classes.dir}" 
xmlns="http://www.netbeans.org/ns/j2se-project/1"/>
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
             </jar>
         </presetdef>
     </target>
@@ -250,7 +227,7 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target name="-do-compile" 
depends="init,deps-jar,-pre-pre-compile,-pre-compile">
-        <j2seproject:javac 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:javac/>
         <copy todir="${build.classes.dir}">
             <fileset dir="${src.dir}" excludes="${build.classes.excludes}"/>
         </copy>
@@ -266,11 +243,11 @@
     </target>
     <target name="-do-compile-single" depends="init,deps-jar,-pre-pre-compile">
         <fail unless="javac.includes">Must select some files in the IDE or set 
javac.includes</fail>
-        <j2seproject:javac 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1";>
+        <j2seproject2:javac>
             <customize>
                 <patternset includes="${javac.includes}"/>
             </customize>
-        </j2seproject:javac>
+        </j2seproject2:javac>
     </target>
     <target name="-post-compile-single">
         <!-- Empty placeholder for easier customization. -->
@@ -291,17 +268,17 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target name="-do-jar-without-manifest" 
depends="init,compile,-pre-pre-jar,-pre-jar" unless="manifest.available">
-        <j2seproject:jar 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:jar/>
     </target>
     <target name="-do-jar-with-manifest" 
depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" 
unless="manifest.available+main.class">
-        <j2seproject:jar manifest="${manifest.file}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:jar manifest="${manifest.file}"/>
     </target>
     <target name="-do-jar-with-mainclass" 
depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class">
-        <j2seproject:jar manifest="${manifest.file}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1";>
-            <manifest xmlns="http://www.netbeans.org/ns/j2se-project/1";>
-                <attribute j2seproject:name="Main-Class" 
value="${main.class}"/>
-            </manifest>
-        </j2seproject:jar>
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" 
value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
     </target>
     <target name="-post-jar">
         <!-- Empty placeholder for easier customization. -->
@@ -314,15 +291,15 @@
     =================
     -->
     <target name="run" depends="init,compile" description="Run a main class.">
-        <j2seproject:java 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1";>
+        <j2seproject1:java>
             <customize>
                 <arg line="${application.args}"/>
             </customize>
-        </j2seproject:java>
+        </j2seproject1:java>
     </target>
     <target name="run-single" depends="init,compile-single">
         <fail unless="run.class">Must select one file in the IDE or set 
run.class</fail>
-        <j2seproject:java classname="${run.class}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:java classname="${run.class}"/>
     </target>
     <!--
     =================
@@ -330,19 +307,23 @@
     =================
     -->
     <target name="-debug-start-debugger" if="netbeans.home" depends="init">
-        <j2seproject:nbjpdastart name="${debug.class}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
     </target>
     <target name="-debug-start-debuggee" depends="init,compile">
-        <j2seproject:debug 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject2:debug>
     </target>
     <target name="debug" if="netbeans.home" 
depends="init,compile,-debug-start-debugger,-debug-start-debuggee" 
description="Debug project in IDE."/>
     <target name="-debug-start-debugger-stepinto" if="netbeans.home" 
depends="init">
-        <j2seproject:nbjpdastart stopclassname="${main.class}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
     </target>
     <target name="debug-stepinto" if="netbeans.home" 
depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee"/>
     <target name="-debug-start-debuggee-single" if="netbeans.home" 
depends="init,compile-single">
         <fail unless="debug.class">Must select one file in the IDE or set 
debug.class</fail>
-        <j2seproject:debug classname="${debug.class}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:debug classname="${debug.class}"/>
     </target>
     <target name="debug-single" if="netbeans.home" 
depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single"/>
     <target name="-pre-debug-fix" depends="init">
@@ -350,7 +331,7 @@
         <property name="javac.includes" value="${fix.includes}.java"/>
     </target>
     <target name="-do-debug-fix" if="netbeans.home" 
depends="init,-pre-debug-fix,compile-single">
-        <j2seproject:nbjpdareload 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:nbjpdareload/>
     </target>
     <target name="debug-fix" if="netbeans.home" 
depends="init,-pre-debug-fix,-do-debug-fix"/>
     <!--
@@ -360,63 +341,15 @@
     -->
     <target name="-javadoc-build" depends="init">
         <mkdir dir="${dist.javadoc.dir}"/>
-        <j2seproject:property name="platform.javadoc.tmp" 
value="platforms.${platform.active}.javadoc" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
-        <condition property="platform.javadoc" 
value="${platform.home}/bin/javadoc">
-            <equals arg1="${platform.javadoc.tmp}" 
arg2="$${platforms.${platform.active}.javadoc}"/>
-        </condition>
-        <property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
-        <condition property="javadoc.notree.opt" value="-notree">
-            <istrue value="${javadoc.notree}"/>
-        </condition>
-        <property name="javadoc.notree.opt" value=""/>
-        <condition property="javadoc.use.opt" value="-use">
-            <istrue value="${javadoc.use}"/>
-        </condition>
-        <property name="javadoc.use.opt" value=""/>
-        <condition property="javadoc.nonavbar.opt" value="-nonavbar">
-            <istrue value="${javadoc.nonavbar}"/>
-        </condition>
-        <property name="javadoc.nonavbar.opt" value=""/>
-        <condition property="javadoc.noindex.opt" value="-noindex">
-            <istrue value="${javadoc.noindex}"/>
-        </condition>
-        <property name="javadoc.noindex.opt" value=""/>
-        <condition property="javadoc.splitindex.opt" value="-splitindex">
-            <istrue value="${javadoc.splitindex}"/>
-        </condition>
-        <property name="javadoc.splitindex.opt" value=""/>
-        <condition property="javadoc.author.opt" value="-author">
-            <istrue value="${javadoc.author}"/>
-        </condition>
-        <property name="javadoc.author.opt" value=""/>
-        <condition property="javadoc.version.opt" value="-version">
-            <istrue value="${javadoc.version}"/>
-        </condition>
-        <property name="javadoc.version.opt" value=""/>
-        <condition property="javadoc.private.opt" value="-private">
-            <istrue value="${javadoc.private}"/>
-        </condition>
-        <property name="javadoc.private.opt" value=""/>
-        <condition property="javadoc.classpath.opt" value="${javac.classpath}">
-            <not>
-                <equals arg1="${javac.classpath}" arg2=""/>
-            </not>
-        </condition>
-        <property name="javadoc.classpath.opt" value="&quot;&quot;"/>
-        <apply executable="${platform.javadoc}" failonerror="true" 
parallel="true">
-            <arg value="-d"/>
-            <arg file="${dist.javadoc.dir}"/>
-            <arg value="-source"/>
-            <arg value="${javac.source}"/>
-            <arg value="-windowtitle"/>
-            <arg value="${javadoc.windowtitle}"/>
-            <arg line="${javadoc.notree.opt} ${javadoc.use.opt} 
${javadoc.nonavbar.opt} ${javadoc.noindex.opt} ${javadoc.splitindex.opt} 
${javadoc.author.opt} ${javadoc.version.opt} ${javadoc.private.opt}"/>
-            <arg value="-classpath"/>
-            <arg path="${javadoc.classpath.opt}"/>
-            <arg value="-sourcepath"/>
-            <arg file="${src.dir}"/>
-            <fileset dir="${src.dir}" includes="**/*.java"/>
-        </apply>
+        <javadoc destdir="${dist.javadoc.dir}" source="${javac.source}" 
notree="${javadoc.notree}" use="${javadoc.use}" nonavbar="${javadoc.nonavbar}" 
noindex="${javadoc.noindex}" splitindex="${javadoc.splitindex}" 
author="${javadoc.author}" version="${javadoc.version}" 
windowtitle="${javadoc.windowtitle}" private="${javadoc.private}" 
additionalparam="${javadoc.additionalparam}" failonerror="true">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <pathelement location="${src.dir}"/>
+            </sourcepath>
+            <fileset dir="${src.dir}"/>
+        </javadoc>
     </target>
     <target name="-javadoc-browse" if="netbeans.home" 
unless="no.javadoc.preview" depends="init,-javadoc-build">
         <nbbrowse file="${dist.javadoc.dir}/index.html"/>
@@ -435,11 +368,9 @@
         <!-- You can override this target in the ../build.xml file. -->
     </target>
     <target name="-do-compile-test" if="have.tests" 
depends="init,compile,-pre-pre-compile-test,-pre-compile-test">
-        <j2seproject:javac srcdir="${test.src.dir}" 
destdir="${build.test.classes.dir}" debug="true" 
classpath="${javac.test.classpath}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:javac srcdir="${test.src.dir}" 
destdir="${build.test.classes.dir}" debug="true" 
classpath="${javac.test.classpath}"/>
         <copy todir="${build.test.classes.dir}">
-            <fileset dir="${test.src.dir}">
-                <exclude name="**/*.java"/>
-            </fileset>
+            <fileset dir="${test.src.dir}" excludes="**/*.java"/>
         </copy>
     </target>
     <target name="-post-compile-test">
@@ -453,11 +384,11 @@
     </target>
     <target name="-do-compile-test-single" if="have.tests" 
depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single">
         <fail unless="javac.includes">Must select some files in the IDE or set 
javac.includes</fail>
-        <j2seproject:javac srcdir="${test.src.dir}" 
destdir="${build.test.classes.dir}" debug="true" 
classpath="${javac.test.classpath}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1";>
+        <j2seproject2:javac srcdir="${test.src.dir}" 
destdir="${build.test.classes.dir}" debug="true" 
classpath="${javac.test.classpath}">
             <customize>
                 <patternset includes="${javac.includes}"/>
             </customize>
-        </j2seproject:javac>
+        </j2seproject2:javac>
     </target>
     <target name="-post-compile-test-single">
         <!-- Empty placeholder for easier customization. -->
@@ -473,7 +404,7 @@
         <mkdir dir="${build.test.results.dir}"/>
     </target>
     <target name="-do-test-run" if="have.tests" 
depends="init,compile-test,-pre-test-run">
-        <j2seproject:junit 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:junit/>
     </target>
     <target name="-post-test-run" if="have.tests" 
depends="init,compile-test,-pre-test-run,-do-test-run">
         <fail if="tests.failed">Some tests failed; see details above.</fail>
@@ -486,7 +417,7 @@
     </target>
     <target name="-do-test-run-single" if="have.tests" 
depends="init,compile-test-single,-pre-test-run-single">
         <fail unless="test.includes">Must select some files in the IDE or set 
test.includes</fail>
-        <j2seproject:junit includes="${test.includes}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:junit includes="${test.includes}"/>
     </target>
     <target name="-post-test-run-single" if="have.tests" 
depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single">
         <fail if="tests.failed">Some tests failed; see details above.</fail>
@@ -499,14 +430,18 @@
     -->
     <target name="-debug-start-debuggee-test" if="have.tests" 
depends="init,compile-test">
         <fail unless="test.class">Must select one file in the IDE or set 
test.class</fail>
-        <j2seproject:debug classname="junit.textui.TestRunner" 
classpath="${debug.test.classpath}" args="${test.class}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:debug classname="junit.textui.TestRunner" 
classpath="${debug.test.classpath}">
+            <customize>
+                <arg line="${test.class}"/>
+            </customize>
+        </j2seproject2:debug>
     </target>
     <target name="-debug-start-debugger-test" if="netbeans.home+have.tests" 
depends="init,compile-test">
-        <j2seproject:nbjpdastart name="${test.class}" 
classpath="${debug.test.classpath}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:nbjpdastart name="${test.class}" 
classpath="${debug.test.classpath}"/>
     </target>
     <target name="debug-test" 
depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test"/>
     <target name="-do-debug-fix-test" if="netbeans.home" 
depends="init,-pre-debug-fix,compile-test-single">
-        <j2seproject:nbjpdareload dir="${build.test.classes.dir}" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
     </target>
     <target name="debug-fix-test" if="netbeans.home" 
depends="init,-pre-debug-fix,-do-debug-fix-test"/>
     <!--
@@ -516,11 +451,11 @@
     -->
     <target name="run-applet" depends="init,compile-single">
         <fail unless="applet.url">Must select one file in the IDE or set 
applet.url</fail>
-        <j2seproject:java classname="sun.applet.AppletViewer" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1";>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
             <customize>
                 <arg value="${applet.url}"/>
             </customize>
-        </j2seproject:java>
+        </j2seproject1:java>
     </target>
     <!--
     =========================
@@ -529,7 +464,11 @@
     -->
     <target name="-debug-start-debuggee-applet" if="netbeans.home" 
depends="init,compile-single">
         <fail unless="applet.url">Must select one file in the IDE or set 
applet.url</fail>
-        <j2seproject:debug classname="sun.applet.AppletViewer" 
args="&quot;${applet.url}&quot;" 
xmlns:j2seproject="http://www.netbeans.org/ns/j2se-project/1"/>
+        <j2seproject2:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject2:debug>
     </target>
     <target name="debug-applet" if="netbeans.home" 
depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet"/>
     <!--

Modified: trunk/clients/Javer2/nbproject/genfiles.properties
===================================================================
--- trunk/clients/Javer2/nbproject/genfiles.properties  2005-06-01 18:16:12 UTC 
(rev 750)
+++ trunk/clients/Javer2/nbproject/genfiles.properties  2005-06-10 02:56:27 UTC 
(rev 751)
@@ -1,8 +1,8 @@
-build.xml.data.CRC32=a2809796
+build.xml.data.CRC32=c60f620e
 build.xml.script.CRC32=b6072d29
-build.xml.stylesheet.CRC32=ba5d3624
+build.xml.stylesheet.CRC32=e2435cb5
 # This file is used by a NetBeans-based IDE to track changes in generated 
files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never 
regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=a2809796
-nbproject/build-impl.xml.script.CRC32=5d0a7dea
-nbproject/build-impl.xml.stylesheet.CRC32=1cf0b40c
+nbproject/build-impl.xml.data.CRC32=c60f620e
+nbproject/build-impl.xml.script.CRC32=418556a9
+nbproject/build-impl.xml.stylesheet.CRC32=3b89b5a6

Modified: trunk/clients/Javer2/nbproject/project.properties
===================================================================
--- trunk/clients/Javer2/nbproject/project.properties   2005-06-01 18:16:12 UTC 
(rev 750)
+++ trunk/clients/Javer2/nbproject/project.properties   2005-06-10 02:56:27 UTC 
(rev 751)
@@ -39,7 +39,7 @@
 javadoc.windowtitle=
 main.class=org.haverdev.haver.server.Main
 manifest.file=manifest.mf
-platform.active=Java_HotSpot_TM__Client_VM_1.4.2_08-b03
+platform.active=default_platform
 run.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}

Modified: trunk/clients/Javer2/nbproject/project.xml
===================================================================
--- trunk/clients/Javer2/nbproject/project.xml  2005-06-01 18:16:12 UTC (rev 
750)
+++ trunk/clients/Javer2/nbproject/project.xml  2005-06-10 02:56:27 UTC (rev 
751)
@@ -2,10 +2,15 @@
 <project xmlns="http://www.netbeans.org/ns/project/1";>
     <type>org.netbeans.modules.java.j2seproject</type>
     <configuration>
-        <data xmlns="http://www.netbeans.org/ns/j2se-project/1";>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/2";>
             <name>Javer2</name>
             <minimum-ant-version>1.6</minimum-ant-version>
-            <explicit-platform explicit-source-supported="true"/>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
         </data>
     </configuration>
 </project>

Modified: trunk/clients/Javer2/server.conf
===================================================================
--- trunk/clients/Javer2/server.conf    2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/server.conf    2005-06-10 02:56:27 UTC (rev 751)
@@ -5,7 +5,9 @@
 # Which port to listen on
 #haver.ListenPort=7070
 
+# GNU classpath does not have SSL support
 haver.listeners=org.haverdev.haver.server.AcceptLoop, 
org.haverdev.haver.server.SSLAcceptLoop
+#haver.listeners=org.haverdev.haver.server.AcceptLoop
 org.haverdev.haver.server.AcceptLoop.listenPorts=7070
 org.haverdev.haver.server.SSLAcceptLoop.listenPorts=7777
 
@@ -20,8 +22,8 @@
 haver.HandshakeTimeout=120
 
 # Default chat channels
-haver.ChatChannels=lobby,conspiracy,haver,creatures
-#haver.ChatChannels=
+#haver.ChatChannels=lobby,conspiracy,haver,creatures
+haver.ChatChannels=
 
 #haver.UserStore=org.haverdev.haver.server.DefaultUserStore
 haver.UserStore=org.haverdev.haver.server.FileUserStore
@@ -57,7 +59,7 @@
 # Plugin classes to load
 haver.Plugins=org.haverdev.haver.server.EntityLoader 
org.haverdev.haver.server.DynamicChannelPlugin
 
-org.haverdev.haver.server.DynamicChannelPlugin.store=channelStore.xml
+org.haverdev.haver.server.DynamicChannelPlugin.store=channels.txt
 
 # Entities to load
 org.haverdev.haver.server.EntityLoader.entities=stats persist

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java  
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java  
2005-06-10 02:56:27 UTC (rev 751)
@@ -21,7 +21,7 @@
     
     public static void startListening() throws Throwable {
         String[] ports =
-                
System.getProperty("org.haverdev.haver.server.AcceptLoop.listenPorts").split("[,
 ]+");
+                
Misc.optionSplit(System.getProperty("org.haverdev.haver.server.AcceptLoop.listenPorts"));
         for (int i = 0; i < ports.length; i++) {
             int port = Integer.decode(ports[i]).intValue();
             try {

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/DefaultUserStore.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/DefaultUserStore.java    
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/DefaultUserStore.java    
2005-06-10 02:56:27 UTC (rev 751)
@@ -19,19 +19,46 @@
     public DefaultUserStore() {
     }
     
-    public synchronized UserEntity getUser(String name) {
+    public synchronized UserInfo getUser(String name) {
         Reference r = (Reference)active.get(name);
-        UserEntity u = null;
+        UserInfo u = null;
         if (r != null)
-            u = (UserEntity)r.get();
+            u = (UserInfo)r.get();
         if (u == null) {
-            u = new UserEntity(name);
+            u = new UserInfoImpl(name);
             active.put(name, new WeakReference(u));
         }
         
         return u;
     }
     
-    public void dirtyUser(UserEntity who) {
+    final static class UserInfoImpl implements UserInfo {
+        
+        String name;
+        Properties props = new Properties();
+        
+        UserInfoImpl(String n) {
+            name = n;
+        }
+        
+        public synchronized String getProperty(String name) {
+            return props.getProperty(name);
+        }
+        
+        public synchronized String getProperty(String name, String def) {
+            return props.getProperty(name, def);
+        }
+        
+        public synchronized void setProperty(String name, String value) {
+            props.put(name, value);
+        }
+        
+        public String getName() {
+            return name;
+        }
     }
 }
+
+
+
+

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/DynamicChannelPlugin.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/haver/server/DynamicChannelPlugin.java    
    2005-06-01 18:16:12 UTC (rev 750)
+++ 
trunk/clients/Javer2/src/org/haverdev/haver/server/DynamicChannelPlugin.java    
    2005-06-10 02:56:27 UTC (rev 751)
@@ -22,8 +22,6 @@
     static HashMap theChannels = new HashMap();
     static String file = 
System.getProperty("org.haverdev.haver.server.DynamicChannelPlugin.store");
     
-    UserConnection conn;
-    
     public DynamicChannelPlugin(UserConnection conn, String name) {
         super(conn, name);
     }
@@ -31,27 +29,35 @@
     public static void initPlugin() {
         try {
             FileInputStream f = new FileInputStream(file);
-            BufferedInputStream b = new BufferedInputStream(f);
-            XMLDecoder xd = new XMLDecoder(b);
-            theChannels = (HashMap)xd.readObject();
-            xd.close();
-            Iterator i = theChannels.values().iterator();
-            while (i.hasNext())
-                Lobby.theLobby.register((Entity)i.next());
+            InputStreamReader r = new InputStreamReader(f);
+            BufferedReader b = new BufferedReader(r);
+            
+            while (true) {
+                String name = b.readLine();
+                if (name == null) break;
+                
+                DynamicChannel chan = new DynamicChannel();
+                chan.setName(name);
+                theChannels.put(name, chan);
+                Lobby.theLobby.register(chan);
+            }
+            b.close();
         } catch (Throwable t) {
             log.error("Error while loading store, ignoring", t);
         }
-        
-
     }
     
     public synchronized static void commit() {
         try {
             FileOutputStream f = new FileOutputStream(file);
-            BufferedOutputStream b = new BufferedOutputStream(f);
-            XMLEncoder xe = new XMLEncoder(b);
-            xe.writeObject(theChannels);
-            xe.close();
+            OutputStreamWriter w = new OutputStreamWriter(f);
+            BufferedWriter bw = new BufferedWriter(w);
+            PrintWriter pw = new PrintWriter(bw);
+            
+            Iterator i = theChannels.keySet().iterator();
+            while (i.hasNext())
+                pw.println((String)i.next());
+            pw.close();
         } catch (IOException e) {
             log.error("Error while saving", e);
         }
@@ -68,6 +74,8 @@
         
         theChannels.put(channel, newchan);
         commit();
+        String[] ack = { "OPEN", channel };
+        conn.sendLine(ack);
     }
     
     public synchronized void handle_CLOSE(String[] args) throws 
PropagatedException {
@@ -79,5 +87,7 @@
         dc.close();
         theChannels.remove(channel);
         commit();
+        String[] ack = { "CLOSE", channel };
+        conn.sendLine(ack);
     }
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/EntityLoader.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/EntityLoader.java        
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/EntityLoader.java        
2005-06-10 02:56:27 UTC (rev 751)
@@ -37,7 +37,8 @@
     }
     
     public static final void initPlugin() {
-        String[] entities = 
System.getProperty("org.haverdev.haver.server.EntityLoader.entities").split("[, 
]+");
+        String[] entities = 
+                
Misc.optionSplit(System.getProperty("org.haverdev.haver.server.EntityLoader.entities"));
         for (int i = 0; i < entities.length; i++) {
             log.info("Initializing entity " + entities[i] + "...");
             try {

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java       
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/FileUserStore.java       
2005-06-10 02:56:27 UTC (rev 751)
@@ -8,7 +8,6 @@
 import java.io.*;
 import java.util.*;
 import java.lang.ref.*;
-import java.beans.*;
 
 import org.apache.log4j.Logger;
 
@@ -31,11 +30,11 @@
         path = path + File.separator;
     }
 
-    public synchronized UserEntity getUser(String name) {
+    public synchronized UserInfo getUser(String name) {
         SoftReference ref = (SoftReference) cache.get(name.toLowerCase());
-        UserEntity user = null;
+        UserInfo user = null;
         if (ref != null)
-            user = (UserEntity)ref.get();
+            user = (UserInfo)ref.get();
         
         if (user == null) {
             try {
@@ -49,11 +48,11 @@
         }
         
         if (user == null)
-            user = new UserEntity(name);
+            user = new UserInfoImpl(name);
         return user;
     }
 
-    public void dirtyUser(UserEntity who) {
+    public void dirtyUser(UserInfoImpl who) {
         // TODO: merge requests
         try {
             commitUser(who);
@@ -62,28 +61,28 @@
         }
     }
     
-    synchronized void commitUser(UserEntity who) throws IOException {
-        if (busy) return;
-        
+    void commitUser(UserInfoImpl who) throws IOException {
         String name = who.getName().toLowerCase();
         
-        if (!who.isPersistant()) {
-            cache.remove(name);
-            new File(path + name).delete();
-            return;
+        synchronized (this) {
+            if (!who.isPersistant()) {
+                cache.remove(name);
+                new File(path + name).delete();
+                return;
+            }
+            
+            if (!cache.containsKey(name))
+                cache.put(name, new SoftReference(who));
         }
-        
-        if (!cache.containsKey(name))
-            cache.put(name, new SoftReference(who));
         try {
+            who.props.setProperty("_.name", who.getName());
             busy = true;
             try { new File(path + "_" + name).delete(); } catch (Throwable t) 
{}
-            XMLEncoder e = new XMLEncoder
-                    (new BufferedOutputStream
+            OutputStream e = new BufferedOutputStream
                     (new FileOutputStream
                     (path + "_" + name
-                    )));
-            e.writeObject(who);
+                    ));
+            who.props.store(e, "Name: " + who.getName());
             e.close();
             new File(path + "_" + name).renameTo(new File(path + name));
         } finally {
@@ -92,17 +91,22 @@
         }
     }
     
-    synchronized UserEntity loadUser(String who) throws IOException {
-        UserEntity u;
+    UserInfo loadUser(String who) throws IOException {
+        UserInfoImpl u;
         try {
             busy = true;
-            XMLDecoder d = new XMLDecoder
-                    (new BufferedInputStream
+            
+            InputStream s = new BufferedInputStream
                     (new FileInputStream
-                    (path + who)));
-            u = (UserEntity)d.readObject();
-            d.close();
-        } finally {
+                    (path + who));
+            
+            Properties props = new Properties();
+            props.load(s);
+            u = new UserInfoImpl(props);
+            
+            s.close();
+        }
+        finally {
             busy = false;
         }
         if (!u.getName().toLowerCase().equals(who))
@@ -110,4 +114,47 @@
         return u;
     }
     
+    class UserInfoImpl implements UserInfo, java.io.Serializable {
+        String name;
+        Properties props = new Properties();
+        
+        UserInfoImpl (Properties props) {
+            this.props = props;
+            name = getProperty("_.name");
+            if (name == null)
+                throw new IllegalStateException("Attempting to load without a 
name");
+        }
+        
+        UserInfoImpl(String name) {
+            this.name = name;
+        }
+        
+        UserInfoImpl(String name, Properties props) {
+            this.name = name;
+            this.props = props;
+        }
+        
+        public synchronized String getProperty(String name) {
+            return props.getProperty(name);
+        }
+
+        public synchronized void setProperty(String name, String value) {
+            props.setProperty(name, value);
+            dirtyUser(this);
+        }
+
+        public synchronized String getProperty(String name, String def) {
+            return props.getProperty(name, def);
+        }
+
+        public String getName() {
+            return name;
+        }
+        
+        public boolean isPersistant() {
+            String persist = getProperty("persistant", "false");
+            return Boolean.parseBoolean(persist);
+        }
+    }
+    
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java        
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java        
2005-06-10 02:56:27 UTC (rev 751)
@@ -27,7 +27,8 @@
             throw new UserAlreadyExists(args[1]);
         Misc.checkName(args[1], false);
         
-        conn.entity = Main.theStore.getUser(args[1]);
+        UserInfo info = Main.theStore.getUser(args[1]);
+        conn.entity = new UserEntity(info);
         conn.entity.attach(conn);
         
         log.info("User logged in: " + args[1]);

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java        
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java        
2005-06-10 02:56:27 UTC (rev 751)
@@ -81,14 +81,14 @@
         //int port = Integer.decode(portStr).intValue();
         
         String channelstr = System.getProperty("haver.ChatChannels", "");
-        String[] channels = channelstr.split("[, ]+");
+        String[] channels = Misc.optionSplit(channelstr);
         
         for (int i = 0; i < channels.length; i++)
             Lobby.theLobby.register(new ChatChannel(channels[i]));
         if (channels.length == 0)
             Logger.getRootLogger().warn("No chat channels configured");
         
-        String[] plugins = System.getProperty("haver.Plugins").split("[, ]+");
+        String[] plugins = 
Misc.optionSplit(System.getProperty("haver.Plugins"));
         for (int i = 0; i < plugins.length; i++) {
             try {
                 Logger.getRootLogger().info("Initializing plugin " + 
plugins[i]);
@@ -99,7 +99,7 @@
         }
         
         Logger.getRootLogger().warn("Running accept loop init functions");
-        String[] listeners = System.getProperty("haver.listeners", 
"org.haverdev.haver.server.AcceptLoop").split("[, ]+");
+        String[] listeners = 
Misc.optionSplit(System.getProperty("haver.listeners", 
"org.haverdev.haver.server.AcceptLoop"));
         for (int i = 0; i < listeners.length; i++)
             initListener(listeners[i]);
         

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java        
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/Misc.java        
2005-06-10 02:56:27 UTC (rev 751)
@@ -7,8 +7,10 @@
 package org.haverdev.haver.server;
 import java.io.*;
 import java.net.*;
-import java.util.regex.*;
+//import java.util.regex.*;
+import java.util.*;
 
+
 import org.haverdev.haver.server.exceptions.*;
 /**
  *
@@ -17,7 +19,13 @@
 public final class Misc {
     
     public static final String version = "org.haverdev.haver.server/0.01";
-    public static final Pattern ident = 
Pattern.compile("^&?[a-z][a-z0-9_.'@-]+$", Pattern.CASE_INSENSITIVE);
+//    public static final Pattern ident = 
Pattern.compile("^&?[a-z][a-z0-9_.'@-]+$", Pattern.CASE_INSENSITIVE);
+    // grah gnuclasspath grah
+    public static final String lowercase = "abcdefghijklmnopqrstuvwxyz";
+    public static final String uppercase = lowercase.toUpperCase();
+    public static final String alpha = lowercase + uppercase;
+    public static final String digits = "0123456789";
+    public static final String nameok = alpha + digits + "_.'@-";
     
     /** Static methods only */
     private Misc() {
@@ -27,7 +35,8 @@
         return s.getInetAddress().toString() + ":" + s.getPort();
     }
     
-    public static void checkName(String name, boolean reserved_ok) throws 
PropagatedException {
+    public static void checkName(String name, boolean reserved_ok) throws 
BadNameException, ReservedNameException {
+        /* classpath doesn't seem to have this...
         Matcher m = ident.matcher(name);
         if (!m.matches())
             throw new BadNameException(name);
@@ -37,6 +46,29 @@
             throw new BadNameException(name);
         if (!reserved_ok && name.charAt(0) == '&')
             throw new ReservedNameException(name);
+         */
+        
+        if (name.length() < 2)
+            throw new BadNameException(name);
+        
+        int pos = 0;
+        if (name.charAt(pos) == '&') {
+            if (reserved_ok)
+                pos++;
+            else
+                throw new ReservedNameException(name);
+        }
+        
+        if (name.length() - pos < 2)
+            throw new BadNameException(name);
+        
+        if (alpha.indexOf(name.charAt(pos++)) == -1)
+            throw new BadNameException(name);
+        
+        while (pos < name.length()) {
+            if (nameok.indexOf(name.charAt(pos++)) == -1)
+                throw new BadNameException(name);
+        }
     }
     
     public static void checkName(String name) throws PropagatedException {
@@ -84,10 +116,33 @@
      * @return Escaped string
      */
     protected static final String escape(String val) {
+        /* GNU classpath
         return val.replaceAll("\033", "\033e")
                .replaceAll("\n", "\033n")
                .replaceAll("\r", "\033r")
                .replaceAll("\t", "\033t");
+         */
+        StringBuffer out = new StringBuffer();
+        char[] arr = val.toCharArray();
+        for (int i = 0; i < arr.length; i++) {
+            switch (arr[i]) {
+                case '\033':
+                    out.append("\033e");
+                    break;
+                case '\n':
+                    out.append("\033n");
+                    break;
+                case '\r':
+                    out.append("\033r");
+                    break;
+                case '\t':
+                    out.append("\033t");
+                    break;
+                default:
+                    out.append(arr[i]);
+            }
+        }
+        return out.toString();
     }
     
     /**
@@ -96,9 +151,14 @@
      * @return An array containing the unescaped arguments of the line.
      */
     protected static final String[] decodeLine(String inLine) {
-        inLine = inLine.replaceAll("[\n\r]", ""); // We'll assume you only 
passed one
-                                            // line in.
-        String[] args = inLine.split("\t");
+        int nl = inLine.indexOf("\r");
+        if (nl != -1)
+            inLine = inLine.substring(0, nl);
+        nl = inLine.indexOf("\n");
+        if (nl != -1)
+            inLine = inLine.substring(0, nl);
+        
+        String[] args = splitString(inLine, "\t");
         for (int i = 0; i < args.length; i++) {
             args[i] = unescape(args[i]);
         }
@@ -120,6 +180,17 @@
         out.append("\r\n");
         return out.toString();
     }
+    
+    public static final String[] splitString(String str, String delims) {
+        StringTokenizer t = new StringTokenizer(str, delims);
+        ArrayList al = new ArrayList();
+        while (t.hasMoreTokens()) {
+            al.add(t.nextElement());
+        }
+        return (String[]) al.toArray(new String[al.size()]);
+    }
 
-
+    public static String[] optionSplit(String str) {
+        return splitString(str, " ,");
+    }
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/PersistBot.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/PersistBot.java  
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/PersistBot.java  
2005-06-10 02:56:27 UTC (rev 751)
@@ -27,6 +27,7 @@
     public void sendPrivateMessage(Entity from, String[] args) {
         User ufrom = (User)from;
         EntityBase efrom = (EntityBase)from; // XXX
+        UserEntity uefrom = (UserEntity)from;
         
         String arg;
         
@@ -36,9 +37,9 @@
             arg = args[0];
         
         if (arg.equals("on"))
-            efrom.setPersistant(true);
+            uefrom.getInfo().setProperty("persistant", "true");
         else if (arg.equals("off"))
-            efrom.setPersistant(false);
+            uefrom.getInfo().setProperty("persistant", "false");
         else if (arg.equals("commit")) {
             try {
                 ((PersistantLobby)Lobby.theLobby).commit();

Deleted: trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java 
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/PersistTest.java 
2005-06-10 02:56:27 UTC (rev 751)
@@ -1,47 +0,0 @@
-/*
- * PersistTest.java
- *
- * Created on May 26, 2005, 5:33 PM
- */
-
-package org.haverdev.haver.server;
-import java.beans.*;
-import java.io.*;
-
-/**
- *
- * @author bdonlan
- */
-public class PersistTest {
-    
-    /** Creates a new instance of PersistTest */
-    private PersistTest() {
-    }
-    
-    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();
-        System.out.println(baos.toString());
-        ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
-        XMLDecoder d = new XMLDecoder(in);
-        Object o = d.readObject();
-        System.out.println("Ok, " + o);
-    }
-    
-}

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/UserCommandReflect.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserCommandReflect.java  
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserCommandReflect.java  
2005-06-10 02:56:27 UTC (rev 751)
@@ -55,7 +55,7 @@
                 pe.setCmd(cmd[0]);
                 throw pe;
             }
-            log.warn(e.getTargetException());
+            log.warn("Something broke: ", e.getTargetException());
             throw new InternalCommandException(cmd[0], e);
         } catch (Throwable t) {
             throw new InternalCommandException(cmd[0], t);

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java      
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserConnection.java      
2005-06-10 02:56:27 UTC (rev 751)
@@ -237,7 +237,8 @@
     public void sendLine(String[] args) {
         String line = Misc.encodeLine(args);
         outgoing.post(line);
-        log.debug("S: " + line.replaceAll("[\n\r]", ""));
+        line = line.substring(0, line.length() - 2); // kill \r\n
+        log.debug("S: " + line);
     }
     
     public synchronized void processLine(String line) throws 
PropagatedException {

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/UserContextFactory.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserContextFactory.java  
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserContextFactory.java  
2005-06-10 02:56:27 UTC (rev 751)
@@ -18,7 +18,7 @@
         String subcontexts = System.getProperty("haver.state." + stateName);
         if (subcontexts == null)
             throw new IllegalArgumentException("Subhandler " + stateName + " 
not configured");
-        String[] ctx_arr = subcontexts.split("[, ]+");
+        String[] ctx_arr = Misc.optionSplit(subcontexts);
         for (int i = 0; i < ctx_arr.length; i++)
             ctx.add(constructSubhandler(conn, ctx_arr[i]));
         return ctx;

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java  
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserEntity.java  
2005-06-10 02:56:27 UTC (rev 751)
@@ -16,66 +16,20 @@
      HashSet channels = null;
      UserConnection conn = null;
      
-     Map props = new MapWrap(Collections.synchronizedMap(new HashMap()));
+     UserInfo info = null;
      
-     String[] authmodes = { "guest" };
-     
-     protected void dirty() {
-         Main.theStore.dirtyUser(this);
+     public UserInfo getInfo() {
+         return info;
      }
      
-     public void setAuthModes(String[] modes) {
-         authmodes = modes;
-         dirty();
+     public UserEntity(UserInfo info) throws PropagatedException {
+         this.info = info;
+         setName(info.getName());
      }
      
-     public String[] getAuthModes() {
-         return authmodes;
-     }
-     
-     public void setPersistant(boolean p) {
-         super.setPersistant(p);
-         dirty();
-         // TODO
-     }
-     
-     public Map getProps() {
-         return props;
-     }
-     
-     public void setProps(Map newprops) {
-         props = Collections.synchronizedMap(new HashMap(newprops));
-     }
-     
-     public UserEntity() {
-         
-     }
-     
-     public UserEntity(String name) {
-         setName(name);
-     }
-     
-     public UserEntity(UserConnection conn, String name) throws 
PropagatedException {
-         setName(name);
-         attach(conn);
-     }
-     
      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);
@@ -84,8 +38,6 @@
      public void detach() {
          if (conn == null)
              return;
-         props.put("lastDisconnect", new 
Date(System.currentTimeMillis()).toString());
-         dirty();
          quit("discon", null);
      }
 

Added: trunk/clients/Javer2/src/org/haverdev/haver/server/UserInfo.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserInfo.java    
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserInfo.java    
2005-06-10 02:56:27 UTC (rev 751)
@@ -0,0 +1,24 @@
+/*
+ * UserInfo.java
+ *
+ * Created on June 7, 2005, 10:30 PM
+ *
+ * To change this template, choose Tools | Options and locate the template 
under
+ * the Source Creation and Management node. Right-click the template and choose
+ * Open. You can then make changes to the template in the Source Editor.
+ */
+
+package org.haverdev.haver.server;
+
+/**
+ *
+ * @author bdonlan
+ */
+public interface UserInfo {
+    
+    public String getName();
+    public String getProperty(String name);
+    public String getProperty(String name, String def);
+    public void setProperty(String name, String value);
+    
+}


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

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/UserStore.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/UserStore.java   
2005-06-01 18:16:12 UTC (rev 750)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/UserStore.java   
2005-06-10 02:56:27 UTC (rev 751)
@@ -11,9 +11,5 @@
  * @author bdonlan
  */
 public interface UserStore {
-    
-    // This should _only_ be used for login purposes. It does not serve as
-    // a &lobby substitute.
-    public UserEntity getUser(String name);
-    public void dirtyUser(UserEntity who);
+    public UserInfo getUser(String name);
 }


Reply via email to