|
From: <ian...@us...> - 2007-08-21 16:22:47
|
Revision: 255
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=255&view=rev
Author: iansmith
Date: 2007-08-21 09:22:50 -0700 (Tue, 21 Aug 2007)
Log Message:
-----------
Moved hibernate config files to be a resources.
Added forgotten code in com.ogoglio.util.*
Moved log4j config files.
Upgraded pom to start server now at integration test time.
Got data sources into context.xml
We are passing the two big integration tests now.
Added sample-art3d as needed for tests.
Modified Paths:
--------------
maven/trunk/ogoglio-server/.classpath
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/ArgumentUtils.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/BlockingQueue.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/ContextMenuInfo.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/LimitedInputStream.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/NetworkUtils.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/OgoglioProperties.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/PrepareDatabase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/StreamUtils.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/TwoWayMap.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/URLUTF8Encoder.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/
maven/trunk/ogoglio-server/src/main/resources/hibernate/Persist.hbm.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/Persist_NoTemplateTables.hbm.xml
maven/trunk/ogoglio-server/src/main/resources/log4j/
maven/trunk/ogoglio-server/src/main/resources/log4j/log4j.properties
maven/trunk/ogoglio-server/src/test/java/com/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/client/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/client/test/
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/TestCube.gif
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/TestCube.js
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/TestCube.mtl
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/TestCube.obj
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/TestCylinder.obj
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist.hbm.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist_NoTemplateTables.hbm.xml
Property Changed:
----------------
maven/trunk/ogoglio-server/
Property changes on: maven/trunk/ogoglio-server
___________________________________________________________________
Name: svn:ignore
+ target
Modified: maven/trunk/ogoglio-server/.classpath
===================================================================
--- maven/trunk/ogoglio-server/.classpath 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/.classpath 2007-08-21 16:22:50 UTC (rev 255)
@@ -6,6 +6,5 @@
<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry combineaccessrules="false" kind="src" path="/ogoglio-common"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-21 16:22:50 UTC (rev 255)
@@ -3,14 +3,69 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
+
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-server</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
<build>
+ <!-- RESOURCES -->
+ <resources>
+ <resource>
+ <directory>src/main/resources/hibernate</directory>
+ <includes>
+ <include>hibernate.cfg.xml</include>
+ </includes>
+ </resource>
+ <resource>
+ <targetPath>com/ogoglio/persist</targetPath>
+ <directory>src/main/resources/hibernate</directory>
+ <includes>
+ <include>Persist.hbm.xml</include>
+ </includes>
+ </resource>
+
+ <resource>
+ <directory>src/main/resources/log4j</directory>
+ <includes>
+ <include>log4j.properties</include>
+ </includes>
+ </resource>
+
+ </resources>
+ <!-- PLUGINS -->
<plugins>
+
+ <!-- SUREFIRE INTEGRATION TEST HACK -->
+
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip><!-- this is critical to avoid running unit tests, sets default value for skip -->
+ </configuration>
+ <executions>
+ <execution>
+ <id>over the wire tests</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <!-- we seem to like plurals -->
+ <include>**/*Tests.java</include>
+ </includes>
+ <skip>false</skip><!-- don't skip unit tests -->
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- CARGO -->
+
+ <plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>0.3-SNAPSHOT</version>
@@ -39,7 +94,6 @@
<containerId>tomcat5x</containerId>
<home>/usr/share/tomcat5.5</home>
<type>installed</type>
- <timeout>120</timeout>
<log>
${project.build.directory}/tomcat5x.log
</log>
@@ -57,7 +111,8 @@
8080
</cargo.servlet.port>
<cargo.logging>high</cargo.logging>
- <cargo.datasource.datasource>
+ <!--
+ <cargo.datasource.datasource>
cargo.datasource.url=jdbc:mysql://127.0.0.1/og|
cargo.datasource.driver=com.mysql.jdbc.Driver|
cargo.datasource.username=oguser|
@@ -67,15 +122,21 @@
cargo.datasource.maxIdle=5|
cargo.datasource.maxActive=50|
cargo.datasource.scope=Shareable
- </cargo.datasource.datasource>
-
+ </cargo.datasource.datasource>
+ -->
</properties>
<!-- our app to deploy -->
<deployables>
<deployable>
- <properties>
+
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-server</artifactId>
+ <type>war</type>
+
+ <properties>
<context>ogoglio-server</context>
- </properties>
+ </properties>
+
</deployable>
</deployables>
@@ -87,6 +148,7 @@
</build>
+ <!-- where to get cargo -->
<pluginRepositories>
<pluginRepository>
<id>codehaus snapshot repository</id>
@@ -103,34 +165,44 @@
<groupId>com.agical.rmock</groupId>
<artifactId>rmock</artifactId>
<version>2.0.0-rc-6</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.1.ga</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>rhino</groupId>
<artifactId>js</artifactId>
<version>1.6R6</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.0.1</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
+ <scope>compile</scope>
</dependency>
-
-
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-common</artifactId>
+ <version>0.0.1</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist.hbm.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist.hbm.xml 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist.hbm.xml 2007-08-21 16:22:50 UTC (rev 255)
@@ -1,215 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<!--
- Copyright 2007 Transmutable (http://transmutable.com/)
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
--->
-
-<hibernate-mapping>
-
- <class name="com.ogoglio.persist.PossessionRecord" table="PossessionRecords">
- <id name="possessionID">
- <generator class="increment"/>
- </id>
-
- <property name="ownerUsername" not-null="true" />
- <property name="templateID" />
- <property name="spaceID" />
- <property name="thingID" />
- </class>
-
- <class name="com.ogoglio.persist.BodyRecord" table="BodyRecords">
- <id name="bodyID">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" not-null="true" />
- <property name="ownerUsername" not-null="true" update="false" />
- <property name="hairIndex" />
- <property name="eyesIndex" />
- <property name="noseIndex" />
- <property name="mouthIndex" />
- <property name="faceIndex" />
- <property name="girth" />
- <property name="height" />
- <property name="male" />
- </class>
-
- <class name="com.ogoglio.persist.SpaceRecord" table="SpaceRecords">
- <id name="spaceID" access="field">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" not-null="true" />
- <property name="ownerUsername" not-null="true" update="false" />
- <property name="published" />
- <property name="maxGuests" />
- <property name="displaySea" access="field" />
- <property name="seaLevel" />
- <property name="simID" />
- </class>
-
- <class name="com.ogoglio.persist.SpaceMemberRecord" table="SpaceMemberRecords">
- <id name="spaceMemberID">
- <generator class="increment"/>
- </id>
-
- <property name="spaceID" update="false" />
- <property name="memberUsername" not-null="true" />
- <property name="banned" />
- <property name="role" />
- </class>
-
- <class name="com.ogoglio.persist.SimRecord" table="SimRecords">
- <id name="simID">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" />
- <property name="simURIString" column="simURI" />
- <property name="active" />
- <property name="eventPort" />
- </class>
-
- <class name="com.ogoglio.persist.AccountRecord" table="AccountRecords">
- <id name="username">
- </id>
- <property name="email" not-null="true" unique="true" />
- <property name="accountlevel" not-null="true" />
- <property name="password"/>
- <property name="firstName"/>
- <property name="lastName"/>
- <property name="homepage"/>
- <property name="creationDate" update="false"/>
- <property name="cookie"/>
- <property name="secret"/>
- <property name="frozenUntil"/>
- <property name="defaultBodyID" />
- </class>
-
- <class name="com.ogoglio.persist.TemplateRecord" table="TemplateRecords">
- <id name="templateID">
- <generator class="increment"/>
- </id>
-
- <property name="ownerUsername" not-null="true"/>
- <property name="displayName" not-null="true"/>
- <property name="description"/>
-
- <set name="supportFiles" table="TemplateTemplateSupportFiles" cascade="all">
- <key column="templateID"/>
- <many-to-many
- column="templateSupportFileID"
- unique="true"
- class="com.ogoglio.persist.TemplateSupportFileRecord"/>
- </set>
- </class>
-
- <class name="com.ogoglio.persist.TemplateSupportFileRecord" table="TemplateSupportFileRecords">
- <id name="templateSupportFileID">
- <generator class="increment"/>
- </id>
- <property name="supportFile"/>
- <property name="script" not-null="true"/>
- <property name="levelOfDetail" not-null="true"/>
- <property name="lastChanged" not-null="true"/>
- </class>
- <query name="com.ogoglio.persist.possessionByPossessionID">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.possessionID = :possessionID ]]>
- </query>
-
- <query name="com.ogoglio.persist.possessionsByOwnerUsername">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.possessionsBySpaceID">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByID">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID = :templateID ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByIDs">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID in ( :templateIDs ) ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByOwner">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.bodyByID">
- <![CDATA[ from com.ogoglio.persist.BodyRecord as body where body.bodyID = :bodyID ]]>
- </query>
-
- <query name="com.ogoglio.persist.bodiesByUsername">
- <![CDATA[ from com.ogoglio.persist.BodyRecord as body where body.ownerUsername = :username ]]>
- </query>
-
- <query name="com.ogoglio.persist.accountByUsername">
- <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.username = :username ]]>
- </query>
-
- <query name="com.ogoglio.persist.accountByEmail">
- <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.email = :email ]]>
- </query>
-
- <query name="com.ogoglio.persist.accountByCookie">
- <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.cookie = :cookie ]]>
- </query>
-
- <query name="com.ogoglio.persist.simByURI">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simURIString = :simURI ]]>
- </query>
-
- <query name="com.ogoglio.persist.simBySimID">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simID = :simID ]]>
- </query>
-
- <query name="com.ogoglio.persist.simsByActive">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.active = :active ]]>
- </query>
-
- <query name="com.ogoglio.persist.sims">
- <![CDATA[ from com.ogoglio.persist.SimRecord ]]>
- </query>
-
- <query name="com.ogoglio.persist.accounts">
- <![CDATA[ from com.ogoglio.persist.AccountRecord ]]>
- </query>
-
- <query name="com.ogoglio.persist.bodies">
- <![CDATA[ from com.ogoglio.persist.BodyRecord order by BodyID asc]]>
- </query>
- <query name="com.ogoglio.persist.possessions">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord order by PossessionID asc ]]>
- </query>
- <query name="com.ogoglio.persist.spaces">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord order by SpaceID asc]]>
- </query>
- <query name="com.ogoglio.persist.spacemembers">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord order by SpaceMemberID asc]]>
- </query>
-
- <query name="com.ogoglio.persist.spacesByOwnerUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceBySpaceID">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMembersBySpaceID">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMembershipByMemberUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.memberUsername = :memberUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMemberByUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID and spaceMember.memberUsername = :username ]]>
- </query>
-</hibernate-mapping>
\ No newline at end of file
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist_NoTemplateTables.hbm.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist_NoTemplateTables.hbm.xml 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/Persist_NoTemplateTables.hbm.xml 2007-08-21 16:22:50 UTC (rev 255)
@@ -1,191 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
-<!--
- Copyright 2007 Transmutable (http://transmutable.com/)
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
--->
-
-<hibernate-mapping>
-
- <class name="com.ogoglio.persist.PossessionRecord" table="PossessionRecords">
- <id name="possessionID">
- <generator class="increment"/>
- </id>
-
- <property name="ownerUsername" not-null="true" />
- <property name="templateID" />
- <property name="spaceID" />
- <property name="thingID" />
- </class>
-
- <class name="com.ogoglio.persist.BodyRecord" table="BodyRecords">
- <id name="bodyID">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" not-null="true" />
- <property name="ownerUsername" not-null="true" update="false" />
- <property name="hairIndex" />
- <property name="eyesIndex" />
- <property name="noseIndex" />
- <property name="mouthIndex" />
- <property name="faceIndex" />
- <property name="girth" />
- <property name="height" />
- <property name="male" />
- </class>
-
- <class name="com.ogoglio.persist.SpaceRecord" table="SpaceRecords">
- <id name="spaceID" access="field">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" not-null="true" />
- <property name="ownerUsername" not-null="true" update="false" />
- <property name="published" />
- <property name="maxGuests" />
- <property name="displaySea" access="field" />
- <property name="seaLevel" />
- <property name="simID" />
- </class>
-
- <class name="com.ogoglio.persist.SpaceMemberRecord" table="SpaceMemberRecords">
- <id name="spaceMemberID">
- <generator class="increment"/>
- </id>
-
- <property name="spaceID" update="false" />
- <property name="memberUsername" not-null="true" />
- <property name="banned" />
- <property name="role" />
- </class>
-
- <class name="com.ogoglio.persist.SimRecord" table="SimRecords">
- <id name="simID">
- <generator class="increment"/>
- </id>
-
- <property name="displayName" />
- <property name="simURIString" column="simURI" />
- <property name="active" />
- <property name="eventPort" />
- </class>
-
- <class name="com.ogoglio.persist.AccountRecord" table="AccountRecords">
- <id name="username">
- </id>
-
- <property name="email" not-null="true" unique="true" />
- <property name="accountlevel" not-null="true" />
- <property name="password"/>
- <property name="firstName"/>
- <property name="lastName"/>
- <property name="homepage"/>
- <property name="creationDate" update="false" />
- <property name="cookie"/>
- <property name="secret"/>
- <property name="frozenUntil"/>
- <property name="defaultBodyID" />
- </class>
-
- <class name="com.ogoglio.persist.TemplateRecord" table="TemplateRecords">
- <id name="templateID">
- <generator class="increment"/>
- </id>
-
- <property name="ownerUsername" not-null="true"/>
- <property name="displayName" not-null="true"/>
- <property name="description"/>
- </class>
- <query name="com.ogoglio.persist.possessionByPossessionID">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.possessionID = :possessionID ]]>
- </query>
-
- <query name="com.ogoglio.persist.possessionsByOwnerUsername">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.possessionsBySpaceID">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord as possession where possession.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByID">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID = :templateID ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByIDs">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.templateID in ( :templateIDs ) ]]>
- </query>
-
- <query name="com.ogoglio.persist.templateByOwner">
- <![CDATA[ from com.ogoglio.persist.TemplateRecord as template where template.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.bodyByID">
- <![CDATA[ from com.ogoglio.persist.BodyRecord as body where body.bodyID = :bodyID ]]>
- </query>
-
- <query name="com.ogoglio.persist.bodiesByUsername">
- <![CDATA[ from com.ogoglio.persist.BodyRecord as body where body.ownerUsername = :username ]]>
- </query>
-
- <query name="com.ogoglio.persist.accountByUsername">
- <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.username = :username ]]>
- </query>
-
- <query name="com.ogoglio.persist.accountByCookie">
- <![CDATA[ from com.ogoglio.persist.AccountRecord as account where account.cookie = :cookie ]]>
- </query>
-
- <query name="com.ogoglio.persist.simByURI">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simURIString = :simURI ]]>
- </query>
-
- <query name="com.ogoglio.persist.simBySimID">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.simID = :simID ]]>
- </query>
-
- <query name="com.ogoglio.persist.simsByActive">
- <![CDATA[ from com.ogoglio.persist.SimRecord as sim where sim.active = :active ]]>
- </query>
-
- <query name="com.ogoglio.persist.sims">
- <![CDATA[ from com.ogoglio.persist.SimRecord ]]>
- </query>
- <query name="com.ogoglio.persist.accounts">
- <![CDATA[ from com.ogoglio.persist.AccountRecord ]]>
- </query>
- <query name="com.ogoglio.persist.bodies">
- <![CDATA[ from com.ogoglio.persist.BodyRecord ]]>
- </query>
- <query name="com.ogoglio.persist.possessions">
- <![CDATA[ from com.ogoglio.persist.PossessionRecord ]]>
- </query>
- <query name="com.ogoglio.persist.spaces">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord ]]>
- </query>
- <query name="com.ogoglio.persist.spacemembers">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord ]]>
- </query>
- <query name="com.ogoglio.persist.spacesByOwnerUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.ownerUsername = :ownerUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceBySpaceID">
- <![CDATA[ from com.ogoglio.persist.SpaceRecord as space where space.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMembersBySpaceID">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMembershipByMemberUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.memberUsername = :memberUsername ]]>
- </query>
-
- <query name="com.ogoglio.persist.spaceMemberByUsername">
- <![CDATA[ from com.ogoglio.persist.SpaceMemberRecord as spaceMember where spaceMember.spaceID = :spaceID and spaceMember.memberUsername = :username ]]>
- </query>
-</hibernate-mapping>
\ No newline at end of file
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionRecord.java 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionRecord.java 2007-08-21 16:22:50 UTC (rev 255)
@@ -42,17 +42,21 @@
return ownerUsername;
}
- /*
+ //hibernate access
private void setOwnerUsername(String ownerUsername) {
this.ownerUsername = ownerUsername;
}
+
+ //hibernate access
private void setTemplateID(long templateID) {
this.templateID = templateID;
}
+
+ //hibernate access
private void setPossessionID(long possessionID) {
this.possessionID = possessionID;
}
- */
+
public long getPossessionID() {
return possessionID;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimRecord.java 2007-08-21 16:22:50 UTC (rev 255)
@@ -78,18 +78,20 @@
}
return ArgumentUtils.createURI(simURIString);
}
- /*
+
+ //hibernate access
private String getSimURIString() {
return simURIString;
}
+ //hibernate access
private void setSimURIString(String simURIString) {
if(simURIString != null) {
ArgumentUtils.assertIsURI(simURIString);
}
this.simURIString = simURIString;
}
-*/
+
public boolean equals(Object obj) {
if(obj == null || !(obj instanceof SimRecord)) {
return false;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java 2007-08-21 16:22:50 UTC (rev 255)
@@ -62,19 +62,22 @@
public String getMemberUsername() {
return memberUsername;
}
- /*
+
+ //hibernate access
private void setMemberUsername(String memberUsername) {
this.memberUsername = memberUsername;
}
+ //hibernate access
private void setSpaceID(long spaceID) {
this.spaceID = spaceID;
}
+ //hibernate access
private void setSpaceMemberID(long spaceMemberID) {
this.spaceMemberID = spaceMemberID;
}
- */
+
public long getSpaceID() {
return spaceID;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java 2007-08-21 16:17:53 UTC (rev 254)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateRecord.java 2007-08-21 16:22:50 UTC (rev 255)
@@ -54,14 +54,17 @@
public String getOwnerUsername() {
return ownerUsername;
}
- /*
+
+ //hibernate access
private void setOwnerUsername(String ownerUsername) {
this.ownerUsername = ownerUsername;
}
+
+ //hibernate access
private void setTemplateID(long templateID) {
this.templateID = templateID;
}
- */
+
public long getTemplateID() {
return templateID;
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/ArgumentUtils.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/ArgumentUtils.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/ArgumentUtils.java 2007-08-21 16:22:50 UTC (rev 255)
@@ -0,0 +1,104 @@
+/* Copyright 2007 Transmutable (http://transmutable.com/)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permi...
[truncated message content] |
|
From: <ian...@us...> - 2007-08-23 00:14:04
|
Revision: 259
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=259&view=rev
Author: iansmith
Date: 2007-08-22 17:14:01 -0700 (Wed, 22 Aug 2007)
Log Message:
-----------
safety checkin
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/webapp/GrayCheckmark.gif
maven/trunk/ogoglio-server/src/main/webapp/GreenCheckmark.gif
maven/trunk/ogoglio-server/src/main/webapp/account.html
maven/trunk/ogoglio-server/src/main/webapp/admin.html
maven/trunk/ogoglio-server/src/main/webapp/body.html
maven/trunk/ogoglio-server/src/main/webapp/browserTests.js
maven/trunk/ogoglio-server/src/main/webapp/createAccount.html
maven/trunk/ogoglio-server/src/main/webapp/doorPopup.html
maven/trunk/ogoglio-server/src/main/webapp/icons/
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-angel.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-crying.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-devil-grin.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-glasses.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-kiss.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-monkey.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-plain.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-sad.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-smile-big.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-smile.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-surprise.png
maven/trunk/ogoglio-server/src/main/webapp/icons/16x16/face-wink.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-angel.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-crying.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-devil-grin.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-glasses.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-kiss.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-monkey.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-plain.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-sad.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-smile-big.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-smile.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-surprise.png
maven/trunk/ogoglio-server/src/main/webapp/icons/22x22/face-wink.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-angel.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-crying.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-devil-grin.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-glasses.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-kiss.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-monkey.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-plain.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-sad.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-smile-big.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-smile.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-surprise.png
maven/trunk/ogoglio-server/src/main/webapp/icons/32x32/face-wink.png
maven/trunk/ogoglio-server/src/main/webapp/icons/index.html
maven/trunk/ogoglio-server/src/main/webapp/index.html
maven/trunk/ogoglio-server/src/main/webapp/inventory.html
maven/trunk/ogoglio-server/src/main/webapp/licenses.html
maven/trunk/ogoglio-server/src/main/webapp/ogoglio.js
maven/trunk/ogoglio-server/src/main/webapp/reset.css
maven/trunk/ogoglio-server/src/main/webapp/signin.html
maven/trunk/ogoglio-server/src/main/webapp/site.js
maven/trunk/ogoglio-server/src/main/webapp/space.html
maven/trunk/ogoglio-server/src/main/webapp/spaceEditor.html
maven/trunk/ogoglio-server/src/main/webapp/spaceEmbed.html
maven/trunk/ogoglio-server/src/main/webapp/spacePopulation.html
maven/trunk/ogoglio-server/src/main/webapp/spaceSettings.html
maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
maven/trunk/ogoglio-server/src/main/webapp/style.css
maven/trunk/ogoglio-server/src/main/webapp/templateEditor.html
maven/trunk/ogoglio-server/src/main/webapp/thingPopup.html
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-23 00:13:07 UTC (rev 258)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-23 00:14:01 UTC (rev 259)
@@ -37,13 +37,14 @@
<!-- PLUGINS -->
<plugins>
- <!-- SUREFIRE INTEGRATION TEST HACK -->
+ <!-- SUREFIRE INTEGRATION TEST -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip><!-- this is critical to avoid running unit tests, sets default value for skip -->
+ <childDelegation>false</childDelegation>
</configuration>
<executions>
<execution>
@@ -57,7 +58,12 @@
<!-- we seem to like plurals -->
<include>**/*Tests.java</include>
</includes>
- <skip>false</skip><!-- don't skip unit tests -->
+ <excludes>
+ <exclude>
+ **/SpaceDuplicatorTests.java
+ </exclude>
+ </excludes>
+ <skip>false</skip><!-- don't skip integration tests -->
</configuration>
</execution>
</executions>
@@ -76,13 +82,20 @@
<goals>
<goal>start</goal>
</goals>
+ <configuration>
+ <wait>false</wait>
+ </configuration>
</execution>
+
<execution>
<id>get-down</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
+ <configuration>
+ <wait>true</wait>
+ </configuration>
</execution>
</executions>
@@ -132,11 +145,11 @@
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-server</artifactId>
<type>war</type>
-
- <properties>
+
+ <properties>
<context>ogoglio-server</context>
- </properties>
-
+ </properties>
+
</deployable>
</deployables>
@@ -144,8 +157,31 @@
</configuration>
</plugin>
+
+ <!-- dependencies to pull in applets via deps-->
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-applets</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>
+ ${project.build.directory}/ogoglio-server-0.0.1
+ </outputDirectory>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
-
</build>
<!-- where to get cargo -->
@@ -159,6 +195,7 @@
</pluginRepository>
</pluginRepositories>
+
<!-- stuff we need -->
<dependencies>
<dependency>
@@ -197,12 +234,38 @@
<version>1.2</version>
<scope>compile</scope>
</dependency>
+
<dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-common</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-viewer-applet</artifactId>
+ <version>0.0.1</version>
+ <scope>runtime</scope>
+ <classifier>common</classifier>
+ </dependency>
+
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-test-applet</artifactId>
+ <version>0.0.1</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-body-editor-applet</artifactId>
+ <version>0.0.1</version>
+ <scope>runtime</scope>
+ <classifier>common</classifier>
+ </dependency>
+
+
</dependencies>
</project>
Added: maven/trunk/ogoglio-server/src/main/webapp/GrayCheckmark.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/webapp/GrayCheckmark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/webapp/GreenCheckmark.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/webapp/GreenCheckmark.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/webapp/account.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/account.html (rev 0)
+++ maven/trunk/ogoglio-server/src/main/webapp/account.html 2007-08-23 00:14:01 UTC (rev 259)
@@ -0,0 +1,269 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<script type="text/javascript" src="ogoglio.js"></script>
+<script type="text/javascript" src="site.js"></script>
+
+<title>Ogoglio Example: account</title>
+<style type="text/css">
+#main {
+ overflow: hidden;
+ width: 750px;
+}
+
+#content {
+ width: 500px;
+ border-right: 250px solid #FFF;
+ margin-right: -250px;
+ float: left;
+}
+
+#rail {
+ background-color: #FFF;
+ width: 250px;
+ float: left;
+}
+
+.section {
+ border: solid 1px #CCD;
+ border-top: solid 5px #CCD;
+ margin: 0px 25px 10px 0px;
+ padding: 0px 5px 5px 5px;
+}
+
+#profileTable th {
+ text-align: right;
+}
+
+.includedFeedItem {
+ margin-top: 10px;
+}
+</style>
+<script type="text/javascript">
+var requestedUsername = locationParameters['username'];
+var spaceListXML = null;
+
+var mainElement = null;
+var titleUserElement = null;
+//var titleAccountElement = null;
+var inventoryLink = null;
+var spaceListTable = null;
+var spaceMembershipTable = null;
+var profileTable = null;
+var profileGoButton = null;
+var bodyLink = null;
+
+function handleAuth(){
+ if(requestedUsername == null){
+ mainElement.innerHTML = "<h2>No Account Requested</h2>";
+ return;
+ }
+
+ if(authedUsername == null || (authedUsername != requestedUsername)){
+ mainElement.innerHTML = "<h2>You're not logged in to this account.</h2>";
+ return;
+ }
+
+ inventoryLink.innerHTML = "<a href='inventory.html?username=" + requestedUsername + "'>Check your inventory »</a>"
+
+ requestAccountDocument(requestedUsername, handleAccount);
+ requestSpaceList(requestedUsername, handleSpaceList);
+ requestAccountMembership(requestedUsername, handleMembership);
+}
+
+function handleMembership(membershipXML){
+ if(membershipXML == null) return;
+
+ var tableHTML = "";
+ for(var i=0; i < membershipXML.childNodes.length; i++){
+ var spaceID = membershipXML.childNodes[i].getAttribute("spaceid");
+ var banned = membershipXML.childNodes[i].getAttribute("banned");
+ var role = membershipXML.childNodes[i].getAttribute("role");
+ if(i == 0){
+ tableHTML += "<tr><th>role</th><th>space</th></tr>"
+ }
+ tableHTML += "<tr>";
+ if("true" == banned){
+ tableHTML += "<td>banned</td>";
+ } else {
+ tableHTML += "<td>" + escapeHTML(role) + "</td>";
+ }
+ tableHTML += "<td><a href='space.html?spaceID=" + spaceID + "'>Space " + escapeHTML(spaceID) + "</a></td>";
+ tableHTML += "</tr>";
+ }
+ spaceMembershipTable.innerHTML = "<table>" + tableHTML + "</table>";
+}
+
+function createNewSpace(spaceName){
+ createSpace(requestedUsername, spaceName, handleNewSpace);
+}
+
+function handleNewSpace(xml){
+ requestSpaceList(requestedUsername, handleSpaceList);
+}
+
+function handleSpaceList(xml){
+ if(xml == null) return;
+
+ spaceListXML = xml;
+ setSpaceListFromSpaceListXML();
+}
+
+function setSpaceListFromSpaceListXML() {
+ if(spaceListXML == null){
+ return;
+ }
+ var tableHTML = "";
+ for(var i=0; i < spaceListXML.childNodes.length; i++){
+ var spaceID = spaceListXML.childNodes[i].getAttribute("spaceid");
+ var displayName = spaceListXML.childNodes[i].getAttribute("displayname");
+ tableHTML += "<tr>";
+ tableHTML += "<td>" + escapeHTML(displayName) + "</td>";
+ tableHTML += "<td><form onsubmit='document.location.href=\"space.html?spaceID=" + spaceID + "\"; return false;'><input type='submit' value='view'/></form></td>";
+ tableHTML += "<td><form onsubmit='document.location.href=\"spaceEditor.html?spaceID=" + spaceID + "\"; return false;'><input type='submit' value='edit'/></form></td>";
+ tableHTML += "</tr>";
+ }
+ spaceListTable.innerHTML = "<table>" + tableHTML + "</table>";
+}
+
+function handleAccount(xml){
+ if(xml == null){
+ return;
+ }
+ accountXML = xml;
+
+ titleUserElement.innerHTML = "User: " + accountXML.getAttribute("username");
+ //titleAccountElement.innerHTML = "Account Type: " + accountXML.getAttribute("accountlevel");
+ bodyLink.innerHTML = "<a href='body.html?bodyID=" + accountXML.getAttribute('defaultbodyid') + "'>Edit your body »</a>"
+ setProfileFromAccountXML();
+}
+
+function setProfileFromAccountXML(){
+ var tableHTML = generateProfileRow("email", "email", accountXML.getAttribute("email"), false);
+ tableHTML += generateProfileRow("first name", "firstname", accountXML.getAttribute("firstname"), false);
+ tableHTML += generateProfileRow("last name", "lastname", accountXML.getAttribute("lastname"), false);
+ tableHTML += generateProfileRow("homepage", "homepage", accountXML.getAttribute("homepage"), true);
+ profileTable.innerHTML = "<table>" + tableHTML + "</table>";
+}
+
+function profileGo(){
+ if(profileGoButton.value == "edit"){
+ var tableHTML = "<tr><th>email:</th><td>" + accountXML.getAttribute("email") + "</td><td></td></tr>";
+ tableHTML += generateProfileInput("first name", "firstname", accountXML.getAttribute("firstname"));
+ tableHTML += generateProfileInput("last name", "lastname", accountXML.getAttribute("lastname"));
+ tableHTML += generateProfileInput("homepage", "homepage", accountXML.getAttribute("homepage"));
+ tableHTML += generateProfileInput("password", "password", null, "blank leaves as-is");
+ tableHTML += generateProfileInput("again", "password2", null);
+ profileTable.innerHTML = "<table>" + tableHTML + "</table>";
+ profileGoButton.value = "save";
+ } else if(profileGoButton.value == "save"){
+ if(document.getElementById('password').value != document.getElementById('password2').value){
+ alert("Passwords 1 and 2 don't match.");
+ return;
+ }
+
+ profileGoButton.value = "edit";
+
+ accountXML.setAttribute("firstname", escapeHTML(document.getElementById("firstname").value));
+ accountXML.setAttribute("lastname", escapeHTML(document.getElementById("lastname").value));
+ accountXML.setAttribute("homepage", escapeHTML(document.getElementById("homepage").value));
+ accountXML.setAttribute("password", escapeHTML(document.getElementById("password").value));
+ updateAccountDocument(accountXML, handleAccount);
+ profileTable.innerHTML = "saving...";
+ }
+}
+
+function generateProfileRow(heading, field, value, link){
+ if(value == null || value.length === 0){
+ return "";
+ }
+ if(link){
+ return "<tr><th>" + heading + ":</th><td><a rel='nofollow' href='" + escapeHTML(value) +"'>" + escapeHTML(value) + "</a></td></tr>\n";
+ } else {
+ return "<tr><th>" + heading + ":</th><td>" + escapeHTML(value) + "</td></tr>\n";
+ }
+}
+
+function generateProfileInput(heading, field, value, comment) {
+ var nonNullValue = value == null ? "" : value;
+ var nonNullComment = comment == null ? "" : comment;
+ var result = "<tr><th>" + heading + ":</th><td><input id='" + field + "' name='" + field + "' type='text' value='" + escapeHTML(nonNullValue) + "' /></td><td>" + escapeHTML(nonNullComment) + "</td></tr>\n";
+ return result;
+}
+
+function init(){
+ populateMemberMenuItem();
+
+ titleUserElement = document.getElementById("titleUser");
+ //titleAccountElement = document.getElementById("titleAccount");
+ mainElement = document.getElementById("main");
+ inventoryLink = document.getElementById("inventoryLink");
+ spaceListTable = document.getElementById("spaceListTable");
+ spaceMembershipTable = document.getElementById("spaceMembershipTable");
+ profileGoButton = document.getElementById("profileGoButton");
+ profileTable = document.getElementById("profileTable");
+ bodyLink = document.getElementById("bodyLink");
+
+ addAuthListeners(handleAuth, handleAuth);
+}
+</script>
+</head>
+<body onload="init();">
+<div id="header">
+ <strong><a href="index.html">Ogoglio Example</a></strong>
+ <span id="search">
+ <!-- <form style="margin: 0px;" method="get" action="http://www.google.com/search">
+ <input type="text" size="20" name="q"/>
+ <input type="hidden" name="q" value="site:example.com"/>
+ <input type="submit" value="find"/>
+ </form> -->
+ </span>
+</div> <!-- end header -->
+
+<div id="headerMenu">
+ <a href="index.html">Home</a>
+ <span id="memberMenuItem"> </span>
+</div> <!-- end header menu -->
+
+<div id="main">
+ <h2 id="titleUser">User: loading...</h2>
+ <!-- <h3 id="titleAccount">Account Type: loading...</h3> -->
+
+ <div id="content">
+ <div class="section">
+ <h3>Profile: <input id="profileGoButton" onclick="profileGo(); return false;" type="submit" value="edit"/></h3>
+ <form id='profileForm'>
+ <div id="profileTable">
+ loading...
+ </div>
+ </form>
+ </div>
+
+ <div class="section">
+ <h3>Your spaces:</h3>
+ <div id="spaceListTable">
+ loading...
+ </div>
+ <form onsubmit="createNewSpace('New Space'); return false;"><input type="submit" value="create a new space"/></form>
+ </div>
+
+ <p class="navLink" id="bodyLink"></p>
+ <p class="navLink" id="inventoryLink"></p>
+ </div><!-- end content -->
+
+ <div id="rail">
+ <div class="section">
+ <h3>Space membership:</h3>
+ <div id="spaceMembershipTable">
+ loading...
+ </div>
+ </div>
+ </div><!-- end rail -->
+</div> <!-- end main -->
+<div id="footer">
+
+</div>
+<!-- Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.-->
+</body>
+</html>
\ No newline at end of file
Added: maven/trunk/ogoglio-server/src/main/webapp/admin.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/admin.html (rev 0)
+++ maven/trunk/ogoglio-server/src/main/webapp/admin.html 2007-08-23 00:14:01 UTC (rev 259)
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<script type="text/javascript" src="/og/ogoglio.js"></script>
+<script type="text/javascript" src="site.js"></script>
+
+<title>Ogoglio Example: admin</title>
+
+<style type="text/css">
+#main {
+ overflow: hidden;
+ width: 7680px;
+}
+
+#content {
+ width: 768px;
+ float: left;
+}
+
+#rail {
+ background-color: #FFF;
+ width: 250px;
+ float: left;
+}
+
+.section {
+ border: solid 1px #CCD;
+ border-top: solid 5px #CCD;
+ margin: 0px 25px 10px 0px;
+ padding: 0px 5px 5px 5px;
+}
+
+#profileTable th {
+ text-align: right;
+}
+
+.includedFeedItem {
+ margin-top: 10px;
+}
+</style>
+<script type="text/javascript">
+var requestedUsername = locationParameters['username'];
+
+var mainElement = null;
+var titleUserElement = null;
+var profileTable = null;
+var profileGoButton = null;
+var freezeDiv = null;
+var levelDiv = null;
+
+function handleAuth(){
+ if(requestedUsername == null){
+ mainElement.innerHTML = "<h2>No Account Requested</h2>";
+ return;
+ }
+
+ if(authedUsername == null){
+ mainElement.innerHTML = "<h2>You must log in as an admin.</h2>";
+ return;
+ }
+ requestAccountDocument(authedUsername, handleAdminTest);
+}
+
+function handleAdminTest(xml){
+ if(xml == null){
+ mainElement.innerHTML = "<h2>There was an error checking your account for admin access.</h2>";
+ return;
+ }
+ if("admin" != xml.getAttribute("accountlevel")){
+ mainElement.innerHTML = "<h2>You must be an admin to use this page.</h2>";
+ return;
+ }
+ requestAccountDocument(requestedUsername, handleAccount);
+}
+
+function handleAccount(xml){
+ if(xml == null){
+ mainElement.innerHTML = "<h2>Could not find that user: " + requestedUsername + "</h2>";
+ return;
+ }
+ accountXML = xml;
+
+ titleUserElement.innerHTML = "Administer User: " + accountXML.getAttribute("username");
+ setProfileFromAccountXML();
+}
+
+function setProfileFromAccountXML(){
+ var tableHTML = generateProfileRow("email", "email", accountXML.getAttribute("email"), false);
+ tableHTML += generateProfileRow("first name", "firstname", accountXML.getAttribute("firstname"), false);
+ tableHTML += generateProfileRow("last name", "lastname", accountXML.getAttribute("lastname"), false);
+ tableHTML += generateProfileRow("homepage", "homepage", accountXML.getAttribute("homepage"), true);
+ profileTable.innerHTML = "<table>" + tableHTML + "</table>";
+
+ var freezeHTML = "";
+ if(accountXML.getAttribute("frozenuntil")){
+ var date = new Date();
+ date.setTime(accountXML.getAttribute("frozenuntil"));
+ freezeHTML += "frozen until:<div style='color: #F00; margin: 10px;'>" + date + "</div>";
+ freezeHTML += "<form onsubmit='freezeGo(); return false;'><input type='submit' value='thaw' /></form>";
+ } else {
+ freezeHTML += "not frozen:<br/><br/>";
+ freezeHTML += "<form onsubmit='freezeGo(); return false;'><input type='submit' value='freeze' /></form>";
+ }
+ freezeDiv.innerHTML = freezeHTML;
+
+ //basic, advanced, pro, or admin
+ var levelHTML = "";
+ levelHTML += '<form id="levelForm">';
+ levelHTML += '<select onchange="levelFormGo(); return false;" id="levelSelect" name="level">';
+ levelHTML += '<option value="basic">basic</option>';
+ levelHTML += '<option value="advanced">advanced</option>';
+ levelHTML += '<option value="pro">pro</option>';
+ levelHTML += '<option value="admin">admin</option>';
+ levelHTML += '</select>';
+ levelHTML += '</form>';
+ levelDiv.innerHTML = levelHTML;
+
+ var currentLevel = accountXML.getAttribute("accountlevel");
+ var levelForm = document.getElementById("levelForm");
+ if(currentLevel == 'basic'){
+ levelForm.levelSelect.selectedIndex = 0;
+ } else if (currentLevel == 'advanced'){
+ levelForm.levelSelect.selectedIndex = 1;
+ } else if (currentLevel == 'pro'){
+ levelForm.levelSelect.selectedIndex = 2;
+ } else if (currentLevel == 'admin'){
+ levelForm.levelSelect.selectedIndex = 3;
+ }
+}
+
+function levelFormGo(){
+ var currentLevel = accountXML.getAttribute("accountlevel");
+ var levelForm = document.getElementById("levelForm");
+ var newLevel = levelForm.levelSelect.options[levelForm.levelSelect.selectedIndex].value;
+ if(newLevel == currentLevel){
+ return;
+ }
+ accountXML.setAttribute("accountlevel", newLevel);
+ updateAccountDocument(accountXML, handleAccount);
+}
+
+function freezeGo(){
+ if(accountXML.getAttribute("frozenuntil")){
+ accountXML.setAttribute("frozenuntil", 1000);
+ updateAccountDocument(accountXML, handleAccount);
+ profileTable.innerHTML = "thawing...";
+ } else {
+ accountXML.setAttribute("frozenuntil", new Date().getTime() + 1135296000000);
+ updateAccountDocument(accountXML, handleAccount);
+ profileTable.innerHTML = "freezing...";
+ }
+}
+
+function profileGo(){
+ if(profileGoButton.value == "edit"){
+ var tableHTML = "<tr><th>email:</th><td>" + accountXML.getAttribute("email") + "</td><td></td></tr>";
+ tableHTML += generateProfileInput("first name", "firstname", accountXML.getAttribute("firstname"));
+ tableHTML += generateProfileInput("last name", "lastname", accountXML.getAttribute("lastname"));
+ tableHTML += generateProfileInput("homepage", "homepage", accountXML.getAttribute("homepage"));
+ tableHTML += generateProfileInput("password", "password", null, "blank leaves as-is");
+ tableHTML += generateProfileInput("again", "password2", null);
+
+ profileTable.innerHTML = "<table>" + tableHTML + "</table>";
+ profileGoButton.value = "save";
+ } else if(profileGoButton.value == "save"){
+ if(document.getElementById('password').value != document.getElementById('password2').value){
+ alert("Passwords 1 and 2 don't match.");
+ return;
+ }
+
+ profileGoButton.value = "edit";
+
+ accountXML.setAttribute("firstname", escapeHTML(document.getElementById("firstname").value));
+ accountXML.setAttribute("lastname", escapeHTML(document.getElementById("lastname").value));
+ accountXML.setAttribute("homepage", escapeHTML(document.getElementById("homepage").value));
+ accountXML.setAttribute("password", escapeHTML(document.getElementById("password").value));
+ updateAccountDocument(accountXML, handleAccount);
+ profileTable.innerHTML = "saving...";
+ }
+}
+
+function generateProfileRow(heading, field, value, link){
+ if(value == null || value.length === 0){
+ return "";
+ }
+ if(link){
+ return "<tr><th>" + heading + ":</th><td><a rel='nofollow' href='" + escapeHTML(value) +"'>" + escapeHTML(value) + "</a></td></tr>\n";
+ } else {
+ return "<tr><th>" + heading + ":</th><td>" + escapeHTML(value) + "</td></tr>\n";
+ }
+}
+
+function generateProfileInput(heading, field, value, comment) {
+ var nonNullValue = value == null ? "" : value;
+ var nonNullComment = comment == null ? "" : comment;
+ var result = "<tr><th>" + heading + ":</th><td><input id='" + field + "' name='" + field + "' type='text' value='" + escapeHTML(nonNullValue) + "' /></td><td>" + escapeHTML(nonNullComment) + "</td></tr>\n";
+ return result;
+}
+
+function init(){
+ populateMemberMenuItem();
+
+ titleUserElement = document.getElementById("titleUser");
+ mainElement = document.getElementById("main");
+ profileGoButton = document.getElementById("profileGoButton");
+ profileTable = document.getElementById("profileTable");
+ freezeDiv = document.getElementById("freezeDiv");
+ levelDiv = document.getElementById("levelDiv");
+
+ addAuthListeners(handleAuth, handleAuth);
+}
+</script>
+</head>
+<body onload="init();">
+<div id="header">
+ <strong><a href="index.html">Ogoglio Example</a></strong>
+ <span id="search">
+ <!-- <form style="margin: 0px;" method="get" action="http://www.google.com/search">
+ <input type="text" size="20" name="q"/>
+ <input type="hidden" name="q" value="site:example.com"/>
+ <input type="submit" value="find"/>
+ </form> -->
+ </span>
+</div> <!-- end header -->
+
+<div id="headerMenu">
+ <a href="index.html">Home</a>
+ <span id="memberMenuItem"> </span>
+</div> <!-- end header menu -->
+
+<div id="main">
+ <h2 style="color: #4F4;" id="titleUser">Administer User: loading...</h2>
+
+ <div id="content">
+ <div class="section">
+ <h3>Profile: <input id="profileGoButton" onclick="profileGo(); return false;" type="submit" value="edit"/></h3>
+ <form id='profileForm'>
+ <div id="profileTable">
+ loading...
+ </div>
+ </form>
+ </div>
+ <div class="section">
+ <h3>Account level:</h3>
+ <div id="levelDiv">
+ loading...
+ </div>
+ </div>
+
+ <div class="section">
+ <h3>Account status:</h3>
+ <div id="freezeDiv">
+ loading...
+ </div>
+ </div>
+ </div><!-- end content -->
+</div> <!-- end main -->
+<div id="footer">
+
+</div>
+<!-- Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.-->
+</body>
+</html>
\ No newline at end of file
Added: maven/trunk/ogoglio-server/src/main/webapp/body.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/body.html (rev 0)
+++ maven/trunk/ogoglio-server/src/main/webapp/body.html 2007-08-23 00:14:01 UTC (rev 259)
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<script type="text/javascript" src="/og/ogoglio.js"></script>
+<script type="text/javascript" src="site.js"></script>
+
+<title>Ogoglio Example: body</title>
+<style type="text/css">
+#main {
+ overflow: hidden;
+ width: 750px;
+}
+
+.section {
+ border: solid 1px #CCD;
+ border-top: solid 5px #CCD;
+ margin: 0px 25px 10px 0px;
+ padding: 0px 5px 5px 5px;
+}
+
+p {
+ margin: 10px 0px 10px 0px;
+}
+
+#appletDiv {
+ width: 500px;
+ height: 500px;
+}
+</style>
+
+<script type="text/javascript">
+var bodyID = locationParameters['bodyID'];
+var loginCookie = getCookie('loginCookie');
+
+var titleElement = null;
+var mainElement = null;
+var titleElement = null;
+var appletDiv = null;
+
+var bodyXML = null;
+
+function handleAuth(){
+ if(...
[truncated message content] |
|
From: <ian...@us...> - 2007-08-27 16:12:25
|
Revision: 266
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=266&view=rev
Author: iansmith
Date: 2007-08-26 15:58:59 -0700 (Sun, 26 Aug 2007)
Log Message:
-----------
Added basic support for DB migration.
Added support for unit tests of the server.
Added test resources.
Modified Paths:
--------------
maven/trunk/ogoglio-server/.classpath
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/OgoglioProperties.java
maven/trunk/ogoglio-server/src/main/resources/log4j/log4j.properties
maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
maven/trunk/ogoglio-server/src/main/webapp/icons/index.html
maven/trunk/ogoglio-server/src/main/webapp/spaceEditor.html
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/hibernate.cfg.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-0.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
maven/trunk/ogoglio-server/src/test/resources/hibernate/
maven/trunk/ogoglio-server/src/test/resources/hibernate/test-config.properties
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateBase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTests.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistTests.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptTests.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/PrepareDatabase.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/Persist.hbm.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/Persist_NoTemplateTables.hbm.xml
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/client/
maven/trunk/ogoglio-server/src/test/resources/sample-art3d/
Modified: maven/trunk/ogoglio-server/.classpath
===================================================================
--- maven/trunk/ogoglio-server/.classpath 2007-08-26 22:57:26 UTC (rev 265)
+++ maven/trunk/ogoglio-server/.classpath 2007-08-26 22:58:59 UTC (rev 266)
@@ -1,10 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources/hibernate" path="src/main/resources/hibernate"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources/log4j" path="src/main/resources/log4j"/>
+ <classpathentry excluding="**" kind="src" output="src/test/resources/hibernate" path="src/test/resources/hibernate"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="/usr/local/jdk1.5.0_12/jre/lib/i386"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-26 22:57:26 UTC (rev 265)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-26 22:58:59 UTC (rev 266)
@@ -9,8 +9,30 @@
<packaging>war</packaging>
<version>0.0.1</version>
+
+ <!-- -->
+ <!-- profiles -->
+ <!-- -->
+ <profiles>
+ <!-- LINUX -->
+ <profile>
+ <id>linux</id>
+ <activation>
+ <os>
+ <name>Linux</name>
+ </os>
+ <!-- placeholder for some config needed for linux -->
+ </activation>
+ <properties></properties>
+ </profile>
+ </profiles>
+ <!-- -->
+ <!-- BUILD -->
+ <!-- -->
<build>
+ <!-- -->
<!-- RESOURCES -->
+ <!-- -->
<resources>
<resource>
<directory>src/main/resources/hibernate</directory>
@@ -19,10 +41,10 @@
</includes>
</resource>
<resource>
- <targetPath>com/ogoglio/persist</targetPath>
+ <targetPath>com/ogoglio/migrate</targetPath>
<directory>src/main/resources/hibernate</directory>
<includes>
- <include>Persist.hbm.xml</include>
+ <include>migration-*.xml</include>
</includes>
</resource>
@@ -34,132 +56,30 @@
</resource>
</resources>
- <!-- PLUGINS -->
- <plugins>
- <!-- SUREFIRE INTEGRATION TEST -->
+ <!-- -->
+ <!-- TEST RESOURCES -->
+ <!-- -->
+ <testResources>
+ <testResource>
+ <directory>src/test/resources/hibernate</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>test-config.properties</include>
+ </includes>
+ </testResource>
+ </testResources>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skip>true</skip><!-- this is critical to avoid running unit tests, sets default value for skip -->
- <childDelegation>false</childDelegation>
- </configuration>
- <executions>
- <execution>
- <id>over the wire tests</id>
- <phase>integration-test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- <configuration>
- <includes>
- <!-- we seem to like plurals -->
- <include>**/*Tests.java</include>
- </includes>
- <excludes>
- <exclude>
- **/SpaceDuplicatorTests.java
- </exclude>
- </excludes>
- <skip>false</skip><!-- don't skip integration tests -->
- </configuration>
- </execution>
- </executions>
- </plugin>
+ <!-- -->
+ <!-- PLUGINS -->
+ <!-- -->
+ <plugins>
<!-- CARGO -->
- <plugin>
- <groupId>org.codehaus.cargo</groupId>
- <artifactId>cargo-maven2-plugin</artifactId>
- <version>0.3-SNAPSHOT</version>
- <executions>
- <execution>
- <id>get-up</id>
- <phase>pre-integration-test</phase>
- <goals>
- <goal>start</goal>
- </goals>
- <configuration>
- <wait>false</wait>
- </configuration>
- </execution>
- <execution>
- <id>get-down</id>
- <phase>post-integration-test</phase>
- <goals>
- <goal>stop</goal>
- </goals>
- <configuration>
- <wait>true</wait>
- </configuration>
- </execution>
- </executions>
+ <!-- DEPENDENCY PLUGIN: We need to pull in applets -->
- <!-- config of this plugin -->
- <configuration>
-
- <!-- tomcat 5.5 running on the same machine...die if not started in 20 secs -->
- <container>
- <containerId>tomcat5x</containerId>
- <home>/usr/share/tomcat5.5</home>
- <type>installed</type>
- <log>
- ${project.build.directory}/tomcat5x.log
- </log>
- <output>
- ${project.build.directory}/tomcat5x.out
- </output>
- <logLevel>debug</logLevel>
- </container>
-
- <!-- tomcat configuration -->
- <configuration>
- <home>${project.build.directory}/tomcat5x</home>
- <properties>
- <cargo.servlet.port>
- 8080
- </cargo.servlet.port>
- <cargo.logging>high</cargo.logging>
- <!--
- <cargo.datasource.datasource>
- cargo.datasource.url=jdbc:mysql://127.0.0.1/og|
- cargo.datasource.driver=com.mysql.jdbc.Driver|
- cargo.datasource.username=oguser|
- cargo.datasource.password=sssh|
- cargo.datasource.type=javax.sql.DataSource|
- cargo.datasource.jndi=jdbc/space|
- cargo.datasource.maxIdle=5|
- cargo.datasource.maxActive=50|
- cargo.datasource.scope=Shareable
- </cargo.datasource.datasource>
- -->
- </properties>
- <!-- our app to deploy -->
- <deployables>
- <deployable>
-
- <groupId>com.ogoglio</groupId>
- <artifactId>ogoglio-server</artifactId>
- <type>war</type>
-
- <properties>
- <context>ogoglio-server</context>
- </properties>
-
- </deployable>
- </deployables>
-
- </configuration>
- </configuration>
-
- </plugin>
-
- <!-- dependencies to pull in applets via deps-->
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
@@ -175,40 +95,44 @@
${project.build.directory}/ogoglio-server-0.0.1
</outputDirectory>
<overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>true</overWriteSnapshots>
+ <overWriteSnapshots>
+ true
+ </overWriteSnapshots>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
- </plugin>
+ </plugin>
+
+ <!-- WAR config to allow some filtering love-->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <webResources>
+ <resource>
+ <directory>src/main/webapp/</directory>
+ <filtering>true</filtering>
+ </resource>
+ </webResources>
+ </configuration>
+ </plugin>
</plugins>
</build>
- <!-- where to get cargo -->
- <pluginRepositories>
- <pluginRepository>
- <id>codehaus snapshot repository</id>
- <url>http://snapshots.repository.codehaus.org/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- <!-- stuff we need -->
+ <!-- DEPENDENCIES -->
<dependencies>
<dependency>
<groupId>com.agical.rmock</groupId>
<artifactId>rmock</artifactId>
<version>2.0.0-rc-6</version>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.1.ga</version>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
@@ -220,52 +144,62 @@
<groupId>rhino</groupId>
<artifactId>js</artifactId>
<version>1.6R6</version>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.0.1</version>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
- <scope>compile</scope>
</dependency>
+ <!-- need MYSQL for tests -->
<dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.0.5</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ <!-- -->
+ <!-- OGOGLIO DEPENDENCIES-->
+ <!-- -->
+ <dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-common</artifactId>
<version>0.0.1</version>
- <scope>compile</scope>
</dependency>
-
- <dependency>
+
+ <!-- broken: really is a dependency on the FILE -->
+ <dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-viewer-applet</artifactId>
<version>0.0.1</version>
<scope>runtime</scope>
<classifier>common</classifier>
- </dependency>
-
- <dependency>
+ </dependency>
+
+ <!-- broken: really is a dependency on the FILE -->
+ <dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-test-applet</artifactId>
<version>0.0.1</version>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- broken: really is a dependency on the FILE -->
+ <dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-body-editor-applet</artifactId>
<version>0.0.1</version>
<scope>runtime</scope>
<classifier>common</classifier>
- </dependency>
-
-
+ </dependency>
</dependencies>
+
</project>
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,57 @@
+package com.ogoglio.migrate;
+
+import java.net.URI;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.servlet.ServletConfig;
+
+import org.hibernate.SessionFactory;
+
+import com.ogoglio.persist.ServiceInitializationPersistTasks;
+import com.ogoglio.site.AbstractResourceServlet;
+
+public class AccountsForTesting implements Migration {
+
+ private static final String BOOTSTRAP_ACCT_USER_KEY = "ogoglio/bootstrapUser";
+ private static final String BOOTSTRAP_ACCT_PW_KEY = "ogoglio/bootstrapUserPW";
+
+ public boolean migrate(SessionFactory sessionFactory,
+ ServletConfig NOTUSED, Context ctx, Properties testConfig, int from, int to) {
+
+ if ((from != 0) || (to != 1)) {
+ System.out
+ .println("Migration called in the wrong place! Expected 0->1 but was:"
+ + from + "->" + to + "!");
+ System.out
+ .println("Migration called in the wrong place! Check the ordering of migration array!");
+ return false;
+ }
+ try {
+ String uriString, user, pw;
+
+ //if null, we are test mode
+ if (ctx==null) {
+ uriString=testConfig.getProperty(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY.replace('/', '.'));
+ user=testConfig.getProperty(BOOTSTRAP_ACCT_USER_KEY.replace('/', '.'));
+ pw=testConfig.getProperty(BOOTSTRAP_ACCT_PW_KEY.replace('/', '.'));
+ } else {
+ uriString=(String) ctx.lookup(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY);
+ user=(String) ctx.lookup(BOOTSTRAP_ACCT_USER_KEY);
+ pw=(String) ctx.lookup(BOOTSTRAP_ACCT_PW_KEY);
+ }
+ URI uri = new URI(uriString);
+ //actual work
+ ServiceInitializationPersistTasks.initializeLocalSim(uri,sessionFactory);
+ ServiceInitializationPersistTasks.initializeBootstrapAccount(sessionFactory, uri.getHost(), user, pw);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.err
+ .println("Exception during attempt to init DB in migration from 0->1:\n"
+ + e.getMessage());
+ return false;
+ }
+
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,55 @@
+package com.ogoglio.migrate;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import com.ogoglio.persist.HibernateTask;
+import com.ogoglio.persist.PersistException;
+
+public class DBVersionPersistTasks {
+ public final static String FIND_VERSION = "com.ogoglio.migrate.dbversions";
+
+ public static int findVersion(SessionFactory sessionFactory)
+ throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(FIND_VERSION);
+ return query.uniqueResult();
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return ((DBVersionRecord) task.execute()).getVersion();
+ }
+
+ public static boolean updateVersion(final int newVersion,
+ final int expectedSize/* one or zero */,
+ SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(FIND_VERSION);
+ int size = query.list().size();
+ DBVersionRecord rec;
+ if (expectedSize != size) {
+ System.out.println(
+ "Whoa! Size of returned result for db version record was ("
+ + size + ") but should have been "
+ + expectedSize + "!");
+ return Boolean.FALSE;
+ }
+ if (size == 0) {
+ rec = new DBVersionRecord();
+ } else {
+ rec = (DBVersionRecord) query.uniqueResult();
+ }
+ rec.setVersion(newVersion);
+ session.saveOrUpdate(rec);
+ System.out.println("******* Wrote new version FART:"+newVersion);
+ return Boolean.TRUE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (task.execute().equals(Boolean.TRUE));
+ }
+
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,25 @@
+package com.ogoglio.migrate;
+
+public class DBVersionRecord {
+ public static int INTERNAL_DEV_STATE=-8288;
+
+ private int version=0;
+ private long id;
+
+ public DBVersionRecord() {
+
+ }
+ public long getVersionId() {
+ return id;
+ }
+ public void setVersionId(long id) {
+ this.id=id;
+ }
+ public int getVersion() {
+ return version;
+ }
+
+ public void setVersion(int version) {
+ this.version=version;
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,37 @@
+package com.ogoglio.migrate;
+
+import junit.framework.TestCase;
+
+import org.hibernate.SessionFactory;
+
+public class DBZapTest extends TestCase {
+
+ protected SessionFactory sessionFactory;
+
+ public void setUp() {
+ try {
+ MigrationSupport support = new MigrationSupport();
+ if (!("true".equals(support.getTestConfig().getProperty("ogoglio.okToZapDB")))) {
+ fail("Whoa! Shouldn't be running tests without setting the ogoglio.okToZapDB property!");
+ }
+ if (support.initialize_version(null, null, false)==false) {
+ fail("can't get DB set up: trying to initialize it in the test code");
+ }
+
+ //if we are here, db stuff worked, but we still need to avoid all the jndi stuff
+ sessionFactory= support.createConfigurationForHibernate(MigrationSupport.DB_VERSION_NUMBER,
+ null, false).buildSessionFactory();
+ } catch (Exception e) {
+ System.out.println("-------");
+ e.printStackTrace(System.out);
+ System.out.println("---------");
+ fail("Could not setup:" + e.getMessage());
+ }
+ }
+
+ public void tearDown() {
+ if (sessionFactory!=null) {
+ sessionFactory.close();
+ }
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,15 @@
+package com.ogoglio.migrate;
+
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.servlet.ServletConfig;
+
+import org.hibernate.SessionFactory;
+
+public interface Migration {
+
+ public boolean migrate(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx,
+ Properties testConfig, int from, int to);
+
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -0,0 +1,180 @@
+package com.ogoglio.migrate;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.servlet.ServletConfig;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+
+import com.ogoglio.persist.PersistException;
+
+public class MigrationSupport {
+
+ // THIS IS THE CRITICAL VERSION NUMBER
+ public static final int DB_VERSION_NUMBER = 1;
+
+ //check on migration okayness
+ public static final String MIGRATION_KEY = "ogoglio/okToMigrateDB";
+
+ // this is the set of semantic migrations, in order
+ public static final Migration[] migration = {
+ new AccountsForTesting()
+ };
+
+ public MigrationSupport() {
+ }
+
+ public boolean verifyVersion(ServletConfig servletConf, Context ctx) {
+ try {
+ SessionFactory sessionFactory = getCurrentConfiguration().buildSessionFactory();
+ int version = DBVersionPersistTasks.findVersion(sessionFactory);
+ if (version != DB_VERSION_NUMBER) {
+ System.out.println("DB Version Mismatch! Expected ("
+ + DB_VERSION_NUMBER + ") but got " + version + "!");
+ sessionFactory.close();
+ return tryUpgrade(servletConf, ctx, version, DB_VERSION_NUMBER,"update",true);
+ }
+ sessionFactory.close();
+ return true; // we are at the expected version
+ } catch (PersistException e) {
+ if (e.innerThrowable==null) {
+ System.out.println("Serious problem with hibernate:" + e.getMessage());
+ return false;
+ }
+ System.out.println("Unable to figure out DB version number. Likely this is a fresh database....("+e.innerThrowable.getClass().getName()+")");
+ return initialize_version(servletConf,ctx, true);
+ }
+ }
+
+ public boolean initialize_version(ServletConfig conf, Context ctx, boolean useJNDI) {
+ Configuration configuration = createConfigurationForHibernate(0,"create",useJNDI);
+ try {
+ SessionFactory factory=configuration.buildSessionFactory();
+ if (setVersionNumberOfDbViaQuery(factory,0,0)==false) {
+ factory.close();
+ return false;
+ }
+ factory.close();
+ return tryUpgrade(conf,ctx,0, DB_VERSION_NUMBER, "create",useJNDI);
+ } catch (Throwable e) {
+ System.out.println("Error trying initialized DB:" + e.getMessage());
+ return false;
+ }
+
+ }
+
+ public Configuration getCurrentConfiguration() {
+ return createConfigurationForHibernate(DB_VERSION_NUMBER, null, true);
+ }
+
+ public Configuration createConfigurationForHibernate(int num, String autoSetting, boolean useJNDI) {
+ Configuration configuration = new Configuration();
+ if (autoSetting!=null) {
+ configuration.setProperty("hibernate.hbm2ddl.auto", autoSetting);
+ }
+ if (useJNDI) {
+ configuration.setProperty("hibernate.connection.datasource","java:comp/env/jdbc/space");
+ } else {
+ Properties p=new Properties();
+ try {
+ p.load(getClass().getResourceAsStream("/test-config.properties"));
+ configuration.addProperties(p);
+ } catch (IOException e){
+ System.out.println("Unable to find the test configuration file!"+e.getMessage());
+ return configuration.configure();
+ }
+ }
+ configuration.addResource("com/ogoglio/migrate/migration-"+num+".xml");
+ return configuration.configure();
+ }
+
+ private boolean setVersionNumberOfDbViaQuery(SessionFactory sessionFactory,int targetVersion,int expectedSize) {
+ try {
+ return DBVersionPersistTasks.updateVersion(targetVersion, expectedSize, sessionFactory);
+ } catch (PersistException e) {
+ System.out.println("Problem updating the version of the database to version "+targetVersion+":"+e.getMessage());
+ return false;
+ }
+ }
+
+ public boolean tryUpgrade(ServletConfig servletConfig, Context ctx, int db_is, int db_wants_to_be,
+ String ddlMode, boolean useJNDI) {
+ if (migration.length != DB_VERSION_NUMBER) {
+ System.out
+ .println("Internal error! Migration list length should be "
+ + DB_VERSION_NUMBER + " but is " + migration.length
+ + "!");
+ return false;
+ }
+ Properties testConfig=new Properties();
+ boolean canMigrate=false;
+ if (ctx==null) {
+ //in test mode
+ testConfig = getTestConfig();
+ if ("true".equals(testConfig.getProperty("ogoglio.okToMigrateDB"))) {
+ canMigrate=true;
+ }
+ } else {
+ //not testing, but might be integration testing
+ try {
+ String migrate=(String)ctx.lookup(MIGRATION_KEY);
+ if ("true".equals(migrate)) {
+ canMigrate=true;
+ }
+ } catch (NamingException e) {
+ System.out.println("Naming exception trying to access "+MIGRATION_KEY+" from naming context!");
+ }
+ }
+
+ if (!canMigrate) {
+ System.out.println("Cannot migrate data! Property ogoglio.okToMigrateDB is false or non-existent!");
+ return false;
+ }
+
+ for (int i = db_is; i < db_wants_to_be; ++i) {
+ Migration current = migration[i];
+ System.out.println("------------------------------------------------\n");
+ System.out.println("DB: Attempting migration from " + i + " to "
+ + (i + 1) + "...");
+
+ //try to get hibernate to do the work
+ Configuration config = createConfigurationForHibernate(i+1, ddlMode ,useJNDI);
+ SessionFactory factory = config.buildSessionFactory();
+
+ //subtle: if the ddlMode is create, hibernate blows away all the data (including our version number record)
+ int expectedRecords=1;
+ if ("create".equals(ddlMode)) {
+ expectedRecords=0;
+ }
+ setVersionNumberOfDbViaQuery(factory,i+1, expectedRecords);
+
+ if (!current.migrate(factory,servletConfig, ctx, testConfig, i, i + 1)) {
+ factory.close();
+ return false;
+ }
+ factory.close();
+ System.out.println("------------------------------------------------\n");
+ }
+ return true;
+ }
+
+ public Properties getTestConfig() {
+ Properties testConfig = new Properties();
+ InputStream is=getClass().getResourceAsStream("/test-config.properties");
+ if (is==null) {
+ System.out.println("Warning! Unable to find test-config.properties! Probably something is broken!");
+ } else {
+ try {
+ testConfig.load(is);
+ } catch (IOException e) {
+ System.out.println("Warning! Error reading test-config.properties! "+e.getMessage());
+ }
+ }
+ return testConfig;
+ }
+}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateBase.java 2007-08-26 22:57:26 UTC (rev 265)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateBase.java 2007-08-26 22:58:59 UTC (rev 266)
@@ -1,70 +0,0 @@
-package com.ogoglio.persist;
-
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-
-import com.ogoglio.util.OgoglioProperties;
-
-/**
- * Allows the hibernate initialization code to be in one place. Serves a few different purposes, but
- * in general allows connection the hibernate DB directly from a program or test.
- * @author iansmith
- *
- */
-public class HibernateBase {
- protected Configuration config = null;
-
- protected SessionFactory sessionFactory = null;
-
- public void setupSessionFactory(String persistXMLConfig, String autoDDL, String dialect, String driver, String URI,
- String user, String pw, String poolSize) {
-
- config = new Configuration();
- config.addResource(persistXMLConfig);
-
-
- if (autoDDL!=null) {
- config.setProperty("hibernate.hbm2ddl.auto", autoDDL);
- }
- config.setProperty("hibernate.dialect", dialect);
- config.setProperty("hibernate.connection.driver_class", driver);
- config.setProperty("hibernate.connection.url", URI);
- config.setProperty("hibernate.connection.username", user);
- config.setProperty("hibernate.connection.password", pw);
- config.setProperty("hibernate.show_sql","true");
- //always want these
- config.setProperty("hibernate.connection.shutdown","true");
- config.setProperty("hibernate.connection.pool_size", poolSize);
- sessionFactory = config.buildSessionFactory();
-
- if (sessionFactory==null) {
- System.err.println("You have no hope of running properly because sessionFactory was not setup co...
[truncated message content] |
|
From: <ian...@us...> - 2007-08-27 17:39:09
|
Revision: 270
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=270&view=rev
Author: iansmith
Date: 2007-08-27 10:39:06 -0700 (Mon, 27 Aug 2007)
Log Message:
-----------
Update filenames to work properly with browser.
Fixed test to not leave around sim records.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/webapp/browserTests.js
maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-27 17:39:06 UTC (rev 270)
@@ -8,8 +8,7 @@
<artifactId>ogoglio-server</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
-
-
+
<!-- -->
<!-- profiles -->
<!-- -->
@@ -86,19 +85,32 @@
<executions>
<execution>
<id>copy-applets</id>
- <phase>package</phase>
+ <phase>process-sources</phase>
<goals>
- <goal>copy-dependencies</goal>
+ <goal>copy</goal>
</goals>
<configuration>
- <outputDirectory>
- ${project.build.directory}/ogoglio-server-0.0.1
- </outputDirectory>
- <overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>
- true
- </overWriteSnapshots>
- <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>${project.build.directory}/ogoglio-server-0.0.1</outputDirectory>
+ <overwriteIfNewer>true</overwriteIfNewer>
+ <stripVersion>true</stripVersion>
+ <artifactItems>
+ <artifactItem>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-viewer-applet</artifactId>
+ </artifactItem>
+ <artifactItem>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-body-editor-applet</artifactId>
+ </artifactItem>
+ <artifactItem>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-test-applet</artifactId>
+ </artifactItem>
+ <artifactItem>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-common</artifactId>
+ </artifactItem>
+ </artifactItems>
</configuration>
</execution>
</executions>
@@ -120,8 +132,6 @@
</plugins>
</build>
-
-
<!-- DEPENDENCIES -->
<dependencies>
<dependency>
@@ -174,31 +184,28 @@
<version>0.0.1</version>
</dependency>
- <!-- broken: really is a dependency on the FILE -->
+ <!-- -->
+ <!-- BOGUS DEPENDENCIES-->
+ <!-- -->
<dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-viewer-applet</artifactId>
<version>0.0.1</version>
<scope>runtime</scope>
- <classifier>common</classifier>
</dependency>
-
- <!-- broken: really is a dependency on the FILE -->
<dependency>
<groupId>com.ogoglio</groupId>
- <artifactId>ogoglio-test-applet</artifactId>
+ <artifactId>ogoglio-body-editor-applet</artifactId>
<version>0.0.1</version>
<scope>runtime</scope>
</dependency>
-
- <!-- broken: really is a dependency on the FILE -->
<dependency>
<groupId>com.ogoglio</groupId>
- <artifactId>ogoglio-body-editor-applet</artifactId>
+ <artifactId>ogoglio-test-applet</artifactId>
<version>0.0.1</version>
<scope>runtime</scope>
- <classifier>common</classifier>
</dependency>
+
</dependencies>
</project>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-27 17:39:06 UTC (rev 270)
@@ -153,6 +153,7 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
long spaceID = Long.parseLong(pathElements[pathElements.length - 1]);
+ System.out.println("FART TRYING TO GET SPACE DOC FOR "+spaceID);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
@@ -263,6 +264,7 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
long spaceID = Long.parseLong(pathElements[2]);
try {
+ System.out.println("SIM FART GET:"+spaceID);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
@@ -275,12 +277,14 @@
return;
}
+ System.out.println("SIM FART GET2:"+authedAccount.getUsername());
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
String value = simulator.getSetting(pathElements[pathElements.length - 1]);
if (value == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
+ System.out.println("SIM FART GET3:"+value);
sendStringResponse(value, "text/plain", response);
} catch (PersistException e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -320,11 +324,13 @@
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
long spaceID = Long.parseLong(pathElements[2]);
try {
+ System.out.println("do POST fart: SIM:"+spaceID);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
+ System.out.println("do POST2 fart: SIM:"+spaceID);
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
@@ -332,6 +338,7 @@
return;
}
+ System.out.println("do POST3 fart: authed acct:"+authedAccount.getUsername());
String value = getFirstStringValue(request);
if (value == null || value.trim().length() == 0) {
System.err.println("Posted null value: " + request.getContentType());
@@ -339,9 +346,11 @@
return;
}
+ System.out.println("do POST4 fart: value:"+value);
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
simulator.putSetting(pathElements[pathElements.length - 1], value);
sendStringResponse(value, "text/plain", response);
+ System.out.println("do POST5 fart: value:"+value);
} catch (PersistException e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java 2007-08-27 17:39:06 UTC (rev 270)
@@ -247,7 +247,7 @@
outputStream.flush();
outputStream.close();
}
-
+ System.out.println("FART 2nd level proxy:"+connection.getResponseCode());
response.setStatus(connection.getResponseCode());
Map headers = connection.getHeaderFields();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-08-27 17:39:06 UTC (rev 270)
@@ -152,6 +152,7 @@
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, IOException {
+ System.out.println("***WE ARE FART:"+(pathElements.length-1));
long spaceID = Long.parseLong(pathElements[pathElements.length - 1]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
Modified: maven/trunk/ogoglio-server/src/main/webapp/browserTests.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/browserTests.js 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/main/webapp/browserTests.js 2007-08-27 17:39:06 UTC (rev 270)
@@ -23,8 +23,8 @@
function testJava(testSpan){
try {
- var jarURI = getServiceURI() + "/ogoglio-test-applet-0.0.1.jar";
- var appletHTML = "<applet id='testApplet' name='testApplet' code='com.ogoglio.viewer.applet.TestApplet' archive='" + jarURI + "' width='1' height='1'></applet>";
+ var jarURI = getServiceURI() + "/ogoglio-test-applet.jar";
+ var appletHTML = "<applet id='testApplet' name='testApplet' code='com.ogoglio.testapplet.TestApplet' archive='" + jarURI + "' width='1' height='1'></applet>";
testSpan.innerHTML = appletHTML;
while(typeof document.testApplet == "undefined"){
for(i=0; i < 100; i++) setTimeout('this = "something";', 5000);
Modified: maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-27 17:39:06 UTC (rev 270)
@@ -70,7 +70,7 @@
var serviceURI = getServiceURI();
- var html = "<applet id='viewer' codebase='" + serviceURI + "' code='com.ogoglio.viewer.applet.ViewerApplet' archive='ogoglio-viewer-applet-0.0.1-common.jar' width='" + viewerWidth + "' height='" + viewerHeight + "' mayscript='true'>";
+ var html = "<applet id='viewer' archive='ogoglio-common.jar,ogoglio-viewer-applet.jar' codebase='" + serviceURI + "' code='com.ogoglio.viewer.applet.ViewerApplet' archive='/ogoglio-viewer-applet-0.0.1.jar' width='" + viewerWidth + "' height='" + viewerHeight + "' mayscript='true'>";
html += "<param name='loginCookie' value='" + loginCookie + "' />";
html += "<param name='serviceURI' value='" + serviceURI + "' />";
html += "<param name='spaceID' value='" + locationParameters['spaceID'] + "' />";
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-08-27 17:39:06 UTC (rev 270)
@@ -13,17 +13,10 @@
limitations under the License. */
package com.ogoglio.persist.test;
-import java.io.IOException;
-import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
-import junit.framework.TestCase;
-
-import org.hibernate.SessionFactory;
-
import com.ogoglio.migrate.DBZapTest;
-import com.ogoglio.migrate.MigrationSupport;
import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
import com.ogoglio.persist.BodyPersistTasks;
@@ -58,6 +51,18 @@
String level2 = null;
+ public void tearDown() {
+ try {
+ SimRecord simRecord1 = SimPersistTasks.findSimsBySimURI(simURI1,sessionFactory);
+ if (simRecord1 != null) {
+ System.out.println("Destroying leftover sim record test state:"
+ + simRecord1.getDisplayName());
+ SimPersistTasks.delete(simRecord1, sessionFactory);
+ }
+ } catch (PersistException e) {
+ fail("Unable to tear down:"+e.getMessage());
+ }
+ }
public void setUp() {
super.setUp();
username1 = AccountRecord.cleanUsername("MoonUnitZappa");
@@ -107,68 +112,8 @@
templateRec1.getTemplateID(), sessionFactory);
verifyTemplateProps(templateName1, templateRec1);
- SimRecord simRecord1 = SimPersistTasks.findSimsBySimURI(simURI1,
- sessionFactory);
- if (simRecord1 != null) {
- System.out.println("Destroying leftover sim record test state:"
- + simRecord1.getDisplayName());
- SimPersistTasks.delete(simRecord1, sessionFactory);
- }
- // ok to create sim now on that URI
- simRecord1 = SimPersistTasks.createSim(displayName1, simURI1, 2048,
- true, sessionFactory);
- verifySimProps(simRecord1, displayName1, simURI1, -1, 2048);
+ SpaceRecord spaceRecord1 = checkSpaceAndSimTasks();
- String displayName2 = "moon unit";
- simRecord1.setDisplayName(displayName2);
- SimPersistTasks.update(simRecord1, sessionFactory);
- assertEquals(displayName2, simRecord1.getDisplayName());
- // better test is to load it from db
- SimRecord simRecord2 = SimPersistTasks.findSimsBySimURI(simURI1,
- sessionFactory);
- verifySimProps(simRecord2, displayName2, simURI1, -1, 2048);
-
- // it's the same sim on the same URI so better have same id?
- assertEquals(simRecord1.getSimID(), simRecord2.getSimID());
-
- String spaceName1 = "Space 1";
- SpaceRecord spaceRecord1 = SpacePersistTasks.createSpace(
- spaceName1, "bubkus", sessionFactory);
- assertNull("created space with bogus username", spaceRecord1);
- spaceRecord1 = SpacePersistTasks.createSpace(spaceName1, username1,
- sessionFactory);
- assertNotNull(spaceRecord1);
- assertEquals(spaceName1, spaceRecord1.getDisplayName());
- assertFalse(spaceRecord1.getSpaceID() == -1);
- assertEquals(username1, spaceRecord1.getOwnerUsername());
-
- SpaceRecord spaceRecord2 = SpacePersistTasks.findSpaceBySpaceID(
- spaceRecord1.getSpaceID(), sessionFactory);
- assertEquals(spaceRecord1, spaceRecord2);
-
- SimRecord assignedSimRecord = SpacePersistTasks.findOrAssignSim(
- spaceRecord2, sessionFactory);
- assertNotNull(assignedSimRecord);
- //System.out.println("XXX ASSIGNED TO SIM:"
- // + assignedSimRecord.getSimID() + ","
- // + assignedSimRecord.getSimURI() + " -->\n" + "space was "
- // + spaceRecord2.getSpaceID() + " now on "
- // + spaceRecord2.getSimID() + ","
- // + spaceRecord2.getDisplayName());
- /*
- * IES: I spent a lot of time looking at this and could not see any
- * way to test this given that IES: that assigned sim is random.
- * Apparently, before we were depending on a random number IES:
- * sequence doing something we expected.
- * assertEquals(simRecord1.getSimURI(),
- * assignedSimRecord.getSimURI());
- * assertEquals(simRecord1.getDisplayName(),
- * assignedSimRecord.getDisplayName());
- * assertEquals(simRecord1.getSimID(),
- * assignedSimRecord.getSimID()); assertEquals(simRecord1,
- * assignedSimRecord);
- */
-
BodyRecord bodyRec1 = BodyPersistTasks.createBody(displayName1,
"bogosity", sessionFactory);
assertNull("created body with bogus username", bodyRec1);
@@ -214,7 +159,65 @@
fail("Should have just returned null instead of failed: " + e);
}
}
+ private SpaceRecord checkSpaceAndSimTasks() throws PersistException {
+ SimRecord simRecord1;
+ // ok to create sim now on that URI
+ simRecord1 = SimPersistTasks.createSim(displayName1, simURI1, 2048,
+ true, sessionFactory);
+ verifySimProps(simRecord1, displayName1, simURI1, -1, 2048);
+ String displayName2 = "moon unit";
+ simRecord1.setDisplayName(displayName2);
+ SimPersistTasks.update(simRecord1, sessionFactory);
+ assertEquals(displayName2, simRecord1.getDisplayName());
+ // better test is to load it from db
+ SimRecord simRecord2 = SimPersistTasks.findSimsBySimURI(simURI1,
+ sessionFactory);
+ verifySimProps(simRecord2, displayName2, simURI1, -1, 2048);
+
+ // it's the same sim on the same URI so better have same id?
+ assertEquals(simRecord1.getSimID(), simRecord2.getSimID());
+
+ String spaceName1 = "Space 1";
+ SpaceRecord spaceRecord1 = SpacePersistTasks.createSpace(
+ spaceName1, "bubkus", sessionFactory);
+ assertNull("created space with bogus username", spaceRecord1);
+ spaceRecord1 = SpacePersistTasks.createSpace(spaceName1, username1,
+ sessionFactory);
+ assertNotNull(spaceRecord1);
+ assertEquals(spaceName1, spaceRecord1.getDisplayName());
+ assertFalse(spaceRecord1.getSpaceID() == -1);
+ assertEquals(username1, spaceRecord1.getOwnerUsername());
+
+ SpaceRecord spaceRecord2 = SpacePersistTasks.findSpaceBySpaceID(
+ spaceRecord1.getSpaceID(), sessionFactory);
+ assertEquals(spaceRecord1, spaceRecord2);
+
+ SimRecord assignedSimRecord = SpacePersistTasks.findOrAssignSim(
+ spaceRecord2, sessionFactory);
+ assertNotNull(assignedSimRecord);
+ //System.out.println("XXX ASSIGNED TO SIM:"
+ // + assignedSimRecord.getSimID() + ","
+ // + assignedSimRecord.getSimURI() + " -->\n" + "space was "
+ // + spaceRecord2.getSpaceID() + " now on "
+ // + spaceRecord2.getSimID() + ","
+ // + spaceRecord2.getDisplayName());
+ /*
+ * IES: I spent a lot of time looking at this and could not see any
+ * way to test this given that IES: that assigned sim is random.
+ * Apparently, before we were depending on a random number IES:
+ * sequence doing something we expected.
+ * assertEquals(simRecord1.getSimURI(),
+ * assignedSimRecord.getSimURI());
+ * assertEquals(simRecord1.getDisplayName(),
+ * assignedSimRecord.getDisplayName());
+ * assertEquals(simRecord1.getSimID(),
+ * assignedSimRecord.getSimID()); assertEquals(simRecord1,
+ * assignedSimRecord);
+ */
+ return spaceRecord1;
+ }
+
private void verifySimProps(SimRecord rec, String name, URI uri,
int not_id, int port) {
assertNotNull(rec);
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-08-27 17:37:49 UTC (rev 269)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-08-27 17:39:06 UTC (rev 270)
@@ -4,15 +4,12 @@
import java.io.InputStream;
import java.util.HashMap;
-import javax.media.j3d.Transform3D;
-
import junit.framework.TestCase;
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceEvent;
import com.ogoglio.xml.TemplateDocument;
-import com.ogoglio.xml.ThingDocument;
public class ScriptTest extends TestCase {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-08-27 21:05:33
|
Revision: 272
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=272&view=rev
Author: trevorolio
Date: 2007-08-27 14:05:32 -0700 (Mon, 27 Aug 2007)
Log Message:
-----------
Made body editor applet work, including refs to avatar resources.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/webapp/body.html
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-27 21:05:20 UTC (rev 271)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-27 21:05:32 UTC (rev 272)
@@ -165,6 +165,11 @@
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
</dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.3</version>
+ </dependency>
<!-- need MYSQL for tests -->
<dependency>
Modified: maven/trunk/ogoglio-server/src/main/webapp/body.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/body.html 2007-08-27 21:05:20 UTC (rev 271)
+++ maven/trunk/ogoglio-server/src/main/webapp/body.html 2007-08-27 21:05:32 UTC (rev 272)
@@ -74,8 +74,8 @@
appletDiv.innerHTML = "No cookie. Please sign in or register as a guest.";
return;
}
-
- var html = "<applet id='viewer' code='com.ogoglio.viewer.applet.BodyEditorApplet' archive='/og/ogoglio-body-editor-applet-0.0.1-common.jar' width='500' height='500' mayscript='true'>";
+ var serviceURI = getServiceURI();
+ var html = "<applet id='viewer' codebase='" + serviceURI + "' code='com.ogoglio.bodyeditor.BodyEditorApplet' archive='ogoglio-common.jar,ogoglio-body-editor-applet.jar' width='500' height='500' mayscript='true'>";
html += "<param name='loginCookie' value='" + loginCookie + "' />";
html += "<param name='serviceURI' value='" + getServiceURI() + "' />";
html += "<param name='image' value='" + appPath + "/icons/32x32/face-monkey.png' />";
@@ -124,4 +124,4 @@
</div>
<!-- Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.-->
</body>
-</html>
\ No newline at end of file
+</html>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-08-27 23:53:10
|
Revision: 276
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=276&view=rev
Author: trevorolio
Date: 2007-08-27 16:53:13 -0700 (Mon, 27 Aug 2007)
Log Message:
-----------
Added ServiceState docs and API. Added test cube and cylindar objs. Added fetal mail service. Added abstract remote servlet for apps in the same container which use ogoglio on the back end. Added some email validation code.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteInfo.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/xml/server/DocumentFactory.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
maven/trunk/ogoglio-server/src/main/webapp/createAccount.html
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailFormatter.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailSendException.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/util/
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-27 23:52:59 UTC (rev 275)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-27 23:53:13 UTC (rev 276)
@@ -170,6 +170,16 @@
<artifactId>commons-io</artifactId>
<version>1.3</version>
</dependency>
+ <dependency>
+ <groupId>com.sun</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun</groupId>
+ <artifactId>jaf</artifactId>
+ <version>1.1</version>
+ </dependency>
<!-- need MYSQL for tests -->
<dependency>
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,92 @@
+package com.ogoglio.mail;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class MailClient {
+
+ private boolean writeToDisk = false;
+
+ private File outputDir = null;
+
+ /**
+ * Sends all mail to individual files in outputDir
+ */
+ public MailClient(File outputDir) {
+ ArgumentUtils.assertReadableDir(outputDir, true);
+ this.outputDir = outputDir;
+ writeToDisk = true;
+ }
+
+ /**
+ * Sends all mail via JNDI:java:comp/env session at mail/Session
+ */
+ public MailClient() {
+ writeToDisk = false;
+ }
+
+ public void sendEmail(String to, String from, String subject, String body) throws MailSendException {
+ try {
+ if (writeToDisk) {
+ sendToDisk(to, from, subject, body);
+ } else {
+ sendViaContextSession(to, from, subject, body);
+ }
+ } catch (NamingException e) {
+ throw new MailSendException(e);
+ } catch (AddressException e) {
+ throw new MailSendException(e);
+ } catch (MessagingException e) {
+ throw new MailSendException(e);
+ } catch (IOException e) {
+ throw new MailSendException(e);
+ }
+ }
+
+ private void sendToDisk(String to, String from, String subject, String body) throws IOException {
+ FileOutputStream output = new FileOutputStream(new File(outputDir, "Mail-Message-" + System.currentTimeMillis()));
+ output.write(("to: " + to + "\n").getBytes());
+ output.write(("from: " + from + "\n").getBytes());
+ output.write(("subject: " + subject + "\n").getBytes());
+ output.write(("\n").getBytes());
+ output.write(body.getBytes());
+ output.flush();
+ output.close();
+ }
+
+ private void sendViaContextSession(String to, String from, String subject, String body) throws NamingException, AddressException, MessagingException {
+ Context initCtx = new InitialContext();
+ Context envCtx = (Context) initCtx.lookup("java:comp/env");
+ Session session = (Session) envCtx.lookup("mail/Session");
+
+ Message message = new MimeMessage(session);
+ InternetAddress toAddress[] = new InternetAddress[1];
+ toAddress[0] = new InternetAddress(to);
+ message.setRecipients(Message.RecipientType.TO, toAddress);
+ message.setFrom(new InternetAddress(from));
+ message.setSubject(subject);
+ message.setContent(body, "text/plain");
+ Transport.send(message);
+ }
+
+ /**
+ * @return null if this client is using the JNDI mail session instead of writing to disk
+ */
+ public File getOutputDir() {
+ return outputDir;
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailFormatter.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailFormatter.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailFormatter.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,29 @@
+package com.ogoglio.mail;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class MailFormatter {
+
+ public String format(Map map, String template) {
+ ArgumentUtils.assertNotNull(map);
+ ArgumentUtils.assertNotEmpty(template);
+ return stupidMerge(map, template);
+ }
+
+ private String stupidMerge(Map map, String template) {
+ String result = new String(template);
+ String[] keys = (String[])map.keySet().toArray(new String[0]);
+ for (int i = 0; i < keys.length; i++) {
+ String replacement = (String)map.get(keys[i]);
+ result = result.replaceAll(Pattern.quote(createVariableString((keys[i]))), replacement);
+ }
+ return result;
+ }
+
+ public String createVariableString(String variableName) {
+ return "${" + variableName + "}";
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailSendException.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailSendException.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailSendException.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,7 @@
+package com.ogoglio.mail;
+
+public class MailSendException extends Exception {
+ public MailSendException(Exception e) {
+ super(e);
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,33 @@
+package com.ogoglio.mail;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.ogoglio.util.StreamUtils;
+
+public class MailTemplateFactory {
+
+ private static final String TEMPLATE_RESOURCE_PATH = "com/ogoglio/mail/";
+
+ public static final String TEST_TEMPLATE_1 = "TestTemplate1.txt";
+
+ public static final String EMAIL_VALIDATION_TEMPLATE = "EmailValidationTemplate.txt";
+
+ public static String getTemplate(String templateName) {
+ try {
+ return StreamUtils.readResource(TEMPLATE_RESOURCE_PATH + templateName);
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ public static Map createEmailValidationMap(String emailToValidate, String validationURL, String serviceName, String serviceURL) {
+ HashMap map = new HashMap();
+ map.put("emailToValidate", emailToValidate);
+ map.put("validationURL", validationURL);
+ map.put("serviceName", serviceName);
+ map.put("serviceURL", serviceURL);
+ return map;
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,100 @@
+package com.ogoglio.mail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.HashMap;
+
+import junit.framework.TestCase;
+
+import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.util.StreamUtils;
+
+public class MailTests extends TestCase {
+
+ private static final String TEST_DIR_PATH = "mailTestFiles";
+
+ private File mailOutputDir = null;
+
+ private MailClient mailClient1 = null;
+
+ private MailFormatter mailFormatter1 = null;
+
+ private String testTemplate1 = null;
+
+ private HashMap testMap1 = null;
+
+ public void setUp() throws IOException {
+ mailOutputDir = new File(TEST_DIR_PATH);
+ if (mailOutputDir.exists()) {
+ delete(mailOutputDir);
+ }
+ assertTrue(mailOutputDir.mkdir());
+
+ mailClient1 = new MailClient(mailOutputDir);
+
+ mailFormatter1 = new MailFormatter();
+
+ testTemplate1 = MailTemplateFactory.getTemplate(MailTemplateFactory.TEST_TEMPLATE_1);
+ assertNotNull(testTemplate1);
+
+ testMap1 = new HashMap();
+ testMap1.put("username", "susan");
+ testMap1.put("url", "http://example.com/og/");
+ testMap1.put("moon.unit", "zappa");
+ testMap1.put("Kurt", "Vonnegut.");
+ }
+
+ private void delete(File dir) {
+ File[] children = dir.listFiles();
+ for (int i = 0; i < children.length; i++) {
+ assertTrue(children[i].delete());
+ }
+ assertTrue(dir.delete());
+ }
+
+ public void tearDown() {
+ if (mailOutputDir != null && mailOutputDir.exists()) {
+ delete(mailOutputDir);
+ }
+ }
+
+ public void testClientFileOutput() throws MailSendException, FileNotFoundException, IOException {
+ String body = "This is the body.";
+ String to = "to...@ex...";
+ String from = "ha...@ex...";
+ String subject = "OWLs 'n Stuff";
+ mailClient1.sendEmail(to, from, subject, body);
+ File[] files = mailClient1.getOutputDir().listFiles();
+ assertNotNull(files);
+ assertEquals(1, files.length);
+ assertFalse(files[0].length() == 0);
+ String fileContents = StreamUtils.readInput(new FileInputStream(files[0]));
+ assertTrue(fileContents.endsWith(body));
+ }
+
+ public void testFormat() {
+ String result = mailFormatter1.format(testMap1, testTemplate1);
+ assertNotNull(result);
+ assertTrue(result.length() > 1);
+ assertExactlyOne(result, (String) testMap1.get("username"));
+ assertMultiple(result, (String) testMap1.get("url"));
+ assertExactlyOne(result, (String) testMap1.get("moon.unit"));
+ assertExactlyOne(result, (String) testMap1.get("Kurt"));
+ }
+
+ private void assertExactlyOne(String data, String target) {
+ ArgumentUtils.assertNotEmpty(data);
+ ArgumentUtils.assertNotEmpty(target);
+ assertFalse(data.indexOf(target) == -1);
+ assertTrue(data.indexOf(target) == data.lastIndexOf(target));
+ }
+
+ private void assertMultiple(String data, String target) {
+ ArgumentUtils.assertNotEmpty(data);
+ ArgumentUtils.assertNotEmpty(target);
+ assertFalse(data.indexOf(target) == -1);
+ assertFalse(data.indexOf(target) == data.lastIndexOf(target));
+ }
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-27 23:52:59 UTC (rev 275)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -44,6 +44,7 @@
//actual work
ServiceInitializationPersistTasks.initializeLocalSim(uri,sessionFactory);
ServiceInitializationPersistTasks.initializeBootstrapAccount(sessionFactory, uri.getHost(), user, pw);
+ ServiceInitializationPersistTasks.initializeServiceState(sessionFactory);
return true;
} catch (Exception e) {
e.printStackTrace();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java 2007-08-27 23:52:59 UTC (rev 275)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountRecord.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -15,10 +15,8 @@
import com.ogoglio.xml.AccountDocument;
-
public class AccountRecord {
-
private String username = null;
private String accountlevel = AccountDocument.ACCOUNT_LEVEL_BASIC;
@@ -60,6 +58,8 @@
if (this.email == null) {
throw new IllegalArgumentException("Bad email: " + email);
}
+
+ this.creationDate = System.currentTimeMillis();
}
public boolean equals(Object obj) {
@@ -81,11 +81,11 @@
return null;
}
String result = password.trim();
- if (result.length() < 5) {
+ if (result.length() < 4) {
return null;
}
for (int i = 0; i < result.length(); i++) {
- if (!Character.isLetterOrDigit(result.charAt(i))) {
+ if (result.charAt(i) != ' ') {
return null;
}
}
@@ -104,13 +104,13 @@
if (result.length() == 0) {
return null;
}
- if(result.indexOf('@') == -1 || result.indexOf('@') == 0 || result.indexOf('@') == result.length() - 1) {
+ if (result.indexOf('@') == -1 || result.indexOf('@') == 0 || result.indexOf('@') == result.length() - 1) {
return null;
}
- if(result.indexOf(' ') != -1) {
+ if (result.indexOf(' ') != -1) {
return null;
}
- if(result.indexOf('.') == -1 || result.indexOf('.') == result.length() - 1) {
+ if (result.indexOf('.') == -1 || result.indexOf('.') == result.length() - 1) {
return null;
}
return result;
@@ -155,7 +155,7 @@
}
public void setAccountlevel(String level) {
- if(verifyAccountLevel(level) == null) {
+ if (verifyAccountLevel(level) == null) {
throw new IllegalArgumentException("Bad account level: " + level);
}
this.accountlevel = level;
@@ -178,7 +178,7 @@
}
public long getCreationDate() {
- return creationDate;
+ return creationDate;
}
public void setCreationDate(long creationDate) {
@@ -253,7 +253,7 @@
this.defaultBodyId = defaultBodyID;
}
- public void setNotFrozen() {
- this.frozenUntil=AccountDocument.NO_TIME_VALUE;
- }
+ public void setNotFrozen() {
+ this.frozenUntil = AccountDocument.NO_TIME_VALUE;
+ }
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationRecord.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationRecord.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,74 @@
+package com.ogoglio.persist;
+
+import java.util.Random;
+
+import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.xml.AccountDocument;
+
+public class PendingEmailValidationRecord {
+
+ private static Random RANDOM = new Random();
+
+ private String username = null;
+
+ private String email = null;
+
+ private String secret = null;
+
+ private long creationDate = AccountDocument.NO_TIME_VALUE;
+
+ public PendingEmailValidationRecord() {
+ }
+
+ public PendingEmailValidationRecord(String username, String email) {
+ ArgumentUtils.assertNotEmpty(username);
+ ArgumentUtils.assertIsEmail(email);
+ this.username = username;
+ this.email = email;
+ this.secret = generateSecret();
+ creationDate = System.currentTimeMillis();
+ }
+
+ private static final String SECRET_SOURCE = "abcdefghijklmnopqrstuvwxyz1234567890";
+
+ private String generateSecret() {
+ StringBuffer result = new StringBuffer();
+ for (int i = 0; i < 25; i++) {
+ result.append(SECRET_SOURCE.charAt(Math.abs(RANDOM.nextInt()) % SECRET_SOURCE.length()));
+ }
+ return result.toString();
+ }
+
+ public long getCreationDate() {
+ return creationDate;
+ }
+
+ public void setCreationDate(long creationDate) {
+ this.creationDate = creationDate;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ ArgumentUtils.assertIsEmail(email);
+ this.email = email;
+ }
+
+ public String getSecret() {
+ return secret;
+ }
+
+ public void setSecret(String secret) {
+ this.secret = secret;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,61 @@
+package com.ogoglio.persist;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+public class PendingEmailValidationTasks {
+
+ public static final String PEV_BY_USERNAME = "com.ogoglio.persist.pendingEmailValidationsByUsername";
+ public static final String PEV_BY_EMAIL = "com.ogoglio.persist.pendingEmailValidationByEmail";
+ public static final String PEV_BY_SECRET = "com.ogoglio.persist.pendingEmailValidationBySecret";
+
+ public static PendingEmailValidationRecord[] findPendingEmailValidationsByUsername(final String username, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ Query query = hibernateSession.getNamedQuery(PEV_BY_USERNAME);
+ query.setParameter("username", username);
+ PendingEmailValidationRecord recs[] = (PendingEmailValidationRecord[]) query.list().toArray(new PendingEmailValidationRecord[0]);
+ return recs;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (PendingEmailValidationRecord[]) task.execute();
+ }
+
+ public static PendingEmailValidationRecord findPendingEmailValidationByEmail(final String email, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ Query query = hibernateSession.getNamedQuery(PEV_BY_EMAIL);
+ query.setParameter("email", email);
+ return query.uniqueResult();
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (PendingEmailValidationRecord) task.execute();
+ }
+
+ public static PendingEmailValidationRecord findPendingEmailValidationBySecret(final String secret, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ Query query = hibernateSession.getNamedQuery(PEV_BY_SECRET);
+ query.setParameter("secret", secret);
+ return query.uniqueResult();
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (PendingEmailValidationRecord) task.execute();
+ }
+
+ public static boolean delete(final PendingEmailValidationRecord validationRecord, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ hibernateSession.delete(validationRecord);
+ return Boolean.TRUE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return Boolean.TRUE.equals(task.execute());
+ }
+
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-08-27 23:52:59 UTC (rev 275)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -46,4 +46,8 @@
AccountPersistTasks.update(accountRec, sessionFactory);
}
+
+ public static void initializeServiceState(SessionFactory sessionFactory) throws PersistException, IOException{
+ ServiceStateTasks.getOrCreateServiceState(sessionFactory);
+ }
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateRecord.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateRecord.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,43 @@
+package com.ogoglio.persist;
+
+import com.ogoglio.xml.ServiceStateDocument;
+
+public class ServiceStateRecord {
+
+ private String registrationState = ServiceStateDocument.REGISTRATION_STATE_ADMIN_ONLY;
+
+ private long serviceStateID = -1;
+
+ public ServiceStateRecord() {
+ }
+
+ public ServiceStateRecord(String registrationState) {
+ setRegistrationState(registrationState);
+ }
+
+ public String getRegistrationState() {
+ return registrationState;
+ }
+
+ public void setRegistrationState(String registrationState) {
+ assertValidRegistrationState(registrationState);
+ this.registrationState = registrationState;
+ }
+
+ private void assertValidRegistrationState(String registrationState) {
+ for (int i = 0; i < ServiceStateDocument.REGISTRATION_STATES.length; i++) {
+ if (ServiceStateDocument.REGISTRATION_STATES[i].equals(registrationState)) {
+ return;
+ }
+ }
+ throw new IllegalArgumentException("Baad registration state: " + registrationState);
+ }
+
+ public long getServiceStateID() {
+ return serviceStateID;
+ }
+
+ public void setServiceStateID(long serviceStateID) {
+ this.serviceStateID = serviceStateID;
+ }
+}
\ No newline at end of file
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -0,0 +1,54 @@
+package com.ogoglio.persist;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import com.ogoglio.xml.ServiceStateDocument;
+
+public class ServiceStateTasks {
+
+ public static final String SERVICE_STATE_RECORDS = "com.ogoglio.persist.serviceStateRecords";
+
+ /**
+ * This will barf if there are more than one service state records
+ */
+ public static ServiceStateRecord getOrCreateServiceState(SessionFactory sessionFactory) throws PersistException{
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(SERVICE_STATE_RECORDS);
+ ServiceStateRecord record = (ServiceStateRecord)query.uniqueResult();
+ if(record == null) {
+ record = new ServiceStateRecord();
+ session.save(record);
+ }
+ return record;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (ServiceStateRecord) task.execute();
+ }
+
+ public static ServiceStateRecord updateServiceState(final ServiceStateDocument proposedDoc, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(SERVICE_STATE_RECORDS);
+ ServiceStateRecord record = (ServiceStateRecord)query.uniqueResult();
+ if(record == null) {
+ throw new IllegalStateException("Tried to update service state when there's no record!");
+ }
+ boolean dirty = false;
+ if(!record.getRegistrationState().equals(proposedDoc.getRegistrationState())) {
+ record.setRegistrationState(proposedDoc.getRegistrationState());
+ dirty = true;
+ }
+ if(dirty) {
+ session.update(record);
+ }
+ return record;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (ServiceStateRecord) task.execute();
+ }
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-08-27 23:52:59 UTC (rev 275)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-08-27 23:53:13 UTC (rev 276)
@@ -41,6 +41,7 @@
import com.ogoglio.util.BlockingQueue;
import com.ogoglio.util.BlockingQueue.QueueClosedException;
import com.ogoglio.viewer.j3d.J3DRenderer;
+import com.ogoglio.viewer.render.UIConstants;
import com.ogoglio.xml.BodyDocument;
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
@@ -162,17 +163,17 @@
public InputStream getUserAnimationStream(String username, long animationID) throws IOException {
if (animationID == 1) {
- return SpaceSimulator.class.getClassLoader().getResourceAsStream("com/ogoglio/viewer/applet/resources/avatar.bvh");
+ return UIConstants.getResource("avatar/avatar.bvh");
} else if (animationID == 2) {
- return SpaceSimulator.class.getClassLoader().getResourceAsStream("com/ogoglio/viewer/applet/resources/avatar-walk.bvh");
+ return UIConstants.getResource("avatar/avatar-walk.bvh");
} else if (animationID == 3) {
- return SpaceSimulator.class.getClassLoader().getResourceAsStream("com/ogoglio/viewer/applet/resources/avatar-wave.bvh");
+ return UIConstants.getResource("avatar/avatar-wave.bvh");
}
return null;
}
public InputStream getUserSkinMapStream(String username) throws IOException {
- return SpaceSimulator.class.getClassLoader().getResourceAsStream("com/ogoglio/viewer/applet/resources/avatar.smap");
+ return UIConstants.getResource("avatar/avatar.smap");
}
public String getThingScript(long thingID) throws IOException {...
[truncated message content] |
|
From: <tre...@us...> - 2007-08-28 02:51:03
|
Revision: 277
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=277&view=rev
Author: trevorolio
Date: 2007-08-27 19:50:58 -0700 (Mon, 27 Aug 2007)
Log Message:
-----------
Added fetal mail tests
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/mail/
maven/trunk/ogoglio-server/src/main/resources/mail/EmailValidationTemplate.txt
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/mail/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/mail/test/
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/mail/test/MailTest.java
maven/trunk/ogoglio-server/src/test/resources/mail/
maven/trunk/ogoglio-server/src/test/resources/mail/TestTemplate1.txt
maven/trunk/ogoglio-server/src/test/resources/test-config.properties
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java
maven/trunk/ogoglio-server/src/test/resources/hibernate/test-config.properties
Property Changed:
----------------
maven/trunk/ogoglio-server/
Property changes on: maven/trunk/ogoglio-server
___________________________________________________________________
Name: svn:ignore
- target
+
target
mailTestFiles
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-28 02:50:58 UTC (rev 277)
@@ -61,10 +61,11 @@
<!-- -->
<testResources>
<testResource>
- <directory>src/test/resources/hibernate</directory>
+ <directory>src/test/resources</directory>
<filtering>true</filtering>
<includes>
<include>test-config.properties</include>
+ <include>mail/*</include>
</includes>
</testResource>
</testResources>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTemplateFactory.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -8,7 +8,7 @@
public class MailTemplateFactory {
- private static final String TEMPLATE_RESOURCE_PATH = "com/ogoglio/mail/";
+ private static final String TEMPLATE_RESOURCE_PATH = "mail/";
public static final String TEST_TEMPLATE_1 = "TestTemplate1.txt";
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailTests.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -1,100 +0,0 @@
-package com.ogoglio.mail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-import com.ogoglio.util.ArgumentUtils;
-import com.ogoglio.util.StreamUtils;
-
-public class MailTests extends TestCase {
-
- private static final String TEST_DIR_PATH = "mailTestFiles";
-
- private File mailOutputDir = null;
-
- private MailClient mailClient1 = null;
-
- private MailFormatter mailFormatter1 = null;
-
- private String testTemplate1 = null;
-
- private HashMap testMap1 = null;
-
- public void setUp() throws IOException {
- mailOutputDir = new File(TEST_DIR_PATH);
- if (mailOutputDir.exists()) {
- delete(mailOutputDir);
- }
- assertTrue(mailOutputDir.mkdir());
-
- mailClient1 = new MailClient(mailOutputDir);
-
- mailFormatter1 = new MailFormatter();
-
- testTemplate1 = MailTemplateFactory.getTemplate(MailTemplateFactory.TEST_TEMPLATE_1);
- assertNotNull(testTemplate1);
-
- testMap1 = new HashMap();
- testMap1.put("username", "susan");
- testMap1.put("url", "http://example.com/og/");
- testMap1.put("moon.unit", "zappa");
- testMap1.put("Kurt", "Vonnegut.");
- }
-
- private void delete(File dir) {
- File[] children = dir.listFiles();
- for (int i = 0; i < children.length; i++) {
- assertTrue(children[i].delete());
- }
- assertTrue(dir.delete());
- }
-
- public void tearDown() {
- if (mailOutputDir != null && mailOutputDir.exists()) {
- delete(mailOutputDir);
- }
- }
-
- public void testClientFileOutput() throws MailSendException, FileNotFoundException, IOException {
- String body = "This is the body.";
- String to = "to...@ex...";
- String from = "ha...@ex...";
- String subject = "OWLs 'n Stuff";
- mailClient1.sendEmail(to, from, subject, body);
- File[] files = mailClient1.getOutputDir().listFiles();
- assertNotNull(files);
- assertEquals(1, files.length);
- assertFalse(files[0].length() == 0);
- String fileContents = StreamUtils.readInput(new FileInputStream(files[0]));
- assertTrue(fileContents.endsWith(body));
- }
-
- public void testFormat() {
- String result = mailFormatter1.format(testMap1, testTemplate1);
- assertNotNull(result);
- assertTrue(result.length() > 1);
- assertExactlyOne(result, (String) testMap1.get("username"));
- assertMultiple(result, (String) testMap1.get("url"));
- assertExactlyOne(result, (String) testMap1.get("moon.unit"));
- assertExactlyOne(result, (String) testMap1.get("Kurt"));
- }
-
- private void assertExactlyOne(String data, String target) {
- ArgumentUtils.assertNotEmpty(data);
- ArgumentUtils.assertNotEmpty(target);
- assertFalse(data.indexOf(target) == -1);
- assertTrue(data.indexOf(target) == data.lastIndexOf(target));
- }
-
- private void assertMultiple(String data, String target) {
- ArgumentUtils.assertNotEmpty(data);
- ArgumentUtils.assertNotEmpty(target);
- assertFalse(data.indexOf(target) == -1);
- assertFalse(data.indexOf(target) == data.lastIndexOf(target));
- }
-}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -13,46 +13,41 @@
public class AccountsForTesting implements Migration {
- private static final String BOOTSTRAP_ACCT_USER_KEY = "ogoglio/bootstrapUser";
- private static final String BOOTSTRAP_ACCT_PW_KEY = "ogoglio/bootstrapUserPW";
+ private static final String BOOTSTRAP_ACCT_USER_KEY = "ogoglio/bootstrapUser";
- public boolean migrate(SessionFactory sessionFactory,
- ServletConfig NOTUSED, Context ctx, Properties testConfig, int from, int to) {
+ private static final String BOOTSTRAP_ACCT_PW_KEY = "ogoglio/bootstrapUserPW";
- if ((from != 0) || (to != 1)) {
- System.out
- .println("Migration called in the wrong place! Expected 0->1 but was:"
- + from + "->" + to + "!");
- System.out
- .println("Migration called in the wrong place! Check the ordering of migration array!");
- return false;
- }
- try {
- String uriString, user, pw;
-
- //if null, we are test mode
- if (ctx==null) {
- uriString=testConfig.getProperty(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY.replace('/', '.'));
- user=testConfig.getProperty(BOOTSTRAP_ACCT_USER_KEY.replace('/', '.'));
- pw=testConfig.getProperty(BOOTSTRAP_ACCT_PW_KEY.replace('/', '.'));
- } else {
- uriString=(String) ctx.lookup(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY);
- user=(String) ctx.lookup(BOOTSTRAP_ACCT_USER_KEY);
- pw=(String) ctx.lookup(BOOTSTRAP_ACCT_PW_KEY);
- }
- URI uri = new URI(uriString);
- //actual work
- ServiceInitializationPersistTasks.initializeLocalSim(uri,sessionFactory);
- ServiceInitializationPersistTasks.initializeBootstrapAccount(sessionFactory, uri.getHost(), user, pw);
+ public boolean migrate(SessionFactory sessionFactory, ServletConfig NOTUSED, Context ctx, Properties testConfig, int from, int to) {
+
+ if ((from != 0) || (to != 1)) {
+ System.out.println("Migration called in the wrong place! Expected 0->1 but was:" + from + "->" + to + "!");
+ System.out.println("Migration called in the wrong place! Check the ordering of migration array!");
+ return false;
+ }
+ try {
+ String uriString, user, pw;
+
+ //if null, we are test mode
+ if (ctx == null) {
+ uriString = testConfig.getProperty(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY.replace('/', '.'));
+ user = testConfig.getProperty(BOOTSTRAP_ACCT_USER_KEY.replace('/', '.'));
+ pw = testConfig.getProperty(BOOTSTRAP_ACCT_PW_KEY.replace('/', '.'));
+ } else {
+ uriString = (String) ctx.lookup(AbstractResourceServlet.OGOGLIO_BASE_URL_KEY);
+ user = (String) ctx.lookup(BOOTSTRAP_ACCT_USER_KEY);
+ pw = (String) ctx.lookup(BOOTSTRAP_ACCT_PW_KEY);
+ }
+ URI uri = new URI(uriString);
+ //actual work
+ ServiceInitializationPersistTasks.initializeLocalSim(uri, sessionFactory);
+ ServiceInitializationPersistTasks.initializeBootstrapAccount(sessionFactory, uri.getHost(), user, pw);
ServiceInitializationPersistTasks.initializeServiceState(sessionFactory);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- System.err
- .println("Exception during attempt to init DB in migration from 0->1:\n"
- + e.getMessage());
- return false;
- }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.err.println("Exception during attempt to init DB in migration from 0->1:\n" + e.getMessage());
+ return false;
+ }
- }
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -8,48 +8,42 @@
import com.ogoglio.persist.PersistException;
public class DBVersionPersistTasks {
- public final static String FIND_VERSION = "com.ogoglio.migrate.dbversions";
+ public final static String FIND_VERSION = "com.ogoglio.migrate.dbversions";
- public static int findVersion(SessionFactory sessionFactory)
- throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- return query.uniqueResult();
- }
- };
- task.setSessionFactory(sessionFactory);
- return ((DBVersionRecord) task.execute()).getVersion();
- }
+ public static int findVersion(SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(FIND_VERSION);
+ return query.uniqueResult();
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return ((DBVersionRecord) task.execute()).getVersion();
+ }
- public static boolean updateVersion(final int newVersion,
- final int expectedSize/* one or zero */,
- SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- int size = query.list().size();
- DBVersionRecord rec;
- if (expectedSize != size) {
- System.out.println(
- "Whoa! Size of returned result for db version record was ("
- + size + ") but should have been "
- + expectedSize + "!");
- return Boolean.FALSE;
- }
- if (size == 0) {
- rec = new DBVersionRecord();
- } else {
- rec = (DBVersionRecord) query.uniqueResult();
- }
- rec.setVersion(newVersion);
- session.saveOrUpdate(rec);
- System.out.println("******* Wrote new version FART:"+newVersion);
- return Boolean.TRUE;
- }
- };
- task.setSessionFactory(sessionFactory);
- return (task.execute().equals(Boolean.TRUE));
- }
+ public static boolean updateVersion(final int newVersion, final int expectedSize/* one or zero */, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session session) throws PersistException {
+ Query query = session.getNamedQuery(FIND_VERSION);
+ int size = query.list().size();
+ DBVersionRecord rec;
+ if (expectedSize != size) {
+ System.out.println("Whoa! Size of returned result for db version record was (" + size + ") but should have been " + expectedSize + "!");
+ return Boolean.FALSE;
+ }
+ if (size == 0) {
+ rec = new DBVersionRecord();
+ } else {
+ rec = (DBVersionRecord) query.uniqueResult();
+ }
+ rec.setVersion(newVersion);
+ session.saveOrUpdate(rec);
+ System.out.println("******* Wrote new version FART:" + newVersion);
+ return Boolean.TRUE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (task.execute().equals(Boolean.TRUE));
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -1,25 +1,28 @@
package com.ogoglio.migrate;
public class DBVersionRecord {
- public static int INTERNAL_DEV_STATE=-8288;
-
- private int version=0;
- private long id;
-
- public DBVersionRecord() {
-
- }
- public long getVersionId() {
- return id;
- }
- public void setVersionId(long id) {
- this.id=id;
- }
- public int getVersion() {
- return version;
- }
-
- public void setVersion(int version) {
- this.version=version;
- }
+ public static int INTERNAL_DEV_STATE = -8288;
+
+ private int version = 0;
+
+ private long id;
+
+ public DBVersionRecord() {
+ }
+
+ public long getVersionId() {
+ return id;
+ }
+
+ public void setVersionId(long id) {
+ this.id = id;
+ }
+
+ public int getVersion() {
+ return version;
+ }
+
+ public void setVersion(int version) {
+ this.version = version;
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -8,30 +8,29 @@
protected SessionFactory sessionFactory;
- public void setUp() {
+ public void setUp() {
try {
MigrationSupport support = new MigrationSupport();
if (!("true".equals(support.getTestConfig().getProperty("ogoglio.okToZapDB")))) {
- fail("Whoa! Shouldn't be running tests without setting the ogoglio.okToZapDB property!");
+ fail("Whoa! Shouldn't be running tests without setting the ogoglio.okToZapDB property!");
}
- if (support.initialize_version(null, null, false)==false) {
- fail("can't get DB set up: trying to initialize it in the test code");
+ if (support.initialize_version(null, null, false) == false) {
+ fail("can't get DB set up: trying to initialize it in the test code");
}
-
+
//if we are here, db stuff worked, but we still need to avoid all the jndi stuff
- sessionFactory= support.createConfigurationForHibernate(MigrationSupport.DB_VERSION_NUMBER,
- null, false).buildSessionFactory();
+ sessionFactory = support.createConfigurationForHibernate(MigrationSupport.DB_VERSION_NUMBER, null, false).buildSessionFactory();
} catch (Exception e) {
System.out.println("-------");
e.printStackTrace(System.out);
System.out.println("---------");
fail("Could not setup:" + e.getMessage());
}
- }
-
- public void tearDown() {
- if (sessionFactory!=null) {
- sessionFactory.close();
- }
- }
+ }
+
+ public void tearDown() {
+ if (sessionFactory != null) {
+ sessionFactory.close();
+ }
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -9,7 +9,6 @@
public interface Migration {
- public boolean migrate(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx,
- Properties testConfig, int from, int to);
+ public boolean migrate(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx, Properties testConfig, int from, int to);
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-27 23:53:13 UTC (rev 276)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-28 02:50:58 UTC (rev 277)
@@ -15,166 +15,158 @@
public class MigrationSupport {
- // THIS IS THE CRITICAL VERSION NUMBER
- public static final int DB_VERSION_NUMBER = 1;
+ // THIS IS THE CRITICAL VERSION NUMBER
+ public static final int DB_VERSION_NUMBER = 1;
- //check on migration okayness
- public static final String MIGRATION_KEY = "ogoglio/okToMigrateDB";
-
- // this is the set of semantic migrations, in order
- public static final Migration[] migration = {
- new AccountsForTesting()
- };
+ //check on migration okayness
+ public static final String MIGRATION_KEY = "ogoglio/okToMigrateDB";
- public MigrationSupport() {
- }
+ // this is the set of semantic migrations, in order
+ public static final Migration[] migration = { new AccountsForTesting() };
- public boolean verifyVersion(ServletConfig servletConf, Context ctx) {
- try {
- SessionFactory sessionFactory = getCurrentConfiguration().buildSessionFactory();
- int version = DBVersionPersistTasks.findVersion(sessionFactory);
- if (version != DB_VERSION_NUMBER) {
- System.out.println("DB Version Mismatch! Expected ("
- + DB_VERSION_NUMBER + ") but got " + version + "!");
- sessionFactory.close();
- return tryUpgrade(servletConf, ctx, version, DB_VERSION_NUMBER,"update",true);
- }
- sessionFactory.close();
- return true; // we are at the expected version
- } catch (PersistException e) {
- if (e.innerThrowable==null) {
- System.out.println("Serious problem with hibernate:" + e.getMessage());
- return false;
- }
- System.out.println("Unable to figure out DB version number. Likely this is a fresh database....("+e.innerThrowable.getClass().getName()+")");
- return initialize_version(servletConf,ctx, true);
- }
- }
+ public MigrationSupport() {
+ }
- public boolean initialize_version(ServletConfig conf, Context ctx, boolean useJNDI) {
- Configuration configuration = createConfigurationForHibernate(0,"create",useJNDI);
- try {
- SessionFactory factory=configuration.buildSessionFactory();
- if (setVersionNumberOfDbViaQuery(factory,0,0)==false) {
- factory.close();
- return false;
- }
- factory.close();
- return tryUpgrade(conf,ctx,0, DB_VERSION_NUMBER, "create",useJNDI);
- } catch (Throwable e) {
- System.out.println("Error trying initialized DB:" + e.getMessage());
- return false;
- }
-
- }
+ public boolean verifyVersion(ServletConfig servletConf, Context ctx) {
+ try {
+ SessionFactory sessionFactory = getCurrentConfiguration().buildSessionFactory();
+ int version = DBVersionPersistTasks.findVersion(sessionFactory);
+ if (version != DB_VERSION_NUMBER) {
+ System.err.println("DB Version Mismatch! Expected (" + DB_VERSION_NUMBER + ") but got " + version + "!");
+ sessionFactory.close();
+ return tryUpgrade(servletConf, ctx, version, DB_VERSION_NUMBER, "update", true);
+ }
+ sessionFactory.close();
+ return true; // we are at the expected version
+ } catch (PersistException e) {
+ if (e.innerThrowable == null) {
+ System.out.println("Serious problem with hibernate:" + e.getMessage());
+ return false;
+ }
+ System.err.println("Unable to figure out DB version number. Likely this is a fresh database....(" + e.innerThrowable.getClass().getName() + ")");
+ return initialize_version(servletConf, ctx, true);
+ }
+ }
- public Configuration getCurrentConfiguration() {
- return createConfigurationForHibernate(DB_VERSION_NUMBER, null, true);
- }
-
- public Configuration createConfigurationForHibernate(int num, String autoSetting, boolean useJNDI) {
- Configuration configuration = new Configuration();
- if (autoSetting!=null) {
- configuration.setProperty("hibernate.hbm2ddl.auto", autoSetting);
- }
- if (useJNDI) {
- configuration.setProperty("hibernate.connection.datasource","java:comp/env/jdbc/space");
- } else {
- Properties p=new Properties();
- try {
- p.load(getClass().getResourceAsStream("/test-config.properties"));
- configuration.addProperties(p);
- } catch (IOException e){
- System.out.println("Unable to find the test configuration file!"+e.getMessage());
- return configuration.configure();
- }
- }
- configuration.addResource("com/ogoglio/migrate/migration-"+num+".xml");
- return configuration.configure();
- }
+ public boolean initialize_version(ServletConfig conf, Context ctx, boolean useJNDI) {
+ Configuration configuration = createConfigurationForHibernate(0, "create", useJNDI);
+ try {
+ SessionFactory factory = configuration.buildSessionFactory();
+ if (setVersionNumberOfDbViaQuery(factory, 0, 0) == false) {
+ factory.close();
+ return false;
+ }
+ factory.close();
+ return tryUpgrade(conf, ctx, 0, DB_VERSION_NUMBER, "create", useJNDI);
+ } catch (Throwable e) {
+ System.err.println("Error trying initialized DB:" + e.getMessage());
+ return false;
+ }
- private boolean setVersionNumberOfDbViaQuery(SessionFactory sessionFactory,int targetVersion,int expectedSize) {
- try {
- return DBVersionPersistTasks.updateVersion(targetVersion, expectedSize, sessionFactory);
- } catch (PersistException e) {
- System.out.println("Problem updating the version of the database to version "+targetVersion+":"+e.getMessage());
- return false;
- }
- }
+ }
- public boolean tryUpgrade(ServletConfig servletConfig, Context ctx, int db_is, int db_wants_to_be,
- String ddlMode, boolean useJNDI) {
- if (migration.length != DB_VERSION_NUMBER) {
- System.out
- .println("Internal error! Migration list length should be "
- + DB_VERSION_NUMBER + " but is " + migration.length
- + "!");
- return false;
- }
- Properties testConfig=new Properties();
- boolean canMigrate=false;
- if (ctx==null) {
- //in test mode
- testConfig = getTestConfig();
- if ("true".equals(testConfig.getProperty("ogoglio.okToMigrateDB"))) {
- canMigrate=true;
- }
- } else {
- //not testing, but might be integration testing
- try {
- String migrate=(String)ctx.lookup(MIGRATION_KEY);
- if ("true".equals(migrate)) {
- canMigrate=true;
- }
- } catch (NamingException e) {
- System.out.println("Naming exception trying to access "+MIGRATION_KEY+" from naming context!");
- }
- }
-
- if (!canMigrate) {
- System.out.println("Cannot migrate data! Property ogoglio.okToMigrateDB is false or non-existent!");
- return false;
- }
+ public Configuration getCurrentConfiguration() {
+ return createConfigurationForHibernate(DB_VERSION_NUMBER, null, true);
+ }
- for (int i = db_is; i < db_wants_to_be; ++i) {
- Migration current = migration[i];
- System.out.println("------------------------------------------------\n");
- System.out.println("DB: Attempting migration from " + i + " to "
- + (i + 1) + "...");
-
- //try to get hibernate to do the work
- Configuration config = createConfigurationForHibernate(i+1, ddlMode ,useJNDI);
- SessionFactory factory = config.buildSessionFactory();
-
- //subtle: if the ddlMode is create, hibernate blows away all the data (including our version number record)
- int expectedRecords=1;
- if ("create".equals(ddlMode)) {
- expectedRecords=0;
- }
- setVersionNumberOfDbViaQuery(factory,i+1, expectedRecords);
-
- if (!current.migrate(factory,servletConfig, ctx, testConfig, i, i + 1)) {
- factory.close();
- return false;
- }
- factory.close();
- System.out.println("------------------------------------------------\n");
- }
- return true;
- }
+ public Configuration createConfigurationForHibernate(int num, String autoSetting, boolean useJNDI) {
+ Configuration configuration = new Configuration();
+ if (autoSetting != null) {
+ configuration.setProperty("hibernate.hbm2ddl.auto", autoSetting);
+ }
+ if (useJNDI) {
+ configuration.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/space");
+ } else {
+ Properties p = new Properties();
+ try {
+ p.load(getClass().getResourceAsStream("/test-config.properties"));
+ configuration.addProperties(p);
+ } catch (IOException e) {
+ System.err.println("Unable to find the test configuration file!" + e.getMessage());
+ return configuration.configure();
+ }
+ }
+ configuration.addResource("com/ogoglio/migrate/migration-" + num + ".xml");
+ return configuration.configure();
+ }
- public Properties getTestConfig() {
- Properties testConfig = new Properties();
- InputStream is=getClass().getResourceAsStream("/test-config.properties");
- if (is==null) {
- System.out.println("Warning! Unable to find test-config.properties! Probably something is broken!");
- } else {
- try {
- testConfig.load(is);
- } catch (IOException e) {
- System.out.println("Warning! Error reading test-config.properties! "+e.getMessage());
- }
- }
- return testConfig;
- }
+ private boolean setVersionNumberOfDbViaQuery(SessionFactory sessionFactory, int targetVersion, int expectedSize) {
+ try {
+ return DBVersionPersistTasks.updateVersion(targetVersion, expectedSize, sessionFactory);
+ } catch (PersistException e) {
+ System.err.println("Problem updating the version of the database to version " + targetVersion + ":" + e.getMessage());
+ return false;
+ }
+ }
+
+ public boolean tryUpgrade(ServletConfig servletConfig, Context ctx, int db_is, int db_wants_to_be, String ddlMode, boolean useJNDI) {
+ if (migration.length != DB_VERSION_NUMBER) {
+ System.out.println("Internal error! Migration list length should be " + DB_VERSION_NUMBER + " but is " + migration.length + "!");
+ return false;
+ }
+ Properties testConfig = new Properties();
+ boolean canMigrate = false;
+ if (ctx == null) {
+ //in test mode
+ testConfig = getTestConfig();
+ if ("true".equals(testConfig.getProperty("ogoglio.okToMigrateDB"))) {
+ canMigrate = true;
+ }
+ } else {
+ //not testing, but might be integration testing
+ try {
+ String migrate = (String) ctx.lookup(MIGRATION_KEY);
+ if ("true".equals(migrate)) {
+ canMigrate = true;
+ }
+ } catch (NamingException e) {
+ System.err.println("Naming exception trying to access " + MIGRATION_KEY + " from naming context!");
+ }
+ }
+
+ if (!canMig...
[truncated message content] |
|
From: <ian...@us...> - 2007-08-28 22:46:40
|
Revision: 280
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=280&view=rev
Author: iansmith
Date: 2007-08-28 15:46:41 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Extruded the support classes for our kind of web app upward.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceStateTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SimPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplatePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/TemplateSupportFilePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-0.xml
maven/trunk/ogoglio-server/src/main/resources/hibernate/migration-1.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteInfo.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractRemoteServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AbstractResourceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/DescendingSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteInfo.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SiteResource.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-28 22:46:41 UTC (rev 280)
@@ -130,6 +130,7 @@
</webResources>
</configuration>
</plugin>
+
</plugins>
</build>
@@ -141,11 +142,6 @@
<version>2.0.0-rc-6</version>
</dependency>
<dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- <version>3.2.1.ga</version>
- </dependency>
- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
@@ -161,17 +157,9 @@
<artifactId>commons-httpclient</artifactId>
<version>3.0.1</version>
</dependency>
+
+
<dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.3</version>
- </dependency>
- <dependency>
<groupId>com.sun</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
@@ -199,6 +187,11 @@
<artifactId>ogoglio-common</artifactId>
<version>0.0.1</version>
</dependency>
+ <dependency>
+ <groupId>com.ogoglio</groupId>
+ <artifactId>ogoglio-appdev</artifactId>
+ <version>0.0.1</version>
+ </dependency>
<!-- -->
<!-- BOGUS DEPENDENCIES-->
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -6,15 +6,17 @@
import java.io.OutputStreamWriter;
import java.util.Date;
+import javax.naming.Context;
+import javax.naming.NamingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import com.ogoglio.appdev.servlet.AbstractResourceServlet;
+import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.DecoratedInputStream;
import com.ogoglio.media.FileStore;
-import com.ogoglio.site.AbstractResourceServlet;
-import com.ogoglio.site.SiteResource;
import com.ogoglio.util.StreamUtils;
public class MediaServlet extends AbstractResourceServlet {
@@ -23,12 +25,26 @@
public void init(ServletConfig config) throws ServletException {
super.init(config);
- File mediaDir = getSiteInfo().getMediaDirectory();
- if (mediaDir == null) {
- System.out.println(new Date() + ": NOTE: not running media service");
- return;
- }
- fileStore = new FileStore(getSiteInfo().getMediaDirectory().toURI());
+
+ Context envCtx;
+ try {
+ envCtx = (Context) initCtx.lookup("java:comp/env");
+ File mediaDirectory = null;
+ try {
+ mediaDirectory = new File((String)envCtx.lookup("ogoglio/mediaDirectory"));
+ } catch (NamingException e) {
+ }
+
+ if (mediaDirectory == null) {
+ System.out.println(new Date() + ": NOTE: not running media service");
+ } else {
+ fileStore = new FileStore(mediaDirectory.toURI());
+ }
+ } catch (NamingException e) {
+ System.out.println("Unable to figure out the initial context:"+e.getMessage());
+ throw new ServletException(e);
+ }
+
}
public void destroy() {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/AccountsForTesting.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -8,8 +8,9 @@
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.migrate.Migration;
+import com.ogoglio.appdev.servlet.AbstractResourceServlet;
import com.ogoglio.persist.ServiceInitializationPersistTasks;
-import com.ogoglio.site.AbstractResourceServlet;
public class AccountsForTesting implements Migration {
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,49 +0,0 @@
-package com.ogoglio.migrate;
-
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-
-import com.ogoglio.persist.HibernateTask;
-import com.ogoglio.persist.PersistException;
-
-public class DBVersionPersistTasks {
- public final static String FIND_VERSION = "com.ogoglio.migrate.dbversions";
-
- public static int findVersion(SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- return query.uniqueResult();
- }
- };
- task.setSessionFactory(sessionFactory);
- return ((DBVersionRecord) task.execute()).getVersion();
- }
-
- public static boolean updateVersion(final int newVersion, final int expectedSize/* one or zero */, SessionFactory sessionFactory) throws PersistException {
- HibernateTask task = new HibernateTask() {
- public Object run(Session session) throws PersistException {
- Query query = session.getNamedQuery(FIND_VERSION);
- int size = query.list().size();
- DBVersionRecord rec;
- if (expectedSize != size) {
- System.out.println("Whoa! Size of returned result for db version record was (" + size + ") but should have been " + expectedSize + "!");
- return Boolean.FALSE;
- }
- if (size == 0) {
- rec = new DBVersionRecord();
- } else {
- rec = (DBVersionRecord) query.uniqueResult();
- }
- rec.setVersion(newVersion);
- session.saveOrUpdate(rec);
- System.out.println("******* Wrote new version FART:" + newVersion);
- return Boolean.TRUE;
- }
- };
- task.setSessionFactory(sessionFactory);
- return (task.execute().equals(Boolean.TRUE));
- }
-
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBVersionRecord.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,28 +0,0 @@
-package com.ogoglio.migrate;
-
-public class DBVersionRecord {
- public static int INTERNAL_DEV_STATE = -8288;
-
- private int version = 0;
-
- private long id;
-
- public DBVersionRecord() {
- }
-
- public long getVersionId() {
- return id;
- }
-
- public void setVersionId(long id) {
- this.id = id;
- }
-
- public int getVersion() {
- return version;
- }
-
- public void setVersion(int version) {
- this.version = version;
- }
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/DBZapTest.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,36 +0,0 @@
-package com.ogoglio.migrate;
-
-import junit.framework.TestCase;
-
-import org.hibernate.SessionFactory;
-
-public class DBZapTest extends TestCase {
-
- protected SessionFactory sessionFactory;
-
- public void setUp() {
- try {
- MigrationSupport support = new MigrationSupport();
- if (!("true".equals(support.getTestConfig().getProperty("ogoglio.okToZapDB")))) {
- fail("Whoa! Shouldn't be running tests without setting the ogoglio.okToZapDB property!");
- }
- if (support.initialize_version(null, null, false) == false) {
- fail("can't get DB set up: trying to initialize it in the test code");
- }
-
- //if we are here, db stuff worked, but we still need to avoid all the jndi stuff
- sessionFactory = support.createConfigurationForHibernate(MigrationSupport.DB_VERSION_NUMBER, null, false).buildSessionFactory();
- } catch (Exception e) {
- System.out.println("-------");
- e.printStackTrace(System.out);
- System.out.println("---------");
- fail("Could not setup:" + e.getMessage());
- }
- }
-
- public void tearDown() {
- if (sessionFactory != null) {
- sessionFactory.close();
- }
- }
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/Migration.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,14 +0,0 @@
-package com.ogoglio.migrate;
-
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.servlet.ServletConfig;
-
-import org.hibernate.SessionFactory;
-
-public interface Migration {
-
- public boolean migrate(SessionFactory sessionFactory, ServletConfig servletConfig, Context ctx, Properties testConfig, int from, int to);
-
-}
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/MigrationSupport.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,172 +0,0 @@
-package com.ogoglio.migrate;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.servlet.ServletConfig;
-
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-
-import com.ogoglio.persist.PersistException;
-
-public class MigrationSupport {
-
- // THIS IS THE CRITICAL VERSION NUMBER
- public static final int DB_VERSION_NUMBER = 1;
-
- //check on migration okayness
- public static final String MIGRATION_KEY = "ogoglio/okToMigrateDB";
-
- // this is the set of semantic migrations, in order
- public static final Migration[] migration = { new AccountsForTesting() };
-
- public MigrationSupport() {
- }
-
- public boolean verifyVersion(ServletConfig servletConf, Context ctx) {
- try {
- SessionFactory sessionFactory = getCurrentConfiguration().buildSessionFactory();
- int version = DBVersionPersistTasks.findVersion(sessionFactory);
- if (version != DB_VERSION_NUMBER) {
- System.err.println("DB Version Mismatch! Expected (" + DB_VERSION_NUMBER + ") but got " + version + "!");
- sessionFactory.close();
- return tryUpgrade(servletConf, ctx, version, DB_VERSION_NUMBER, "update", true);
- }
- sessionFactory.close();
- return true; // we are at the expected version
- } catch (PersistException e) {
- if (e.innerThrowable == null) {
- System.out.println("Serious problem with hibernate:" + e.getMessage());
- return false;
- }
- System.err.println("Unable to figure out DB version number. Likely this is a fresh database....(" + e.innerThrowable.getClass().getName() + ")");
- return initialize_version(servletConf, ctx, true);
- }
- }
-
- public boolean initialize_version(ServletConfig conf, Context ctx, boolean useJNDI) {
- Configuration configuration = createConfigurationForHibernate(0, "create", useJNDI);
- try {
- SessionFactory factory = configuration.buildSessionFactory();
- if (setVersionNumberOfDbViaQuery(factory, 0, 0) == false) {
- factory.close();
- return false;
- }
- factory.close();
- return tryUpgrade(conf, ctx, 0, DB_VERSION_NUMBER, "create", useJNDI);
- } catch (Throwable e) {
- System.err.println("Error trying initialized DB:" + e.getMessage());
- return false;
- }
-
- }
-
- public Configuration getCurrentConfiguration() {
- return createConfigurationForHibernate(DB_VERSION_NUMBER, null, true);
- }
-
- public Configuration createConfigurationForHibernate(int num, String autoSetting, boolean useJNDI) {
- Configuration configuration = new Configuration();
- if (autoSetting != null) {
- configuration.setProperty("hibernate.hbm2ddl.auto", autoSetting);
- }
- if (useJNDI) {
- configuration.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/space");
- } else {
- Properties p = new Properties();
- try {
- p.load(getClass().getResourceAsStream("/test-config.properties"));
- configuration.addProperties(p);
- } catch (IOException e) {
- System.err.println("Unable to find the test configuration file!" + e.getMessage());
- return configuration.configure();
- }
- }
- configuration.addResource("com/ogoglio/migrate/migration-" + num + ".xml");
- return configuration.configure();
- }
-
- private boolean setVersionNumberOfDbViaQuery(SessionFactory sessionFactory, int targetVersion, int expectedSize) {
- try {
- return DBVersionPersistTasks.updateVersion(targetVersion, expectedSize, sessionFactory);
- } catch (PersistException e) {
- System.err.println("Problem updating the version of the database to version " + targetVersion + ":" + e.getMessage());
- return false;
- }
- }
-
- public boolean tryUpgrade(ServletConfig servletConfig, Context ctx, int db_is, int db_wants_to_be, String ddlMode, boolean useJNDI) {
- if (migration.length != DB_VERSION_NUMBER) {
- System.out.println("Internal error! Migration list length should be " + DB_VERSION_NUMBER + " but is " + migration.length + "!");
- return false;
- }
- Properties testConfig = new Properties();
- boolean canMigrate = false;
- if (ctx == null) {
- //in test mode
- testConfig = getTestConfig();
- if ("true".equals(testConfig.getProperty("ogoglio.okToMigrateDB"))) {
- canMigrate = true;
- }
- } else {
- //not testing, but might be integration testing
- try {
- String migrate = (String) ctx.lookup(MIGRATION_KEY);
- if ("true".equals(migrate)) {
- canMigrate = true;
- }
- } catch (NamingException e) {
- System.err.println("Naming exception trying to access " + MIGRATION_KEY + " from naming context!");
- }
- }
-
- if (!canMigrate) {
- System.err.println("Cannot migrate data! Property ogoglio.okToMigrateDB is false or non-existent!");
- return false;
- }
-
- for (int i = db_is; i < db_wants_to_be; ++i) {
- Migration current = migration[i];
- System.out.println("------------------------------------------------\n");
- System.out.println("DB: Attempting migration from " + i + " to " + (i + 1) + "...");
-
- //try to get hibernate to do the work
- Configuration config = createConfigurationForHibernate(i + 1, ddlMode, useJNDI);
- SessionFactory factory = config.buildSessionFactory();
-
- //subtle: if the ddlMode is create, hibernate blows away all the data (including our version number record)
- int expectedRecords = 1;
- if ("create".equals(ddlMode)) {
- expectedRecords = 0;
- }
- setVersionNumberOfDbViaQuery(factory, i + 1, expectedRecords);
-
- if (!current.migrate(factory, servletConfig, ctx, testConfig, i, i + 1)) {
- factory.close();
- return false;
- }
- factory.close();
- System.out.println("------------------------------------------------\n");
- }
- return true;
- }
-
- public Properties getTestConfig() {
- Properties testConfig = new Properties();
- InputStream is = getClass().getResourceAsStream("/test-config.properties");
- if (is == null) {
- System.err.println("Warning! Unable to find test-config.properties! Probably something is broken!");
- } else {
- try {
- testConfig.load(is);
- } catch (IOException e) {
- System.err.println("Warning! Error reading test-config.properties! " + e.getMessage());
- }
- }
- return testConfig;
- }
-}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/migrate/OgoglioServerMigration.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -0,0 +1,29 @@
+package com.ogoglio.migrate;
+
+import com.ogoglio.appdev.migrate.Migration;
+import com.ogoglio.appdev.migrate.MigrationSupport;
+
+public class OgoglioServerMigration extends MigrationSupport {
+
+ public static final OgoglioServerMigration SINGLETON = new OgoglioServerMigration();
+
+ // THIS IS THE CRITICAL VERSION NUMBER
+ private static final int DB_VERSION_NUMBER = 1;
+
+ // this is the set of semantic migrations, in order
+ private static final Migration[] migration = { new AccountsForTesting() };
+
+ public Migration[] migrationList() {
+ return migration;
+ }
+
+ public int versionNumber() {
+ return DB_VERSION_NUMBER;
+ }
+
+ private OgoglioServerMigration() {
+
+ }
+
+
+}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -18,6 +18,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.AccountDocument;
public class AccountPersistTasks {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/BodyPersistTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -17,6 +17,8 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.BodyDocument;
public class BodyPersistTasks {
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/HibernateTask.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,83 +0,0 @@
-/* Copyright 2007 Transmutable (http://transmutable.com/)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. */
-package com.ogoglio.persist;
-
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.StaleObjectStateException;
-import org.hibernate.Transaction;
-
-public abstract class HibernateTask {
-
- private SessionFactory sessionFactory = null;
-
- public HibernateTask() {
- }
-
- public void setSessionFactory(SessionFactory sessionFactory) {
- this.sessionFactory = sessionFactory;
- }
-
- public abstract Object run(Session hibernateSession) throws PersistException;
-
- public Object execute() throws PersistException {
- Session hibernateSession = sessionFactory.openSession();
- Transaction transaction = hibernateSession.beginTransaction();
- try {
- Object result = run(hibernateSession);
- transaction.commit();
- return result;
- } catch (StaleObjectStateException staleEx) {
- System.err.println("This interceptor does not implement optimistic concurrency control!");
- System.err.println("Your application will not work until you add compensation actions!");
- throw new PersistException("This DB is not supported.");
- } catch (PersistException ex) {
- try {
- if (transaction.isActive()) {
- transaction.rollback();
- }
- } catch (Throwable rbEx) {
- }
- throw ex;
- } catch (Throwable ex) { //catches things that are created by Hibernate that are not PersistException
- System.err.println("TRUE TYPE OF CAUGHT EXCEPTION:"+ex.getClass().getName());
- System.err.println("ORIG STACK TRACE");
- ex.printStackTrace();
- try {
- if (transaction.isActive()) {
- transaction.rollback();
- }
- } catch (Throwable rbEx) {
- }
- // XXX This is really dodgy. This changes the type of the error from it's
- // XXX true type (for example LazyInitializationException) to the PersistException
- // XXX which I can only assume is to make the throws clauses easier. Ugh.
- throw new PersistException(ex,"Hibernate error: " + ex);
- } finally {
- hibernateSession.close();
- }
- }
-
- public static boolean equals(Object obj1, Object obj2) {
- if (obj1 == obj2) {
- return true;
- }
- if (obj1 != null) {
- return obj1.equals(obj2);
- } else {
- return obj2.equals(obj1);
- }
-
- }
-}
\ No newline at end of file
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PendingEmailValidationTasks.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -4,6 +4,9 @@
import org.hibernate.Session;
import org.hibernate.SessionFactory;
+import com.ogoglio.appdev.persist.HibernateTask;
+import com.ogoglio.appdev.persist.PersistException;
+
public class PendingEmailValidationTasks {
public static final String PEV_BY_USERNAME = "com.ogoglio.persist.pendingEmailValidationsByUsername";
Deleted: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java 2007-08-28 22:40:51 UTC (rev 279)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PersistException.java 2007-08-28 22:46:41 UTC (rev 280)
@@ -1,31 +0,0 @@
-/* Copyright 2007 Transmutable (http://transmutable.com/)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. */
-package com.ogoglio.persist;
-
-public class PersistException extends Exception {
-
- public Throwable innerThrowable;
-
- public PersistException() {
- }
-
- public PersistException(Throwable throwable, String string) {
- super(string);
- this.innerThrowable=throwable;
- }
-
- public PersistException(String string) {
- this(null,string);
- }
-}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/PossessionPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/c...
[truncated message content] |
|
From: <tre...@us...> - 2007-08-28 23:53:05
|
Revision: 287
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=287&view=rev
Author: trevorolio
Date: 2007-08-28 16:53:00 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Added test template resources.
Removed some debug printlns.
Modified Paths:
--------------
maven/trunk/ogoglio-server/.classpath
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/test/resources/templates/
maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.gif
maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js
maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.mtl
maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.obj
Modified: maven/trunk/ogoglio-server/.classpath
===================================================================
--- maven/trunk/ogoglio-server/.classpath 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/.classpath 2007-08-28 23:53:00 UTC (rev 287)
@@ -1,14 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/test/java"/>
- <classpathentry excluding="**" kind="src" output="src/main/resources/hibernate" path="src/main/resources/hibernate"/>
- <classpathentry excluding="**" kind="src" output="src/main/resources/log4j" path="src/main/resources/log4j"/>
- <classpathentry excluding="**" kind="src" output="src/test/resources/hibernate" path="src/test/resources/hibernate"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
- <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="/usr/local/jdk1.5.0_12/jre/lib/i386"/>
+ <attribute value="/usr/local/jdk1.5.0_12/jre/lib/i386" name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-28 23:53:00 UTC (rev 287)
@@ -66,6 +66,7 @@
<includes>
<include>test-config.properties</include>
<include>mail/*</include>
+ <include>templates/*</include>
</includes>
</testResource>
</testResources>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/mail/MailClient.java 2007-08-28 23:53:00 UTC (rev 287)
@@ -38,10 +38,10 @@
public MailClient() {
writeToDisk = false;
}
-
+
public void sendEmail(String to, String from, String subject, String body) throws MailSendException {
try {
- if (writeToDisk) {
+ if (writeToDisk) {
sendToDisk(to, from, subject, body);
} else {
sendViaContextSession(to, from, subject, body);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-28 23:53:00 UTC (rev 287)
@@ -154,7 +154,6 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
long spaceID = Long.parseLong(pathElements[pathElements.length - 1]);
- System.out.println("FART TRYING TO GET SPACE DOC FOR "+spaceID);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
@@ -265,7 +264,6 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
long spaceID = Long.parseLong(pathElements[2]);
try {
- System.out.println("SIM FART GET:"+spaceID);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
@@ -278,14 +276,12 @@
return;
}
- System.out.println("SIM FART GET2:"+authedAccount.getUsername());
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
String value = simulator.getSetting(pathElements[pathElements.length - 1]);
if (value == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
- System.out.println("SIM FART GET3:"+value);
sendStringResponse(value, "text/plain", response);
} catch (PersistException e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-08-28 23:53:00 UTC (rev 287)
@@ -68,9 +68,6 @@
}
}
public void setUp() {
-
- System.out.println("FART FART FART:" +(getClass().getResourceAsStream("com/ogoglio/migrate/migration-0.xml")==null));
-
super.setUp();
username1 = AccountRecord.cleanUsername("MoonUnitZappa");
email1 = AccountRecord.cleanEmail("mu...@ex...");
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-08-28 23:51:30 UTC (rev 286)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-08-28 23:53:00 UTC (rev 287)
@@ -4,60 +4,68 @@
import java.io.InputStream;
import java.util.HashMap;
+import javax.media.j3d.Transform3D;
+
import junit.framework.TestCase;
import com.ogoglio.sim.SpaceSimulator;
+import com.ogoglio.viewer.render.UIConstants;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceEvent;
import com.ogoglio.xml.TemplateDocument;
+import com.ogoglio.xml.ThingDocument;
public class ScriptTest extends TestCase {
public static final String simplestScript = "var i = 0; i++; ++i";
-
+
public static final String constructorScript = "function construct(thingID) { return 'script constructed ' + thingID; }";
//TODO test the script API for regressions
-
+
public void testSpaceScriptEngine() {
-
+
TestSpaceListener listener = new TestSpaceListener();
SpaceSimulator spaceSimulator = null;
- // try {
+ try {
SpaceDocument spaceDocument = new SpaceDocument(1, "Space", "trevor", true, 0, false, 0, 1);
spaceSimulator = new SpaceSimulator(spaceDocument, listener);
spaceSimulator.startSim();
-
+
TemplateDocument templateDoc1 = new TemplateDocument(1, "Template 1", "trevor", "A cool template", null);
listener.templateMap.put(new Long(1), templateDoc1);
listener.scriptMap.put(new Long(1), simplestScript);
- //ThingDocument thingDoc = spaceSimulator.addThing(templateDoc1.getTemplateID(), templateDoc1.getOwnerUsername(), templateDoc1.getDisplayName(), "trevor", 1, new Transform3D());
- //assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
+ listener.objMap.put(new Long(1), "templates/TestCube.obj");
+ listener.resourceMap.put(new Long(1), "templates/TestCube.mtl");
+ ThingDocument thingDoc = spaceSimulator.addThing(templateDoc1.getTemplateID(), templateDoc1.getOwnerUsername(), templateDoc1.getDisplayName(), "trevor", 1, new Transform3D());
+ assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
TemplateDocument templateDoc2 = new TemplateDocument(2, "Template 2", "trevor", "Another cool template", null);
listener.templateMap.put(new Long(2), templateDoc2);
listener.scriptMap.put(new Long(2), constructorScript);
- //thingDoc = spaceSimulator.addThing(templateDoc2.getTemplateID(), templateDoc2.getOwnerUsername(), templateDoc2.getDisplayName(), "trevor", 2, new Transform3D());
- //assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
+ listener.objMap.put(new Long(2), "templates/TestCube.obj");
+ listener.resourceMap.put(new Long(2), "templates/TestCube.mtl");
+ thingDoc = spaceSimulator.addThing(templateDoc2.getTemplateID(), templateDoc2.getOwnerUsername(), templateDoc2.getDisplayName(), "trevor", 2, new Transform3D());
+ assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
- // }finally {
- // spaceSimulator.cleanup();
- // }
+ } finally {
+ spaceSimulator.cleanup();
+ }
}
private static void delete(File dir) {
File[] children = dir.listFiles();
- if(children == null) {
+ if (children == null) {
return;
}
for (int i = 0; i < children.length; i++) {
- if(children[i].isDirectory()) {
+ if (children[i].isDirectory()) {
delete(children[i]);
} else {
children[i].delete();
@@ -65,34 +73,45 @@
}
dir.delete();
}
-
-
+
private class TestSpaceListener implements SpaceSimulator.Listener {
HashMap scriptMap = new HashMap(); //Long templateIDs to String scripts
-
+
HashMap templateMap = new HashMap(); //Long templateIDs to TemplateDocuments
+
+ HashMap objMap = new HashMap(); //Long templateIDs to obj resource names
+ HashMap resourceMap = new HashMap(); //Long templateIDs to template resource names
+
public void generatedSpaceEvent(SpaceEvent event, SpaceSimulator spaceSimulator) {
}
public String getTemplateScript(long templateID) {
- return (String)scriptMap.get(new Long(templateID));
+ return (String) scriptMap.get(new Long(templateID));
}
public TemplateDocument getTemplateDocument(long templateID) {
- return (TemplateDocument)templateMap.get(new Long(templateID));
+ return (TemplateDocument) templateMap.get(new Long(templateID));
}
public void requestSave(SpaceSimulator simulator) {
}
public InputStream getTemplateGeometryStream(long templateID, int lodIndex) {
- return null;
+ String resourcePath = (String)objMap.get(new Long(templateID));
+ if(resourcePath == null){
+ return null;
+ }
+ return UIConstants.getResource(resourcePath);
}
public InputStream getTemplateResourceStream(long templateID, String name) {
- return null;
+ String resourcePath = (String)resourceMap.get(new Long(templateID));
+ if(resourcePath == null){
+ return null;
+ }
+ return UIConstants.getResource(resourcePath);
}
public boolean setPageContent(long spaceID, long thingID, long pageID, String content) {
Added: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js
===================================================================
--- maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js (rev 0)
+++ maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js 2007-08-28 23:53:00 UTC (rev 287)
@@ -0,0 +1,42 @@
+var thingID = -1;
+
+function construct(id){
+ thingID = id;
+}
+
+function onClick(person, shapeName){
+ space.log(person + " clicked " + thingID + " on its " + shapeName);
+
+ var currentPosition = space.getThingPosition(thingID);
+
+ var path = new SplinePath(2000, false, false);
+ path.addKeyFrame(new SplineKeyFrame(currentPosition.x, currentPosition.y, currentPosition.z, 0, 0));
+ path.addKeyFrame(new SplineKeyFrame(currentPosition.x, currentPosition.y + 1, currentPosition.z, math.PI, 0.5));
+ path.addKeyFrame(new SplineKeyFrame(currentPosition.x, currentPosition.y, currentPosition.z, 2 * math.PI, 1));
+
+ space.startThingMotion(thingID, path);
+}
+
+function onContextClick(person, shapeName){
+ space.log(person + " context clicked " + thingID + " on its " + shapeName);
+
+ i1 = new ContextMenuInfo("Google",true,"google");
+ i2 = new ContextMenuInfo("Yahoo",true,"yahoo");
+ i3 = new ContextMenuInfo("Altavista",false,"NOTUSED");
+ i4 = new ContextMenuInfo("Transmutable",true,"transmutable");
+
+ return new Array(i1,i2,i3,i4);
+}
+
+function onContextMenuItemChosen(username,id)
+{
+ var key = "favoriteSite";
+ var preferred = space.getSetting(key);
+
+ space.putSetting(key,id);
+
+ //causes browser to jump to that page!
+ return "http://www."+id+".com/";
+}
+
+
Added: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.mtl
===================================================================
--- maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.mtl (rev 0)
+++ maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.mtl 2007-08-28 23:53:00 UTC (rev 287)
@@ -0,0 +1,13 @@
+# Blender3D MTL File: TestCube.blend
+# Material Count: 1
+newmtl Material_Numbers.gif
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.640000 0.640000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd TestCube.gif
+
+
Added: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.obj
===================================================================
--- maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.obj 2007-08-28 23:53:00 UTC (rev 287)
@@ -0,0 +1,44 @@
+# Blender3D v243 OBJ File: TestCube.blend
+# www.blender3d.org
+mtllib TestCube.mtl
+o Cube
+v 1.000000 2.000000 -1.000000
+v 1.000000 0.000000 -1.000000
+v -1.000000 0.000000 -1.000000
+v -1.000000 2.000000 -1.000000
+v 1.000000 2.000000 1.000000
+v 0.999999 -0.000001 1.000000
+v -1.000000 0.000000 1.000000
+v -1.000000 2.000000 1.000000
+vt 0.499999 0.249999 0.0
+vt 0.499999 0.499999 0.0
+vt 0.250000 0.499999 0.0
+vt 0.250000 0.249999 0.0
+vt 0.500000 0.999999 0.0
+vt 0.249999 0.999999 0.0
+vt 0.249999 0.749998 0.0
+vt 0.500000 0.749998 0.0
+vt 0.749999 0.499998 0.0
+vt 0.749999 0.749998 0.0
+vt 0.500000 0.749998 0.0
+vt 0.499999 0.499999 0.0
+vt 0.499999 0.499999 0.0
+vt 0.500000 0.749998 0.0
+vt 0.249999 0.749998 0.0
+vt 0.250000 0.499999 0.0
+vt 0.250000 0.499999 0.0
+vt 0.249999 0.749998 0.0
+vt 0.000000 0.749998 0.0
+vt 0.000000 0.499999 0.0
+vt 0.499999 0.000000 0.0
+vt 0.499999 0.249999 0.0
+vt 0.250000 0.249999 0.0
+vt 0.249999 0.000000 0.0
+usemtl Material_Numbers.gif
+s 1
+f 1/1 2/2 3/3 4/4
+f 5/5 8/6 7/7 6/8
+f 1/9 5/10 6/11 2/12
+f 2/13 6/14 7/15 3/16
+f 3/17 7/18 8/19 4/20
+f 5/21 1/22 4/23 8/24
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-08-30 20:40:13
|
Revision: 297
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=297&view=rev
Author: trevorolio
Date: 2007-08-30 13:40:07 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Updated the info panel code and TestCube.js to reflect the change.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java
maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
maven/trunk/ogoglio-server/src/main/webapp/thingPopup.html
maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-08-30 19:00:17 UTC (rev 296)
+++ maven/trunk/ogoglio-server/pom.xml 2007-08-30 20:40:07 UTC (rev 297)
@@ -46,14 +46,21 @@
<include>migration-*.xml</include>
</includes>
</resource>
-
<resource>
<directory>src/main/resources/log4j</directory>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>mail/*</include>
+ </includes>
+ </resource>
+
</resources>
<!-- -->
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java 2007-08-30 19:00:17 UTC (rev 296)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java 2007-08-30 20:40:07 UTC (rev 297)
@@ -35,6 +35,7 @@
import com.ogoglio.client.model.Page;
import com.ogoglio.client.model.Shape;
import com.ogoglio.client.model.Thing;
+import com.ogoglio.client.model.User;
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.viewer.j3d.J3DSplineKeyFrame;
@@ -86,6 +87,15 @@
return System.currentTimeMillis();
}
+ public String[] jsFunction_getUsernames(){
+ User[] users = spaceSimulator.getSpace().getUsers();
+ String[] result = new String[users.length];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = users[i].getUsername();
+ }
+ return result;
+ }
+
public String jsFunction_getSetting(String key) {
return spaceSimulator.getSetting(key);
}
@@ -151,6 +161,15 @@
spaceSimulator.setPageContent((long) thingID, (long) pageID, Page.TEXT_PLAIN, content);
}
+ public double[] jsFunction_getThingIDs(){
+ Thing[] things = spaceSimulator.getSpace().getThings();
+ double[] result = new double[things.length];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = things[i].getThingID();
+ }
+ return result;
+ }
+
public ScriptPoint jsFunction_getThingPosition(double thingID) {
Thing thing = spaceSimulator.getSpace().getThing((long) thingID);
if (thing == null) {
Modified: maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-30 19:00:17 UTC (rev 296)
+++ maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-30 20:40:07 UTC (rev 297)
@@ -205,25 +205,47 @@
if(infoDiv == null){
return;
}
+
var panelID = "infoPanel-" + id;
var infoPanelElement = document.createElement("div");
infoPanelElement.setAttribute("id", panelID);
infoPanelElement.setAttribute("class", "infoPanel");
- infoPanelElement.innerHTML = panelHTML;
+ infoPanelElement.style["background-color"] = "#EEE";
+
+ var infoActionDiv = document.createElement("div");
+ infoActionDiv.style.width = "100%";
+ infoActionDiv.style.textAlign = "right";
+ infoActionDiv.style.backgroundColor = "#F00";
+ var closeActionAnchor = document.createElement("a");
+ closeActionAnchor.setAttribute("href", "hmmm.html");
+ closeActionAnchor.setAttribute("onclick", "removeInfoPanel(" + id + "); return false;");
+ closeActionAnchor.appendChild(document.createTextNode("close"));
+ infoActionDiv.appendChild(closeActionAnchor);
+ infoPanelElement.appendChild(infoActionDiv);
+ var panelHTMLWrapperDiv = document.createElement("div");
+ panelHTMLWrapperDiv.innerHTML = panelHTML;
+ infoPanelElement.appendChild(panelHTMLWrapperDiv);
+
if(infoPanels[id] != null){
infoDiv.replaceChild(infoPanelElement, infoPanels[id]);
infoPanels[id] = infoPanelElement;
} else {
- var tempElement = document.createElement("div");
- infoDiv.appendChild(tempElement);
infoDiv.appendChild(infoPanelElement);
- infoDiv.removeChild(tempElement);
infoPanels[id] = infoPanelElement;
- infoPanels[id].focus();
+ infoPanelElement.focus();
}
}
+Array.prototype.remove=function(s){
+ for(i=0;i<this .length;i++){
+ if(s==this[i]) {
+ this.splice(i, 1);
+ break;
+ }
+ }
+}
+
function removeInfoPanel(id){
var infoDiv = document.getElementById("infoDiv");
if(infoDiv == null){
@@ -233,7 +255,7 @@
return;
}
infoDiv.removeChild(infoPanels[id]);
- infoPanels[id] = null;
+ infoPanels.remove(infoPanels[id]);
}
// Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Modified: maven/trunk/ogoglio-server/src/main/webapp/thingPopup.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/thingPopup.html 2007-08-30 19:00:17 UTC (rev 296)
+++ maven/trunk/ogoglio-server/src/main/webapp/thingPopup.html 2007-08-30 20:40:07 UTC (rev 297)
@@ -57,7 +57,7 @@
}
thingXML = xml;
- title.innerHTML = "Thing: " + xml.getAttribute('displayname');
+ title.innerHTML = escapeHTML(xml.getAttribute('displayname'));
xPosInput.value = parseFloat(thingXML.getAttribute('x')).toFixed(2);
yPosInput.value = parseFloat(thingXML.getAttribute('y')).toFixed(2);
zPosInput.value = parseFloat(thingXML.getAttribute('z')).toFixed(2);
@@ -193,7 +193,7 @@
<style type="text/css">
.section input[type=submit] {
- width: 100px;
+ width: 60px;
}
.section input[type=text] {
width: 70px;
Modified: maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js
===================================================================
--- maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js 2007-08-30 19:00:17 UTC (rev 296)
+++ maven/trunk/ogoglio-server/src/test/resources/templates/TestCube.js 2007-08-30 20:40:07 UTC (rev 297)
@@ -18,25 +18,23 @@
}
function onContextClick(person, shapeName){
- space.log(person + " context clicked " + thingID + " on its " + shapeName);
-
- i1 = new ContextMenuInfo("Google",true,"google");
- i2 = new ContextMenuInfo("Yahoo",true,"yahoo");
- i3 = new ContextMenuInfo("Altavista",false,"NOTUSED");
- i4 = new ContextMenuInfo("Transmutable",true,"transmutable");
-
- return new Array(i1,i2,i3,i4);
+ var moveItem = new ContextMenuInfo("Move",true,"move");
+ var monkeyItem = new ContextMenuInfo("Monkey", true, "monkey");
+ var deadItem = new ContextMenuInfo("Groove",false,"groove");
+ return new Array(moveItem, monkeyItem, deadItem);
}
-function onContextMenuItemChosen(username,id)
-{
- var key = "favoriteSite";
- var preferred = space.getSetting(key);
-
- space.putSetting(key,id);
-
- //causes browser to jump to that page!
- return "http://www."+id+".com/";
+function onContextMenuItemChosen(username,id){
+ if(id == "move"){
+ var iFrameURL = "/og/thingPopup.html?thingID=" + thingID + "&spaceID=" + space.id;
+ var style = "width: 270px; height: 420px;";
+ space.showInfoPanel(thingID, username, "<iframe src='" + iFrameURL + "' style='" + style + "' />");
+ return "Showed move info panel";
+ } else if (id == "monkey") {
+ space.showInfoPanel(thingID, username, "<div><img src='/og/icons/32x32/face-monkey.png'/></div> ");
+ return "Showed Monkey";
+ } else {
+ return "Unknown item";
+ }
}
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-01 15:22:48
|
Revision: 318
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=318&view=rev
Author: trevorolio
Date: 2007-09-01 08:22:48 -0700 (Sat, 01 Sep 2007)
Log Message:
-----------
Added populate directory into which we'll pour templates, space docs, and account docs which should be loaded for whitebox testing or demo
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/populate/
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-09-01 00:22:31 UTC (rev 317)
+++ maven/trunk/ogoglio-server/pom.xml 2007-09-01 15:22:48 UTC (rev 318)
@@ -98,11 +98,9 @@
<includes>
<include>mail/*</include>
</includes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
<excludes>
<exclude>siteTemplates</exclude>
+ <exclude>populate</exclude>
</excludes>
</resource>
</resources>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ian...@us...> - 2007-09-05 03:18:05
|
Revision: 361
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=361&view=rev
Author: iansmith
Date: 2007-09-04 20:18:04 -0700 (Tue, 04 Sep 2007)
Log Message:
-----------
Patched the POM again. This time we allow this (in the server directory):
mvn -Phot-deploy war:war cargo:deploy
to allow you to bypass the tests.
Added an example space with four things in it to the populate resources.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/populate/space-1
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-09-05 01:48:14 UTC (rev 360)
+++ maven/trunk/ogoglio-server/pom.xml 2007-09-05 03:18:04 UTC (rev 361)
@@ -14,6 +14,42 @@
<artifactId>ogoglio-server</artifactId>
<packaging>war</packaging>
+
+ <profiles>
+ <profile>
+ <id>hot-deploy</id>
+ <build>
+ <plugins>
+ <!-- CARGO CONFIG:INSTALL TO RUNNING SERVER -->
+ <plugin>
+ <groupId>org.codehaus.cargo</groupId>
+ <artifactId>cargo-maven2-plugin</artifactId>
+ <version>0.3-SNAPSHOT</version>
+ <configuration>
+ <container>
+ <containerId>tomcat5x</containerId>
+ </container>
+ <!-- Configuration to use with the container -->
+ <configuration>
+ <type>existing</type>
+ <home>${ogoglio.tmp.tomcat5x}</home>
+ </configuration>
+ <deployables>
+ <deployable>
+ <properties>
+ <context>
+ ${pom.artifactId}
+ </context>
+ </properties>
+ </deployable>
+ </deployables>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
<!-- -->
<!-- BUILD -->
<!-- -->
@@ -158,8 +194,20 @@
<!-- Our plugin config for building templates -->
<plugin>
<groupId>com.ogoglio</groupId>
- <artifactId>dev-plugins</artifactId>
+ <artifactId>og-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
+
+ <!-- these are for the populate -->
+ <configuration>
+ <serviceURI>${ogoglio.baseURL}</serviceURI>
+ <username>${ogoglio.bootstrapUser}</username>
+ <password>${ogoglio.bootstrapUserPW}</password>
+ <baseDir>src/main/resources/populate</baseDir>
+ <goalPrefix>og</goalPrefix>
+ </configuration>
+
+
+ <!-- bound to compile for running templates -->
<executions>
<execution>
<phase>compile</phase>
@@ -199,11 +247,11 @@
<version>3.0.1</version>
</dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <!-- version, scope, optional inherited but overwritable -->
- </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <!-- version, scope, optional inherited but overwritable -->
+ </dependency>
<dependency>
<groupId>com.sun</groupId>
Added: maven/trunk/ogoglio-server/src/main/resources/populate/space-1
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/space-1 (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/space-1 2007-09-05 03:18:04 UTC (rev 361)
@@ -0,0 +1,201 @@
+<space ownerusername="library" sealevel="0.0" simid="1"
+ displayname="Tech Office Space" maxguests="0" displaysea="false"
+ spaceid="1" published="false">
+ <thing templateid="42" rz="0.0" ry="0.0" rx="0.0" rw="1.0"
+ scalez="1.0" displayname="TV" scaley="1.0" templateowner="library"
+ scalex="1.0" possessionid="2" thingid="2" z="10.0" y="0.0" x="0.0"
+ ownerusername="library">
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.005" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Tube.001_Tube.002" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.001" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.002_Mesh" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.003" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Tube_Tube.001" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Sphere_Sphere.001" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.002" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.004" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ </thing>
+ <thing templateid="28" rz="0.0" ry="0.0" rx="0.0" rw="1.0"
+ scalez="1.0" displayname="WhiteBoard" scaley="1.0"
+ templateowner="library" scalex="1.0" possessionid="3" thingid="4"
+ z="-10.0" y="0.0" x="0.0" ownerusername="library">
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.003" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube" scaley="1.0" scalex="1.0" z="0.0" y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.002" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.004" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.001" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <page rz="-0.0" ry="1.0" width="4.0" pageid="1" rx="0.0"
+ rw="0.0" scalez="1.0" scaley="1.0" scalex="1.0"
+ contenttype="text/plain" z="0.1" y="2.0" x="0.0" height="2.0" />
+ </thing>
+ <thing templateid="21" rz="0.0" ry="0.0" rx="0.0" rw="1.0"
+ scalez="1.0" displayname="memex" scaley="1.0" templateowner="library"
+ scalex="1.0" possessionid="1" thingid="1" z="0.0" y="0.0" x="-10.0"
+ ownerusername="library">
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.008_Black" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.001_Cube.002" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.003" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.010" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.005_Cube.001" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.008" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube" scaley="1.0" scalex="1.0" z="0.0" y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.004" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.009" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.004_Cube.005" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.007" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.005" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.003_Cube.004" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.001" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.012_Cube.010" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.002_Cube.003" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.011_Cube.006" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.006" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.010_Black.002" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.009_Black.001" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cylinder.002" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.007_Metal" scaley="1.0" scalex="1.0" z="0.0" y="0.0"
+ x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Cube.006_Cube.007" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ </thing>
+ <thing templateid="25" rz="0.0" ry="0.0" rx="0.0" rw="1.0"
+ scalez="1.0" displayname="OfficeDesk" scaley="1.0"
+ templateowner="library" scalex="1.0" possessionid="4" thingid="3"
+ z="0.0" y="0.0" x="10.0" ownerusername="library">
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="drawer2_07_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="ChamferBox_02_-_Defau" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="feet_02_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="drawer3_02_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Object07_02_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="long_drawe_01_-_Defau" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="drawer4_02_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="Object07_03_-_Default" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ <shape rz="0.0" ry="0.0" rx="0.0" rw="1.0" scalez="1.0"
+ shapename="large_draw_02_-_Defau" scaley="1.0" scalex="1.0" z="0.0"
+ y="0.0" x="0.0" />
+ </thing>
+ <template ownerusername="library" templateid="28"
+ displayname="WhiteBoard">
+ <scriptfile
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ <geometry levelofdetail="0"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ <supportfile filename="WhiteBoard.mtl"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ </template>
+ <template ownerusername="library" templateid="42"
+ displayname="TV">
+ <scriptfile
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:23 PM PDT" />
+ <geometry levelofdetail="0"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:23 PM PDT" />
+ <supportfile filename="TV.mtl"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ </template>
+ <template ownerusername="library" templateid="25"
+ displayname="OfficeDesk">
+ <supportfile filename="OfficeDesk.mtl"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ <geometry levelofdetail="0"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:24 PM PDT" />
+ </template>
+ <template ownerusername="library" templateid="21"
+ displayname="memex">
+ <geometry levelofdetail="0"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:23 PM PDT" />
+ <supportfile filename="memex.mtl"
+ lastmodifiedUTC="Tuesday, September 4, 2007 7:01:23 PM PDT" />
+ </template>
+</space>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-06 13:16:20
|
Revision: 373
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=373&view=rev
Author: trevorolio
Date: 2007-09-06 06:16:21 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
Improved the account checks when accepting or denying space modifications via web api.
Avoided a null pointer exception in populate mojo when the populate dir was not configured.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
Property Changed:
----------------
maven/trunk/ogoglio-server/
Property changes on: maven/trunk/ogoglio-server
___________________________________________________________________
Name: svn:ignore
-
target
mailTestFiles
tomcat5x.*
+
target
mailTestFiles
tomcat5x.*
velocity.log
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-09-06 13:16:17 UTC (rev 372)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-09-06 13:16:21 UTC (rev 373)
@@ -23,6 +23,7 @@
import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.xml.PossessionDocument;
import com.ogoglio.xml.SpaceDocument;
+import com.ogoglio.xml.SpaceMemberDocument;
public class SpacePersistTasks {
@@ -77,6 +78,7 @@
task.setSessionFactory(sessionFactory);
return (SpaceRecord) task.execute();
}
+
public static SpaceRecord[] findAllSpaces(SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
@@ -86,7 +88,7 @@
};
task.setSessionFactory(sessionFactory);
return (SpaceRecord[]) task.execute();
- }
+ }
public static SpaceRecord[] findSpacesByOwnerUsername(final String ownerUsername, final SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
@@ -182,7 +184,7 @@
Query possQuery = session.getNamedQuery(PossessionPersistTasks.POSSESSIONS_BY_SPACE_ID);
possQuery.setLong("spaceID", record.getSpaceID());
//??? Should this been done here?
- PossessionRecord[] possessionRecords = (PossessionRecord[])possQuery.list().toArray(new PossessionRecord[0]);
+ PossessionRecord[] possessionRecords = (PossessionRecord[]) possQuery.list().toArray(new PossessionRecord[0]);
for (int i = 0; i < possessionRecords.length; i++) {
possessionRecords[i].setSpaceID(PossessionDocument.NO_SPACE);
possessionRecords[i].setThingID(PossessionDocument.NO_THING);
@@ -192,7 +194,7 @@
return Boolean.TRUE;
}
};
-
+
task.setSessionFactory(sessionFactory);
return Boolean.TRUE == task.execute();
}
@@ -219,8 +221,7 @@
}
if (account != null) {
- if (account.isFrozen()) {
- //if (account.getFrozenUntil() != null && account.getFrozenUntil().getTime() > System.currentTimeMillis()) {
+ if (account.isFrozen()) {
return Boolean.FALSE;
}
@@ -249,4 +250,49 @@
task.setSessionFactory(sessionFactory);
return ((Boolean) task.execute()) == Boolean.TRUE;
}
+
+ public static boolean canWriteSpace(final AccountRecord account, final long spaceID, SessionFactory sessionFactory) throws PersistException {
+ if (account == null) { //happens for guests, who can never write
+ return false;
+ }
+ if(account.isFrozen()){ //tsk tsk
+ return false;
+ }
+
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ Query query = hibernateSession.getNamedQuery(SPACE_BY_SPACE_ID);
+ query.setLong("spaceID", spaceID);
+ SpaceRecord space = (SpaceRecord) query.uniqueResult();
+ if (space == null) {
+ return Boolean.FALSE;
+ }
+
+ if (account.getUsername().equals(space.getOwnerUsername())) {
+ return Boolean.TRUE;
+ }
+
+ if (!space.isPublished()) {
+ return Boolean.FALSE;
+ }
+
+ Query membersQuery = hibernateSession.getNamedQuery(SpaceMemberPersistTasks.SPACE_MEMBERS_BY_SPACE_ID);
+ membersQuery.setLong("spaceID", spaceID);
+ SpaceMemberRecord[] members = (SpaceMemberRecord[]) membersQuery.list().toArray(new SpaceMemberRecord[0]);
+
+ for (int i = 0; i < members.length; i++) {
+ if (account.getUsername().equals(members[i].getMemberUsername())) {
+ if(members[i].getRole() == SpaceMemberDocument.BUILDER_ROLE || members[i].getRole() == SpaceMemberDocument.EDITOR_ROLE){
+ return Boolean.TRUE;
+ }
+ return Boolean.FALSE;
+ }
+ }
+
+ return Boolean.FALSE;
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return ((Boolean) task.execute()) == Boolean.TRUE;
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-06 13:16:17 UTC (rev 372)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-06 13:16:21 UTC (rev 373)
@@ -43,6 +43,7 @@
import com.ogoglio.sim.script.ScriptHTTPRequest;
import com.ogoglio.sim.script.ScriptHTTPResponse;
import com.ogoglio.site.AuthServlet;
+import com.ogoglio.site.AuthenticatedSiteResource;
import com.ogoglio.site.OgoglioServletBase;
import com.ogoglio.site.SpaceServlet;
import com.ogoglio.util.Log;
@@ -90,7 +91,7 @@
public void destroy() {
super.destroy();
sim.cleanup();
- Log.info("Destroy called on SimServlet. Cleaning up sim...");
+ Log.info("Destroy called on SimServlet. Cleaning up sim...");
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
@@ -209,15 +210,15 @@
}
public void doDelete(HttpServletRequest request, HttpServletResponse response, String[] pathElementsauthedAccount) throws ServletException, IOException {
- long spaceID = Long.parseLong(pathElementsauthedAccount[pathElementsauthedAccount.length-1]);
-
- SpaceSimulator spaceSim = sim.getOrCreateSpaceSimulator(spaceID);
- spaceSim.setDeleted();
- sim.shutdownSpaceSim(spaceID);
- response.setStatus(HttpServletResponse.SC_OK);
- response.setContentLength(0);
- return;
- }
+ long spaceID = Long.parseLong(pathElementsauthedAccount[pathElementsauthedAccount.length - 1]);
+
+ SpaceSimulator spaceSim = sim.getOrCreateSpaceSimulator(spaceID);
+ spaceSim.setDeleted();
+ sim.shutdownSpaceSim(spaceID);
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentLength(0);
+ return;
+ }
}
private class SettingsResource extends SiteResource {
@@ -760,9 +761,19 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
doScriptService(request, response, pathElements);
}
-
+
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- doScriptService(request, response, pathElements);
+ try {
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if (authedAccount == null) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+ doScriptService(request, response, pathElements);
+ } catch (PersistException e) {
+ e.printStackTrace();
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
}
public void doScriptService(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
@@ -774,39 +785,33 @@
return;
}
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
long thingID = Long.parseLong(pathElements[4]);
ThingDocument thingDoc = simulator.getThingDocument(thingID);
- if(thingDoc == null){
+ if (thingDoc == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
+
Map parameterMap = request.getParameterMap();
//Tomcat is f'ing broken in that if there are no parameters it actually adds one with the key String "null" and a "" value: TFS
- if(parameterMap.size() == 1 && (parameterMap.containsKey("null"))){
+ if (parameterMap.size() == 1 && (parameterMap.containsKey("null"))) {
parameterMap = new HashMap();
}
ScriptHTTPResponse scriptResponse = simulator.callThingHTTPService(thingID, request.getMethod(), parameterMap);
response.setStatus(scriptResponse.getStatus());
- if(scriptResponse.getStatus() != 200){
+ if (scriptResponse.getStatus() != 200) {
return;
}
sendStringResponse(scriptResponse.getMessage(), scriptResponse.getMIMEType(), response);
- } catch (PersistException e){
+ } catch (PersistException e) {
e.printStackTrace();
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
- }
+ }
}
-
+
private class ThingResource extends SiteResource {
public ThingResource() {
@@ -825,7 +830,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -877,18 +882,18 @@
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
long requestedSpaceID = Long.parseLong(pathElements[pathElements.length - 3]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(requestedSpaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
+
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
ThingDocument proposedDoc = new ThingDocument(parseXML(request.getInputStream()));
@@ -930,7 +935,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -980,15 +985,14 @@
public void doDelete(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
-
long requestedSpaceID = Long.parseLong(pathElements[2]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(requestedSpaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
- if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -1036,18 +1040,19 @@
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
long requestedSpaceID = Long.parseLong(pathElements[2]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(requestedSpaceID, getSessionFactory());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
+
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
DoorDocument proposedDoc = new DoorDocument(parseXML(request.getInputStream()));
@@ -1148,7 +1153,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-06 13:16:17 UTC (rev 372)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-06 13:16:21 UTC (rev 373)
@@ -58,6 +58,7 @@
public static final String INCLUDE_CHILDREN_PARAM = "children";
private MessageProxy messageProxy = null;
+
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
@@ -102,7 +103,12 @@
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
-
+ String accountLevel = authedAccount.getAccountlevel();
+ if(!AccountDocument.ACCOUNT_LEVEL_ADMIN.equals(accountLevel) && !AccountDocument.ACCOUNT_LEVEL_ADVANCED.equals(accountLevel) && !AccountDocument.ACCOUNT_LEVEL_PRO.equals(accountLevel)){
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+
XMLElement spaceElement = parseXML(request.getInputStream());
if (!SpaceDocument.NAME.equals(spaceElement.getName())) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
@@ -133,21 +139,20 @@
sendStringResponse(DocumentFactory.documentFromRecord(record).toElement().toString(), "text/xml", response);
}
-
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, IOException {
- if(authedAccount == null || !AccountDocument.ACCOUNT_LEVEL_ADMIN.equals(authedAccount.getAccountlevel())) {
+ if (authedAccount == null || !AccountDocument.ACCOUNT_LEVEL_ADMIN.equals(authedAccount.getAccountlevel())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
ServiceStateDocument proposedDoc = new ServiceStateDocument(parseXML(request.getInputStream()));
ServiceStateRecord record = ServiceStateTasks.updateServiceState(proposedDoc, getSessionFactory());
- if(record == null) {
+ if (record == null) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
sendStringResponse(DocumentFactory.documentFromRecord(record).toElement().toString(), "text/xml", response);
}
-}
+ }
private class SpaceResource extends AuthenticatedSiteResource {
public SpaceResource() {
@@ -191,7 +196,7 @@
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
+ if (!canUseMethodOnSpace(request.getMethod(), authedAccount, spaceRecord)) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -235,7 +240,7 @@
return;
}
- if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !spaceRecord.getOwnerUsername().equals(authedAccount.getUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -261,6 +266,15 @@
}
}
+ private boolean canUseMethodOnSpace(String method, AccountRecord authedAccount, SpaceRecord spaceRecord) throws PersistException {
+ if(("HEAD".equals(method) || "GET".equals(method))){
+ return SpacePersistTasks.canReadSpace(authedAccount, spaceRecord.getSpaceID(), getSessionFactory());
+ } else if("POST".equals(method) || "DELETE".equals(method) || "PUT".equals(method)){
+ return SpacePersistTasks.canWriteSpace(authedAccount, spaceRecord.getSpaceID(), getSessionFactory());
+ }
+ return false;
+ }
+
private class DoorsResource extends DescendingSiteResource { //NOTE this will proxy eveything below "door" in the URL space
public DoorsResource() {
@@ -289,11 +303,10 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (!canRead(authedAccount, spaceRecord)) {
+ if(!canUseMethodOnSpace(method, authedAccount, spaceRecord)){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
-
SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
if (simRecord == null) {
Log.error("Could not assign a sim to space " + spaceRecord.getSpaceID());
@@ -349,7 +362,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (!canRead(authedAccount, spaceRecord)) {
+ if(!canUseMethodOnSpace(method, authedAccount, spaceRecord)){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -385,10 +398,6 @@
}
}
- private boolean canRead(AccountRecord authedAccount, SpaceRecord spaceRecord) throws PersistException {
- return SpacePersistTasks.canReadSpace(authedAccount, spaceRecord.getSpaceID(), getSessionFactory());
- }
-
private class LogResource extends DescendingSiteResource { //NOTE this will proxy eveything below "log" in the URL space
public LogResource() {
@@ -397,12 +406,6 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws IOException {
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
long spaceID = Long.parseLong(pathElements[1]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
@@ -410,7 +413,8 @@
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if(!canUseMethodOnSpace(request.getMethod(), authedAccount, spaceRecord)){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -466,11 +470,6 @@
private void doProxy(HttpServletRequest request, String method, HttpServletResponse response, String[] pathElements) throws IOException {
try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
long spaceID = Long.parseLong(pathElements[1]);
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
@@ -478,7 +477,8 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if(authedAccount == null || !spaceRecord.getOwnerUsername().equals(authedAccount.getUsername())){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -538,7 +538,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (!canRead(authedAccount, spaceRecord)) {
+ if(!canUseMethodOnSpace(request.getMethod(), authedAccount, spaceRecord)){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -592,7 +592,7 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -614,16 +614,11 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
String memberUsername = pathElements[pathElements.length - 1];
SpaceMemberRecord memberRec = SpaceMemberPersistTasks.findSpaceMemberByUsername(spaceID, memberUsername, sessionFactory);
if (memberRec == null) {
@@ -646,16 +641,11 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
String memberUsername = pathElements[pathElements.length - 1];
SpaceMemberRecord memberRec = SpaceMemberPersistTasks.findSpaceMemberByUsername(spaceID, memberUsername, getSessionFactory());
if (memberRec == null) {
@@ -687,16 +677,11 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
SpaceMemberDocument newMemberDoc = new SpaceMemberDocument(parseXML(request.getInputStream()));
SpaceMemberRecord rec = SpaceMemberPersistTasks.createSpaceMember(spaceID, newMemberDoc.getMemberUsername(), newMemberDoc.isBanned(), getSessionFactory());
@@ -716,16 +701,11 @@
return;
}
- if (!authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (authedAccount == null || !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- if (!canRead(authedAccount, spaceRecord)) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
-
XMLElement result = new XMLElement("list");
SpaceMemberRecord[] memberRecords = SpaceMemberPersistTasks.findSpaceMembersBySpaceID(spaceRecord.getSpaceID(), getSessionFactory());
for (int i = 0; i < memberRecords.length; i++) {
@@ -743,7 +723,7 @@
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements, AccountRecord authedAccount) throws PersistException, ServletException, IOException {
- if (!AccountDocument.ACCOUNT_LEVEL_ADMIN.equals(authedAccount.getAccountlevel())) {
+ if (authedAccount == null || !AccountDocument.ACCOUNT_LEVEL_ADMIN.equals(authedAccount.getAccountlevel())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-11 20:45:06
|
Revision: 393
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=393&view=rev
Author: trevorolio
Date: 2007-09-11 13:45:06 -0700 (Tue, 11 Sep 2007)
Log Message:
-----------
Add firebug console safety to ogoglio.js
Modified Paths:
--------------
maven/trunk/ogoglio-server/.classpath
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
Modified: maven/trunk/ogoglio-server/.classpath
===================================================================
--- maven/trunk/ogoglio-server/.classpath 2007-09-11 20:44:28 UTC (rev 392)
+++ maven/trunk/ogoglio-server/.classpath 2007-09-11 20:45:06 UTC (rev 393)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="src/main/resources/siteTemplates" path="src/main/resources/siteTemplates"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="src/main/resources/hibernate" path="src/main/resources/hibernate"/>
<classpathentry excluding="**" kind="src" output="src/main/resources/log4j" path="src/main/resources/log4j"/>
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-11 20:44:28 UTC (rev 392)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-11 20:45:06 UTC (rev 393)
@@ -6,6 +6,14 @@
return locLink.protocol + "//" + locLink.host + appPath;
}
+// Ignores Firebug (http://www.getfirebug.com/) console calls for browsers without firebug
+if(!window.console || !console.firebug){
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i){
+ window.console[names[i]] = function() {}
+ }
+}
//BEGIN GENERAL UTILS
function parseLocationParameters(){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-09-27 18:06:48
|
Revision: 448
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=448&view=rev
Author: trevorolio
Date: 2007-09-27 11:06:51 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
Halfway through a grand avatar rewhack.
In this half I switch over to using downloadable wadges of avatar data instead of in-jar resources for avatar data.
Removed the GeomtryProvider interface, which is now replaced by TemplateDataProvider and BodyDataProvider interfaces which are used to fill the J3DDataManager with cached versions of all network accessed resources. This allows us to control memory usage, but also (eventually) reduces our memory footprint as we only make copies of data which is avatar specific.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/thingPopup.html
Removed Paths:
-------------
maven/trunk/ogoglio-server/src/main/resources/populate/template-23/OfficeBuilding.blend1
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/pom.xml 2007-09-27 18:06:51 UTC (rev 448)
@@ -89,13 +89,35 @@
<!-- PLUGINS -->
<!-- -->
<plugins>
-
- <!-- DEPENDENCY PLUGIN: We need to pull in applets -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
+
<execution>
+ <id>copy-body</id>
+ <phase>test</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>
+ ${project.build.directory}/${pom.artifactId}-${version}/WEB-INF/classes
+ </outputDirectory>
+ <stripVersion>true</stripVersion>
+ <artifactItems>
+ <artifactItem>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>
+ ogoglio-body-sim
+ </artifactId>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+
+ <!-- We need to pull in applets -->
+ <execution>
<id>copy-applets</id>
<phase>test</phase>
<goals>
@@ -114,6 +136,18 @@
</artifactId>
</artifactItem>
<artifactItem>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>
+ ogoglio-body-mike
+ </artifactId>
+ </artifactItem>
+ <artifactItem>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>
+ ogoglio-body-andrea
+ </artifactId>
+ </artifactItem>
+ <artifactItem>
<groupId>com.ogoglio</groupId>
<artifactId>
ogoglio-body-editor-applet
@@ -199,7 +233,7 @@
<server>localMachine</server>
<path>/og</path>
</configuration>
-
+
<executions>
<execution>
<phase>install</phase>
@@ -209,7 +243,7 @@
</goals>
</execution>
</executions>
-
+
</plugin>
</plugins>
</build>
@@ -272,9 +306,6 @@
<artifactId>ogoglio-appdev</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
- <!-- -->
- <!-- BOGUS DEPENDENCIES-->
- <!-- -->
<dependency>
<groupId>com.ogoglio</groupId>
<artifactId>ogoglio-viewer-applet</artifactId>
@@ -293,7 +324,24 @@
<version>0.0.1-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
-
+ <dependency>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>ogoglio-body-mike</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>ogoglio-body-andrea</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.ogoglio.body</groupId>
+ <artifactId>ogoglio-body-sim</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
</dependencies>
</project>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-09-27 18:06:51 UTC (rev 448)
@@ -21,26 +21,27 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
+import java.util.zip.ZipInputStream;
import javax.media.j3d.Transform3D;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import com.ogoglio.client.UserInputListener;
+import com.ogoglio.client.model.BodyDataProvider;
import com.ogoglio.client.model.Door;
-import com.ogoglio.client.model.GeometryProvider;
import com.ogoglio.client.model.Page;
import com.ogoglio.client.model.Shape;
import com.ogoglio.client.model.Space;
import com.ogoglio.client.model.SplinePath;
import com.ogoglio.client.model.Template;
+import com.ogoglio.client.model.TemplateDataProvider;
import com.ogoglio.client.model.Thing;
import com.ogoglio.client.model.User;
import com.ogoglio.sim.script.ScriptHTTPResponse;
import com.ogoglio.sim.script.SpaceScriptEngine;
import com.ogoglio.util.ArgumentUtils;
import com.ogoglio.util.BlockingQueue;
-import com.ogoglio.util.BodyConstants;
import com.ogoglio.util.Log;
import com.ogoglio.util.UIConstants;
import com.ogoglio.util.BlockingQueue.QueueClosedException;
@@ -81,6 +82,8 @@
// a flag that mark this simulator to be deleted after it will be shutdown
private boolean deleted = false;
+ private InSimTemplateDataProvider templateDataProvider = new InSimTemplateDataProvider();
+
public SpaceSimulator(SpaceDocument spaceDocument, Listener listener) {
ArgumentUtils.assertNotNull(listener);
this.listener = listener;
@@ -91,7 +94,7 @@
space = new Space(new SimulatorSpaceContext(), spaceDocument.getSpaceID(), spaceDocument.getDisplayName(), spaceDocument.getOwnerUsername(), spaceDocument.getDisplaySea(), spaceDocument.getSeaLevel());
//TODO evaluate whether we should stop using Java3D on the sim side to calculate collision and motion (gut feeling: hell yes!)
- renderer = new J3DRenderer(space, null, new InSimInputListener(), new InSimErrorGeometryProvider(), true);
+ renderer = new J3DRenderer(space, null, new InSimInputListener(), templateDataProvider, new InSimBodyDataProvider(), true);
renderer.startRenderer();
renderer.setSimCamera(); //Sigh, you have to add a view before it will schedule the behavior
@@ -144,42 +147,6 @@
private class SimulatorSpaceContext implements Space.Context {
- public InputStream getTemplateGeometryStream(String ownerUsername, long templateID, int lodIndex) {
- Template template = space.getTemplate(templateID);
- if (template == null) {
- return null;
- }
- return listener.getTemplateGeometryStream(templateID, lodIndex);
- }
-
- public InputStream getTemplateResourceStream(String ownerUsername, long templateID, String name) throws IOException {
- Template template = space.getTemplate(templateID);
- if (template == null) {
- return null;
- }
- return listener.getTemplateResourceStream(templateID, name);
- }
-
- public InputStream getThingAnimationStream(long thingID, long animationID) throws IOException {
- return null;
- }
-
- public InputStream getUserAnimationStream(String username, long animationID) throws IOException {
- return BodyConstants.getUserAnimation((int) animationID);
- }
-
- public InputStream getUserSkinMapStream(String username) throws IOException {
- User user = space.getUser(username);
- if(user == null){
- return null;
- }
- if(user.getBody().isMale()){
- return UIConstants.getResource(BodyConstants.MALE_SMAP_PATH);
- } else {
- return UIConstants.getResource(BodyConstants.FEMALE_SMAP_PATH);
- }
- }
-
public String getThingScript(long thingID) throws IOException {
Thing thing = space.getThing(thingID);
if (thing == null) {
@@ -188,18 +155,6 @@
return listener.getTemplateScript(thing.getTemplate().getTemplateID());
}
- public InputStream getUserGeometryStream(String username, String name) throws IOException {
- User user = space.getUser(username);
- if(user == null){
- return null;
- }
- if(user.getBody().isMale()){
- return UIConstants.getResource(BodyConstants.MALE_AVATAR_PATH);
- } else {
- return UIConstants.getResource(BodyConstants.FEMALE_AVATAR_PATH);
- }
- }
-
public InputStream getPageContentStream(long thingID, long pageID) {
return null; //we don't need to render pages, do we?
}
@@ -247,6 +202,9 @@
while (!cleaned) {
try {
SpaceEvent event = (SpaceEvent) queue.dequeue();
+ if(cleaned){
+ return;
+ }
if (SpaceEvent.ADD_USER_EVENT.equals(event.getName())) {
listener.generatedSpaceEvent(event, SpaceSimulator.this);
log("added user " + event.getStringProperty(SpaceEvent.USERNAME));
@@ -383,22 +341,13 @@
// this is a hack to play pre-baked animations
// TODO create a user animation record and a method to dl and play them
- if(chatMessage.startsWith("/") && chatMessage.length() > 1){
+ if (chatMessage.startsWith("/") && chatMessage.length() > 1) {
String command = chatMessage.substring(1);
- boolean sentAnimation = false;
- for (int i = 0; i < BodyConstants.USER_ANIMATION_COMMANDS.length; i++) {
- if(BodyConstants.USER_ANIMATION_COMMANDS[i].equals(command)){
- SpaceEvent playAnimationEvent = new SpaceEvent(SpaceEvent.PLAY_ANIMATION_EVENT);
- playAnimationEvent.setProperty(SpaceEvent.USERNAME, user.getUsername());
- playAnimationEvent.setProperty(SpaceEvent.ANIMATION_ID, new Long(i));
- listener.generatedSpaceEvent(playAnimationEvent, SpaceSimulator.this);
- sentAnimation = true;
- break;
- }
- }
- if(sentAnimation){
- continue;
- }
+ SpaceEvent playAnimationEvent = new SpaceEvent(SpaceEvent.PLAY_ANIMATION_EVENT);
+ playAnimationEvent.setProperty(SpaceEvent.USERNAME, user.getUsername());
+ playAnimationEvent.setProperty(SpaceEvent.ANIMATION_NAME, command);
+ listener.generatedSpaceEvent(playAnimationEvent, SpaceSimulator.this);
+ continue;
}
chatMessage = markdownChatMessage(chatMessage);
@@ -409,10 +358,7 @@
listener.generatedSpaceEvent(markedUpEvent, SpaceSimulator.this);
- } else if (((SpaceEvent.THING_CLICKED_EVENT.equals(event.getName()))) ||
- ((SpaceEvent.THING_CONTEXT_CLICKED_EVENT.equals(event.getName()))) ||
- ((SpaceEvent.THING_CONTEXT_SELECTION_MADE_EVENT.equals(event.getName())))
- ){
+ } else if (((SpaceEvent.THING_CLICKED_EVENT.equals(event.getName()))) || ((SpaceEvent.THING_CONTEXT_CLICKED_EVENT.equals(event.getName()))) || ((SpaceEvent.THING_CONTEXT_SELECTION_MADE_EVENT.equals(event.getName())))) {
String username = event.getStringProperty(SpaceEvent.USERNAME);
User user = space.getUser(username);
if (user == null) {
@@ -438,7 +384,7 @@
log("Internal server error: " + e);
e.printStackTrace();
} catch (Throwable e) {
- Log.error("Error handling space event",e);
+ Log.error("Error handling space event", e);
}
}
}
@@ -1033,30 +979,37 @@
}
}
- private class InSimErrorGeometryProvider implements GeometryProvider {
-
- public InputStream getAnimationStream(long animationID) throws IOException {
- return null;
+ private class InSimBodyDataProvider implements BodyDataProvider {
+ public ZipInputStream getBodyData(String bodyName) {
+ return new ZipInputStream(getClass().getClassLoader().getResourceAsStream("ogoglio-body-sim.jar"));
}
+ }
- public InputStream getGeometryStream(int lodIndex) throws IOException {
- if (lodIndex != 0) {
+ private class InSimTemplateDataProvider implements TemplateDataProvider {
+
+ public InputStream getTemplateGeometry(String username, long templateID, int lod) {
+ Template template = space.getTemplate(templateID);
+ if (template == null) {
return null;
}
- return UIConstants.getResource("templates/loading.obj");
+ return listener.getTemplateGeometryStream(templateID, lod);
}
- public InputStream getSkinMapStream() throws IOException {
- return null;
+ public InputStream getTemplateResource(String username, long templateID, String resourceName) {
+ Template template = space.getTemplate(templateID);
+ if (template == null) {
+ return null;
+ }
+ return listener.getTemplateResourceStream(templateID, resourceName);
}
- public InputStream getSubGeometryStream(String name) throws IOException {
- if ("loading.mtl".equals(name)) {
- return UIConstants.getResource("templates/loading.mtl");
+ public String getTemplateScript(String username, long templateID){
+ Template template = space.getTemplate(templateID);
+ if (template == null) {
+ return null;
}
- return null;
+ return listener.getTemplateScript(templateID);
}
-
}
private class InSimInputListener implements UserInputListener {
@@ -1084,4 +1037,8 @@
public void mouseContextClickedThing(Thing thing, String name, int x, int y) {
}
}
+
+ public TemplateDataProvider getTemplateDataProvider() {
+ return templateDataProvider;
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-09-27 18:06:51 UTC (rev 448)
@@ -118,7 +118,7 @@
}
public void constructThingScript(Thing thing) throws IOException {
- String script = thing.getScript();
+ String script = spaceSimulator.getTemplateDataProvider().getTemplateScript(thing.getTemplate().getOwnerUsername(), thing.getTemplate().getTemplateID());
if (script == null) {
spaceSimulator.log("Constructed scriptless thing " + thing.getThingID());
return;
@@ -464,6 +464,6 @@
public void shapeMotionStopped(Shape shape, Transform3D position) {
}
- public void userAnimationStarted(User user, long animationID) {
+ public void userAnimationStarted(User user, String animationName) {
}
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-27 18:06:51 UTC (rev 448)
@@ -74,7 +74,7 @@
public void init(ServletConfig config) throws ServletException {
super.init(config);
- System.out.println("IN INIT:"+config.getServletName()+","+config.getServletContext().getServletContextName());
+ System.out.println("REALLY IN INIT:"+config.getServletName()+","+config.getServletContext().getServletContextName());
try {
Context envCtx = (Context) initCtx.lookup("java:comp/env");
simURI = new URI((String) envCtx.lookup("ogoglio/baseSimURL"));
@@ -127,7 +127,6 @@
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- System.out.println("FART: SERVICE:"+request.getPathInfo());
super.service(request, response);
}
@@ -290,10 +289,8 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
long spaceID = Long.parseLong(pathElements[2]);
- System.out.println("FART: do get:"+spaceID);
try {
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
- System.out.println("FART: do get:"+spaceID+" w/"+spaceRecord.getSimID());
if (spaceRecord == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
@@ -355,7 +352,6 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
- System.out.println("FART: do post:"+spaceID+","+spaceRecord.getSimID());
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-27 18:06:51 UTC (rev 448)
@@ -481,10 +481,8 @@
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
- System.out.println("FART: PROXY authed:"+authedAccount.getUsername());
SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
- System.out.println("FART PROXY: "+simRecord.getSimID()+","+simRecord.getSimURI());
if (simRecord == null) {
Log.error("Could not assign a sim to space " + spaceRecord.getSpaceID());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -496,7 +494,6 @@
proxyURI += pathElements[i] + "/";
}
- System.out.println("FART: PROXY URI ABOUT TO GO:"+proxyURI);
proxy(new URI(proxyURI), method, request, response);
} catch (PersistException e) {
Deleted: maven/trunk/ogoglio-server/src/main/resources/populate/template-23/OfficeBuilding.blend1
===================================================================
(Binary files differ)
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-27 18:06:51 UTC (rev 448)
@@ -295,6 +295,14 @@
}
}
+Quaternion.prototype.add = function(q1){
+ this.x += q1.x;
+ this.y += q1.y;
+ this.z += q1.z;
+ this.w += q1.w;
+ this.normalize();
+}
+
Quaternion.prototype.mul = function(q1){
var nw = this.w * q1.w - this.x * q1.x - this.y * q1.y - this.z * q1.z;
var nx = this.w * q1.x + q1.w * this.x + this.y * q1.z - this.z * q1.y;
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/thingPopup.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/thingPopup.html 2007-09-27 18:06:47 UTC (rev 447)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/thingPopup.html 2007-09-27 18:06:51 UTC (rev 448)
@@ -98,17 +98,23 @@
function moveToX(x){
if(thingXML == null) return;
thingXML.setAttribute('x', x);
+ thingXML.setAttribute('y', yPosInput.value);
+ thingXML.setAttribute('z', zPosInput.value);
updateThing(spaceID, thingXML, handleThingDocument);
}
function moveToY(y){
if(thingXML == null) return;
+ thingXML.setAttribute('x', xPosInput.value);
thingXML.setAttribute('y', y);
+ thingXML.setAttribute('z', zPosInput.value);
updateThing(spaceID, thingXML, handleThingDocument);
}
function moveToZ(z){
if(thingXML == null) return;
+ thingXML.setAttribute('x', xPosInput.value);
+ thingXML.setAttribute('y', yPosInput.value);
thingXML.setAttribute('z', z);
updateThing(spaceID, thingXML, handleThingDocument);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2007-12-31 23:16:00
|
Revision: 657
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=657&view=rev
Author: trevorolio
Date: 2007-12-31 15:16:03 -0800 (Mon, 31 Dec 2007)
Log Message:
-----------
Fixed the rotted verification email setup. Requires the following additions:
To TOMCAT/conf/server.xml add
<Resource name="mailSession" auth="Container" type="javax.mail.Session" mail.smtp.host="localhost" />
<Environment name="mailDirectory" value="/tmp/" type="java.lang.String"/>
To ~/.m2/settings.xml add
<ogoglio.mailDirectory>
/tmp/
</ogoglio.mailDirectory>
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
maven/trunk/ogoglio-server/src/main/resources/mail/EmailValidationTemplate.txt
maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
maven/trunk/ogoglio-server/src/test/resources/basic-config.properties
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/pom.xml 2007-12-31 23:16:03 UTC (rev 657)
@@ -286,6 +286,7 @@
<groupId>com.sun</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
+ <scope>provided</scope>
</dependency>
<!-- need MYSQL for tests -->
<dependency>
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/AccountPersistTasks.java 2007-12-31 23:16:03 UTC (rev 657)
@@ -54,16 +54,16 @@
record.setLastName(document.getLastName());
}
- if (document.getVoiceURI() != null && !equals(record.getVoiceURI(), document.getVoiceURI())){
+ if (document.getVoiceURI() != null && !equals(record.getVoiceURI(), document.getVoiceURI())) {
dirty = true;
record.setVoiceURI(document.getVoiceURI());
}
-
- if (document.getTextURI() != null && !equals(record.getTextURI(), document.getTextURI())){
+
+ if (document.getTextURI() != null && !equals(record.getTextURI(), document.getTextURI())) {
dirty = true;
record.setTextURI(document.getTextURI());
}
-
+
if (document.getPassword() != null && !record.isValidPassword(document.getPassword())) {
if (AccountRecord.cleanPassword(document.getPassword()) != null) {
dirty = true;
@@ -81,21 +81,21 @@
}
}
}
-
- if(document.getBodyConfigurationID() != -1 && document.getBodyConfigurationID() != record.getDefaultBodyConfigurationID()){
+
+ if (document.getBodyConfigurationID() != -1 && document.getBodyConfigurationID() != record.getDefaultBodyConfigurationID()) {
Query bodyConfigQuery = hibernateSession.getNamedQuery(BodyPersistTasks.BODY_CONFIGURATION_BY_ID);
bodyConfigQuery.setLong("bodyConfigurationID", document.getBodyConfigurationID());
- BodyConfigurationRecord bodyConfigRecord = (BodyConfigurationRecord)bodyConfigQuery.uniqueResult();
- if(bodyConfigRecord == null){
+ BodyConfigurationRecord bodyConfigRecord = (BodyConfigurationRecord) bodyConfigQuery.uniqueResult();
+ if (bodyConfigRecord == null) {
return Boolean.FALSE;
}
- if(!record.getUsername().equals(bodyConfigRecord.getOwnerUsername())){
+ if (!record.getUsername().equals(bodyConfigRecord.getOwnerUsername())) {
return Boolean.FALSE;
}
dirty = true;
record.setDefaultBodyConfigurationID(document.getBodyConfigurationID());
}
-
+
if (dirty) {
hibernateSession.update(record);
return Boolean.TRUE;
@@ -164,16 +164,19 @@
}
Query bodyDataQuery = hibernateSession.getNamedQuery(BodyPersistTasks.BODY_DATA);
- BodyDataRecord[] bodyDataRecords = (BodyDataRecord[])bodyDataQuery.list().toArray(new BodyDataRecord[0]);
- if(bodyDataRecords.length == 0){
+ BodyDataRecord[] bodyDataRecords = (BodyDataRecord[]) bodyDataQuery.list().toArray(new BodyDataRecord[0]);
+ if (bodyDataRecords.length == 0) {
throw new IllegalStateException("No body data records!");
}
BodyConfigurationRecord bodyConfRecord = new BodyConfigurationRecord(username, "Body", bodyDataRecords[0].getBodyDataID(), null);
hibernateSession.save(bodyConfRecord);
-
+
record = new AccountRecord(username, accountlevel, email, bodyConfRecord.getBodyConfigurationID(), null, null);
hibernateSession.save(record);
+ PendingEmailValidationRecord validationRec = new PendingEmailValidationRecord(username, email);
+ hibernateSession.save(validationRec);
+
return record;
}
};
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-12-31 23:16:03 UTC (rev 657)
@@ -37,6 +37,9 @@
try {
mailDir = new File((String)envCtx.lookup("ogoglio/mailDirectory"));
+ if(mailDir != null && mailDir.length() == 0){
+ mailDir = null;
+ }
} catch (NamingException e) {
} // The media directory is where the MediaServlet will store your models, textures, scripts, and space documents
Modified: maven/trunk/ogoglio-server/src/main/resources/mail/EmailValidationTemplate.txt
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/mail/EmailValidationTemplate.txt 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/src/main/resources/mail/EmailValidationTemplate.txt 2007-12-31 23:16:03 UTC (rev 657)
@@ -1,7 +1,5 @@
-Hello from ${serviceName},
-
-Someone (maybe you) has requested that the address ${emailToValidate} be associated
-with an account at ${serviceName}. If that someone was you and you'd like to make that
+Someone (hopefully you) has requested that the address ${emailToValidate} be associated
+with an account at ${serviceURL}. If that someone was you and you'd like to make that
association, just click this link:
${validationURL}
@@ -9,8 +7,3 @@
If you did not make this request, don't worry. If you don't click that link then the
email will not be associated with the account and after a few days the request will be
deleted.
-
-Keep it real,
-
- - The folks from ${serviceName} at ${serviceURL}
-
Modified: maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2007-12-31 23:16:03 UTC (rev 657)
@@ -2,10 +2,11 @@
<Context reloadable="true" path="/og" >
<Realm className="org.apache.catalina.realm.MemoryRealm" />
- <ResourceLink name="jdbc/space"
- global="ogoglioDB"
- type="javax.sql.DataSource"/>
+ <ResourceLink name="mail/Session" global="mailSession" type="javax.mail.Session"/>
+ <ResourceLink name="ogoglio/mailDirectory" global="mailDirectory" type="java.lang.String"/>
+ <ResourceLink name="jdbc/space" global="ogoglioDB" type="javax.sql.DataSource"/>
+
<ResourceLink name="ogoglio/mediaURL" global="mediaURL" type="java.lang.String"/>
<ResourceLink name="ogoglio/baseURL" global="baseURL" type="java.lang.String"/>
<ResourceLink name="ogoglio/baseSimURL" global="baseSimURL" type="java.lang.String"/>
Modified: maven/trunk/ogoglio-server/src/test/resources/basic-config.properties
===================================================================
--- maven/trunk/ogoglio-server/src/test/resources/basic-config.properties 2007-12-31 23:15:54 UTC (rev 656)
+++ maven/trunk/ogoglio-server/src/test/resources/basic-config.properties 2007-12-31 23:16:03 UTC (rev 657)
@@ -2,4 +2,5 @@
ogoglio.testSpaceNumber = ${ogoglio.testSpaceNumber}
ogoglio.baseUrl = ${ogoglio.baseURL}
ogoglio.mediaDirectory = ${ogoglio.mediaDirectory}
+ogoglio.mailDirectory = ${ogoglio.mailDirectory}
ogoglio.baseSimUrl = ${ogoglio.baseSimURL}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tre...@us...> - 2008-02-13 04:10:44
|
Revision: 746
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=746&view=rev
Author: trevorolio
Date: 2008-02-12 20:10:45 -0800 (Tue, 12 Feb 2008)
Log Message:
-----------
Changed the pom for new Jane avatar.
NOTE: you will need to change your settings.xml to include these new values for bodies:
<ogoglio.bodyDataDisplayNames>Guest,Joe,Jane</ogoglio.bodyDataDisplayNames>
<ogoglio.bodyDataFileNames>ogoglio-body-guest.jar,ogoglio-body-joe.jar,ogoglio-body-jane.jar</ogoglio.bodyDataFileNames>
Added a few attachments for Jane.
We're no longer building Mike and Andrea.
Modified Paths:
--------------
maven/trunk/ogoglio-server/pom.xml
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.js
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/resources/populate/template-104/
maven/trunk/ogoglio-server/src/main/resources/populate/template-104/JaneBlueEyes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-104/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-104/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-105/
maven/trunk/ogoglio-server/src/main/resources/populate/template-105/JaneGreenEyes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-105/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-105/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-106/
maven/trunk/ogoglio-server/src/main/resources/populate/template-106/JaneBrownEyes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-106/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-106/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-107/
maven/trunk/ogoglio-server/src/main/resources/populate/template-107/JaneRedEyes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-107/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-107/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-108/
maven/trunk/ogoglio-server/src/main/resources/populate/template-108/JaneSportUnderwear.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-108/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-108/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-109/
maven/trunk/ogoglio-server/src/main/resources/populate/template-109/JaneJeansAndT-Shirt.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-109/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-109/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-110/
maven/trunk/ogoglio-server/src/main/resources/populate/template-110/JaneDressPantsAndShirt.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-110/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-110/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-111/
maven/trunk/ogoglio-server/src/main/resources/populate/template-111/JaneBrownShoes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-111/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-111/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-112/
maven/trunk/ogoglio-server/src/main/resources/populate/template-112/JaneBlackShoes.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-112/body.gif
maven/trunk/ogoglio-server/src/main/resources/populate/template-112/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-113/
maven/trunk/ogoglio-server/src/main/resources/populate/template-113/JaneBlackHairBun.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-113/hair.jpg
maven/trunk/ogoglio-server/src/main/resources/populate/template-113/hair.mtl
maven/trunk/ogoglio-server/src/main/resources/populate/template-113/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-114/
maven/trunk/ogoglio-server/src/main/resources/populate/template-114/JaneBrownHairBun.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-114/hair.jpg
maven/trunk/ogoglio-server/src/main/resources/populate/template-114/hair.mtl
maven/trunk/ogoglio-server/src/main/resources/populate/template-114/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-115/
maven/trunk/ogoglio-server/src/main/resources/populate/template-115/JaneRedHairBun.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-115/hair.jpg
maven/trunk/ogoglio-server/src/main/resources/populate/template-115/hair.mtl
maven/trunk/ogoglio-server/src/main/resources/populate/template-115/template.properties
maven/trunk/ogoglio-server/src/main/resources/populate/template-116/
maven/trunk/ogoglio-server/src/main/resources/populate/template-116/JaneBlueHairBun.obj
maven/trunk/ogoglio-server/src/main/resources/populate/template-116/hair.jpg
maven/trunk/ogoglio-server/src/main/resources/populate/template-116/hair.mtl
maven/trunk/ogoglio-server/src/main/resources/populate/template-116/template.properties
Modified: maven/trunk/ogoglio-server/pom.xml
===================================================================
--- maven/trunk/ogoglio-server/pom.xml 2008-02-13 04:08:09 UTC (rev 745)
+++ maven/trunk/ogoglio-server/pom.xml 2008-02-13 04:10:45 UTC (rev 746)
@@ -137,15 +137,9 @@
<artifactItem>
<groupId>com.ogoglio.body</groupId>
<artifactId>
- ogoglio-body-mike
+ ogoglio-body-joe
</artifactId>
</artifactItem>
- <artifactItem>
- <groupId>com.ogoglio.body</groupId>
- <artifactId>
- ogoglio-body-joe
- </artifactId>
- </artifactItem>
<artifactItem>
<groupId>com.ogoglio.body</groupId>
<artifactId>
@@ -155,7 +149,7 @@
<artifactItem>
<groupId>com.ogoglio.body</groupId>
<artifactId>
- ogoglio-body-andrea
+ ogoglio-body-jane
</artifactId>
</artifactItem>
<artifactItem>
@@ -215,7 +209,9 @@
</populateDir>
<reverseFile>/tmp/reverse.xml</reverseFile>
<goalPrefix>og</goalPrefix>
- <contextFile>${basedir}/src/main/webapp/META-INF/context.xml</contextFile>
+ <contextFile>
+ ${basedir}/src/main/webapp/META-INF/context.xml
+ </contextFile>
<tomcatDir>${tomcat.home}</tomcatDir>
</configuration>
@@ -347,16 +343,10 @@
</dependency>
<dependency>
<groupId>com.ogoglio.body</groupId>
- <artifactId>ogoglio-body-mike</artifactId>
+ <artifactId>ogoglio-body-joe</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>com.ogoglio.body</groupId>
- <artifactId>ogoglio-body-joe</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <scope>runtime</scope>
- </dependency>
<dependency>
<groupId>com.ogoglio.body</groupId>
<artifactId>ogoglio-body-guest</artifactId>
@@ -365,7 +355,7 @@
</dependency>
<dependency>
<groupId>com.ogoglio.body</groupId>
- <artifactId>ogoglio-body-andrea</artifactId>
+ <artifactId>ogoglio-body-jane</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-104/JaneBlueEyes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-104/JaneBlueEyes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-104/JaneBlueEyes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-104/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-104/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-104/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-104/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-104/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-105/JaneGreenEyes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-105/JaneGreenEyes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-105/JaneGreenEyes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-105/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-105/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-105/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-105/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-105/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-106/JaneBrownEyes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-106/JaneBrownEyes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-106/JaneBrownEyes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-106/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-106/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-106/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-106/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-106/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-107/JaneRedEyes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-107/JaneRedEyes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-107/JaneRedEyes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-107/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-107/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-107/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-107/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-107/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-108/JaneSportUnderwear.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-108/JaneSportUnderwear.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-108/JaneSportUnderwear.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-108/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-108/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-108/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-108/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-108/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-109/JaneJeansAndT-Shirt.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-109/JaneJeansAndT-Shirt.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-109/JaneJeansAndT-Shirt.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-109/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-109/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-109/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-109/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-109/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-110/JaneDressPantsAndShirt.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-110/JaneDressPantsAndShirt.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-110/JaneDressPantsAndShirt.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-110/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-110/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-110/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-110/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-110/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-111/JaneBrownShoes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-111/JaneBrownShoes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-111/JaneBrownShoes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-111/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-111/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-111/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-111/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-111/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-112/JaneBlackShoes.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-112/JaneBlackShoes.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-112/JaneBlackShoes.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1 @@
+#this space intentionally left blank
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-112/body.gif
===================================================================
(Binary files differ)
Property changes on: maven/trunk/ogoglio-server/src/main/resources/populate/template-112/body.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-112/template.properties
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-112/template.properties (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-112/template.properties 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,2 @@
+
+attachment: true
Added: maven/trunk/ogoglio-server/src/main/resources/populate/template-113/JaneBlackHairBun.obj
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/populate/template-113/JaneBlackHairBun.obj (rev 0)
+++ maven/trunk/ogoglio-server/src/main/resources/populate/template-113/JaneBlackHairBun.obj 2008-02-13 04:10:45 UTC (rev 746)
@@ -0,0 +1,943 @@
+# This file uses centimeters as units for non-parametric coordinates.
+mtllib hair.mtl
+g head
+usemtl hair
+v 0.043352 1.924765 -0.118718
+v 0.004995 1.960624 -0.107997
+v 0.012833 1.959457 -0.109494
+v 0.023167 1.954974 -0.112546
+v 0.031869 1.951483 -0.113179
+v 0.035393 1.943597 -0.116813
+v 0.039664 1.935219 -0.118189
+v 0.035150 1.890548 -0.113200
+v 0.036488 1.898638 -0.113742
+v 0.038701 1.914387 -0.116288
+v -0.000204 1.960701 -0.108189
+v -0.043764 1.924766 -0.118721
+v -0.005403 1.960628 -0.108055
+v -0.013242 1.959457 -0.109494
+v -0.023576 1.954974 -0.112546
+v -0.032278 1.951483 -0.113179
+v -0.035802 1.943597 -0.116813
+v -0.040077 1.935217 -0.118170
+v -0.039110 1.914387 -0.116288
+v 0.014506 1.971098 -0.116804
+v 0.028243 1.968062 -0.114339
+v 0.017438 1.970610 -0.137794
+v 0.023336 1.965553 -0.144445
+v 0.045666 1.911346 -0.126212
+v 0.045504 1.929734 -0.127432
+v 0.045386 1.925446 -0.149316
+v 0.040057 1.908959 -0.164484
+v 0.016041 1.965876 -0.158197
+v 0.022153 1.959096 -0.162758
+v 0.038401 1.939108 -0.166448
+v 0.031712 1.915594 -0.183875
+v 0.038691 1.941539 -0.150353
+v 0.031803 1.957904 -0.142166
+v 0.041303 1.951397 -0.122612
+v 0.034362 1.958631 -0.117682
+v 0.005276 1.971062 -0.119562
+v 0.007312 1.973623 -0.140091
+v 0.007428 1.964759 -0.161625
+v 0.043674 1.940465 -0.125925
+v 0.031235 1.948523 -0.160923
+v 0.032348 1.880912 -0.115884
+v 0.038092 1.886774 -0.112684
+v 0.040544 1.893396 -0.124731
+v 0.030710 1.877724 -0.140602
+v 0.038238 1.887826 -0.157705
+v 0.032031 1.892657 -0.177610
+v 0.025130 1.939132 -0.175783
+v 0.010013 1.948344 -0.183699
+v 0.017107 1.917242 -0.193499
+v 0.015473 1.889055 -0.189721
+v 0.021345 1.874377 -0.165719
+v 0.013902 1.869733 -0.145338
+v 0.016563 1.869172 -0.113164
+v -0.000289 1.965847 -0.153878
+v -0.000314 1.971131 -0.136538
+v -0.000259 1.970137 -0.118162
+v -0.000204 1.948322 -0.183899
+v -0.000204 1.916532 -0.195239
+v -0.000204 1.888847 -0.189780
+v -0.000203 1.872427 -0.165641
+v -0.000190 1.865232 -0.136131
+v -0.000187 1.869679 -0.112410
+v -0.028738 1.968141 -0.114081
+v -0.023749 1.965544 -0.144415
+v -0.017910 1.970577 -0.137648
+v -0.015022 1.971030 -0.116650
+v -0.045721 1.925257 -0.148800
+v -0.045991 1.929746 -0.127193
+v -0.046460 1.911676 -0.125850
+v -0.040213 1.909396 -0.164405
+v -0.022561 1.959096 -0.162758
+v -0.016450 1.965876 -0.158197
+v -0.038770 1.938865 -0.166403
+v -0.032179 1.915616 -0.184006
+v -0.032244 1.957881 -0.142094
+v -0.034907 1.958662 -0.117534
+v -0.041828 1.951380 -0.122518
+v -0.039111 1.941450 -0.150220
+v -0.008118 1.972707 -0.140692
+v -0.005826 1.971322 -0.118971
+v -0.007873 1.964665 -0.161648
+v -0.044162 1.940439 -0.125733
+v -0.031648 1.948431 -0.160861
+v -0.032817 1.880932 -0.115886
+v -0.031121 1.877843 -0.140375
+v -0.041209 1.893597 -0.124851
+v -0.035664 1.891096 -0.157082
+v -0.030831 1.893984 -0.174481
+v -0.025539 1.939042 -0.175768
+v -0.010422 1.948344 -0.183699
+v -0.017487 1.917382 -0.193159
+v -0.015882 1.889055 -0.189721
+v -0.021469 1.873717 -0.165949
+v -0.014252 1.869565 -0.145122
+v -0.016891 1.868810 -0.112086
+v 0.055470 1.811844 -0.053690
+v 0.085379 1.885946 -0.003693
+v 0.010702 1.941897 0.104062
+v 0.026834 1.942688 0.100013
+v 0.048104 1.941302 0.087820
+v 0.066015 1.935226 0.069175
+v 0.073268 1.929947 0.049889
+v 0.082059 1.916284 0.030904
+v 0.072768 1.830593 -0.044695
+v 0.075521 1.861152 -0.045690
+v 0.081549 1.896261 -0.028109
+v 0.028735 1.807220 -0.066908
+v -0.000000 1.942322 0.103969
+v -0.000000 1.806992 -0.067861
+v -0.055470 1.811844 -0.053690
+v -0.085386 1.885952 -0.003695
+v -0.010699 1.941999 0.103997
+v -0.026834 1.942688 0.100013
+v -0.048104 1.941301 0.087820
+v -0.066015 1.935226 0.069175
+v -0.073268 1.929947 0.049889
+v -0.082067 1.916248 0.030923
+v -0.072733 1.830503 -0.044831
+v -0.075414 1.860708 -0.045785
+v -0.081549 1.896261 -0.028109
+v -0.028735 1.807220 -0.066908
+v 0.030278 1.965964 0.098459
+v 0.058551 1.957602 0.095851
+v 0.036312 1.983982 0.081190
+v 0.048451 1.987674 0.063436
+v 0.094411 1.896390 -0.042214
+v 0.094079 1.912098 -0.001147
+v 0.093836 1.936993 -0.006337
+v 0.082867 1.938358 -0.056097
+v 0.033437 2.010657 0.046900
+v 0.046016 2.008473 0.028528
+v 0.079460 1.980778 -0.009464
+v 0.065691 1.979566 -0.067851
+v 0.080056 1.961612 0.022485
+v 0.065878 1.973048 0.051963
+v 0.085431 1.945192 0.051426
+v 0.071145 1.952219 0.068907
+v 0.011280 1.970429 0.094955
+v 0.015470 1.992035 0.083967
+v 0.015708 2.014682 0.040538
+v 0.090313 1.933089 0.023047
+v 0.064709 1.985137 0.015042
+v 0.067000 1.821266 -0.066074
+v 0.078824 1.824373 -0.051115
+v 0.083870 1.844641 -0.055077
+v 0.074294 1.854761 -0.084778
+v 0.079123 1.897387 -0.090539
+v 0.066347 1.936640 -0.102963
+v 0.052143 1.996102 -0.021054
+v 0.021030 2.022185 -0.013683
+v 0.035631 1.997678 -0.076763
+v 0.032268 1.951348 -0.124800
+v 0.044355 1.891132 -0.122349
+v 0.034624 1.851137 -0.114371
+v 0.034512 1.800093 -0.084652
+v -0.000175 2.003543 0.052231
+v -0.000227 1.982666 0.083732
+v -0.000113 1.966820 0.094969
+v 0.000000 2.022483 -0.013973
+v 0.000000 1.999515 -0.080260
+v 0.000000 1.951147 -0.125262
+v 0.000003 1.888227 -0.125901
+v 0.000029 1.829646 -0.102580
+v 0.000035 1.807043 -0.088442
+v -0.058729 1.957294 0.096320
+v -0.048461 1.987612 0.063458
+v -0.036443 1.983696 0.081310
+v -0.030499 1.965614 0.098525
+v -0.093685 1.935881 -0.006049
+v -0.094241 1.911723 -0.000826
+v -0.095206 1.896267 -0.041147
+v -0.082348 1.938851 -0.055181
+v -0.046016 2.008473 0.028528
+v -0.033437 2.010657 0.046900
+v -0.079378 1.980358 -0.009863
+v -0.065812 1.979814 -0.067973
+v -0.065945 1.972896 0.052012
+v -0.071426 1.952022 0.069150
+v -0.085671 1.945014 0.051512
+v -0.080079 1.961266 0.022484
+v -0.016287 1.991715 0.081504
+v -0.011571 1.969832 0.096178
+v -0.015784 2.014585 0.040333
+v -0.090475 1.932736 0.023238
+v -0.064719 1.984905 0.014947
+v -0.067125 1.821299 -0.066038
+v -0.063633 1.854557 -0.093467
+v -0.084398 1.845123 -0.054850
+v -0.078891 1.824502 -0.051160
+v -0.083571 1.901025 -0.093957
+v -0.063037 1.933406 -0.096580
+v -0.052146 1.995950 -0.021204
+v -0.021030 2.022185 -0.013683
+v -0.035571 1.997319 -0.076077
+v -0.032268 1.951348 -0.124800
+v -0.043768 1.890567 -0.123871
+v -0.028912 1.850542 -0.105681
+v -0.034345 1.797811 -0.083987
+vt 0.460021 0.977395
+vt 0.425567 0.969289
+vt 0.462804 0.949470
+vt 0.454660 0.933195
+vt 0.404280 0.867856
+vt 0.402826 0.824877
+vt 0.421736 0.851888
+vt 0.437773 0.819890
+vt 0.471237 0.923478
+vt 0.462976 0.908753
+vt 0.440943 0.871987
+vt 0.456024 0.830544
+vt 0.432444 0.882991
+vt 0.438896 0.919746
+vt 0.407008 0.920084
+vt 0.415594 0.943376
+vt 0.483746 0.975196
+vt 0.482859 0.953466
+vt 0.485431 0.919834
+vt 0.405994 0.893206
+vt 0.448796 0.891195
+vt 0.402507 0.756605
+vt 0.418030 0.741657
+vt 0.410447 0.780589
+vt 0.439887 0.752113
+vt 0.437061 0.780537
+vt 0.453700 0.793484
+vt 0.462340 0.869931
+vt 0.483986 0.881966
+vt 0.476204 0.832606
+vt 0.477689 0.789809
+vt 0.465002 0.758482
+vt 0.471707 0.737001
+vt 0.452777 0.703525
+vt 0.497561 0.927869
+vt 0.497576 0.953629
+vt 0.497395 0.975933
+vt 0.497488 0.882013
+vt 0.497507 0.831501
+vt 0.497498 0.789316
+vt 0.497447 0.754158
+vt 0.497324 0.719379
+vt 0.497168 0.700650
+vt 0.540172 0.933290
+vt 0.569482 0.969950
+vt 0.532117 0.949635
+vt 0.534858 0.977587
+vt 0.590911 0.868055
+vt 0.573406 0.851693
+vt 0.593014 0.825679
+vt 0.556868 0.820663
+vt 0.531928 0.908801
+vt 0.523635 0.923521
+vt 0.553979 0.871646
+vt 0.539013 0.830576
+vt 0.579524 0.943738
+vt 0.556028 0.919857
+vt 0.588076 0.920257
+vt 0.562543 0.882959
+vt 0.512554 0.951327
+vt 0.511245 0.976563
+vt 0.509505 0.919685
+vt 0.589138 0.893378
+vt 0.546152 0.891126
+vt 0.555059 0.752133
+vt 0.576757 0.741581
+vt 0.584690 0.781095
+vt 0.553762 0.786010
+vt 0.540141 0.794936
+vt 0.532629 0.869818
+vt 0.510992 0.881978
+vt 0.518825 0.832843
+vt 0.517313 0.789800
+vt 0.529435 0.757428
+vt 0.523033 0.736468
+vt 0.542200 0.701018
+vt 0.460413 0.966196
+vt 0.435866 0.947523
+vt 0.399160 0.859858
+vt 0.405372 0.833685
+vt 0.416300 0.934382
+vt 0.412596 0.910542
+vt 0.481982 0.973150
+vt 0.405541 0.887434
+vt 0.407035 0.789142
+vt 0.409232 0.766029
+vt 0.497179 0.973389
+vt 0.558681 0.947704
+vt 0.534012 0.966323
+vt 0.589348 0.833712
+vt 0.595617 0.859945
+vt 0.582097 0.910714
+vt 0.578333 0.934591
+vt 0.512363 0.973114
+vt 0.589225 0.887577
+vt 0.565106 0.102229
+vt 0.602501 0.108138
+vt 0.568373 0.160532
+vt 0.581967 0.195894
+vt 0.700567 0.273818
+vt 0.726617 0.379374
+vt 0.664444 0.303797
+vt 0.660943 0.449342
+vt 0.558270 0.218642
+vt 0.573397 0.283009
+vt 0.624977 0.365905
+vt 0.613862 0.502958
+vt 0.621060 0.247288
+vt 0.607392 0.209071
+vt 0.645825 0.183084
+vt 0.624314 0.146790
+vt 0.522308 0.103808
+vt 0.534137 0.177637
+vt 0.533355 0.276336
+vt 0.666987 0.229115
+vt 0.602792 0.299279
+vt 0.823875 0.364654
+vt 0.839121 0.398444
+vt 0.800861 0.385701
+vt 0.802796 0.460769
+vt 0.725263 0.483798
+vt 0.670438 0.544567
+vt 0.587233 0.391080
+vt 0.542415 0.390801
+vt 0.565841 0.504709
+vt 0.648176 0.592840
+vt 0.765520 0.584936
+vt 0.870984 0.566345
+vt 0.891202 0.426784
+vt 0.495651 0.235671
+vt 0.495237 0.146601
+vt 0.493694 0.074630
+vt 0.496251 0.352258
+vt 0.489044 0.525680
+vt 0.497469 0.656510
+vt 0.842789 0.672967
+vt 0.938818 0.518584
+vt 0.938953 0.443141
+vt 0.406665 0.199136
+vt 0.386192 0.106530
+vt 0.422356 0.165808
+vt 0.429025 0.118970
+vt 0.287274 0.272028
+vt 0.322762 0.301321
+vt 0.261627 0.376100
+vt 0.325912 0.462875
+vt 0.415295 0.287471
+vt 0.431850 0.222720
+vt 0.359890 0.373586
+vt 0.377699 0.516337
+vt 0.361527 0.154497
+vt 0.377633 0.213154
+vt 0.342631 0.181977
+vt 0.349735 0.256940
+vt 0.457223 0.182108
+vt 0.467539 0.106629
+vt 0.457707 0.279079
+vt 0.314785 0.165790
+vt 0.380968 0.305851
+vt 0.195549 0.529216
+vt 0.162120 0.443116
+vt 0.198693 0.423793
+vt 0.174879 0.405194
+vt 0.270845 0.603104
+vt 0.326280 0.586439
+vt 0.402279 0.398107
+vt 0.449967 0.394246
+vt 0.429854 0.5...
[truncated message content] |