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=""""/> - <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=""${applet.url}"" 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); }
