|
From: <tre...@us...> - 2007-08-27 23:52:35
|
Revision: 274
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=274&view=rev
Author: trevorolio
Date: 2007-08-27 16:52:35 -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-common/src/main/java/com/ogoglio/client/SpaceClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java
Added Paths:
-----------
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceClient.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -37,6 +37,7 @@
import com.ogoglio.message.PayloadFactory;
import com.ogoglio.message.TCPChannel;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.viewer.render.UIConstants;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.BodyDocument;
import com.ogoglio.xml.DoorDocument;
@@ -710,25 +711,25 @@
}
public InputStream getUserGeometryStream(String username, String name) throws IOException {
- return SpaceClient.class.getClassLoader().getResourceAsStream("/avatar/avatar.obj");
+ return UIConstants.getResource("avatar/avatar.obj");
}
public InputStream getUserAnimationStream(String username, long animationID) throws IOException {
System.out.println("trying to FART: "+username+","+animationID);
if (animationID == 1) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar.bvh");
+ return UIConstants.getResource("avatar/avatar.bvh");
} else if (animationID == 2) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-walk.bvh");
+ return UIConstants.getResource("avatar/avatar-walk.bvh");
} else if (animationID == 3) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-wave.bvh");
+ return UIConstants.getResource("avatar/avatar-wave.bvh");
} else if (animationID == 4) {
- return SpaceClient.class.getClassLoader().getResourceAsStream("avatar/avatar-point.bvh");
+ return UIConstants.getResource("avatar/avatar-point.bvh");
}
return null;
}
public InputStream getUserSkinMapStream(String username) throws IOException {
- return SpaceClient.class.getClassLoader().getResourceAsStream("/avatar/avatar.smap");
+ return UIConstants.getResource("avatar/avatar.smap");
}
public BodyDocument getBodyDocument(String username, long bodyID) throws IOException {
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClient.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -32,6 +32,7 @@
import com.ogoglio.xml.DoorDocument;
import com.ogoglio.xml.PageDocument;
import com.ogoglio.xml.PossessionDocument;
+import com.ogoglio.xml.ServiceStateDocument;
import com.ogoglio.xml.SettingDocument;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceMemberDocument;
@@ -58,8 +59,12 @@
public AccountDocument createAccount(String username, String accountLevel, String firstName, String lastName, String homepage, String email, String password) throws IOException {
AccountDocument newAccountDoc = new AccountDocument(username, accountLevel, firstName, lastName, homepage, password, email, null, AccountDocument.NO_TIME_VALUE, null, AccountDocument.NO_TIME_VALUE, -1);
- XMLElement result = wire.sendAuthenticatedXML(descriptor.getAccountURI(), newAccountDoc.toString(), "POST", authenticator.getAuthCookie());
- return new AccountDocument(result);
+ try {
+ XMLElement result = wire.sendAuthenticatedXML(descriptor.getAccountURI(), newAccountDoc.toString(), "POST", authenticator.getAuthCookie());
+ return new AccountDocument(result);
+ } catch (IOException e) {
+ return null;
+ }
}
public SpaceDocument createSpace(String spaceName) throws IOException {
@@ -479,6 +484,19 @@
return wire.sendDelete(descriptor.getBodyURI(authenticator.getUsername(), bodyID), authenticator.getAuthCookie());
}
+ public ServiceStateDocument setRegistrationState(String registrationState) throws IOException {
+ ServiceStateDocument doc = new ServiceStateDocument(registrationState);
+ XMLElement xml = wire.postAuthenticatedXML(descriptor.getServiceStateURI(), doc.toString(), authenticator.getAuthCookie());
+ if (xml == null) {
+ return null;
+ }
+ return new ServiceStateDocument(xml);
+ }
+
+ public ServiceStateDocument getRegistrationState() throws IOException {
+ return new ServiceStateDocument(wire.fetchAuthenticatedXML(descriptor.getServiceStateURI(), authenticator.getAuthCookie()));
+ }
+
public String toString() {
return "<WebAPI:" + descriptor.getServiceURI() + ">";
}
@@ -494,4 +512,5 @@
public WebAPIClientWire getWire() {
return wire;
}
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIDescriptor.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -155,4 +155,8 @@
return serviceURI;
}
+ public URI getServiceStateURI() {
+ return WebAPIUtil.appendToURI(getSpacesURI(), "state/");
+ }
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/ArgumentUtils.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -61,7 +61,7 @@
public static void assertReadableFile(String path) {
File file = new File(path);
- if(!file.exists() || !file.canRead() || !file.isFile()) {
+ if (!file.exists() || !file.canRead() || !file.isFile()) {
throw new IllegalArgumentException("No readable file at " + path);
}
}
@@ -72,33 +72,72 @@
}
if (file.exists()) {
- if(!file.isDirectory()) {
+ if (!file.isDirectory()) {
throw new IllegalArgumentException("Expected a directory: " + file);
}
if (!file.canRead()) {
throw new IllegalArgumentException("Can't read this directory: " + file);
}
return;
- } else if(createIfPossible && file.mkdirs()){
+ } else if (createIfPossible && file.mkdirs()) {
return;
}
throw new IllegalArgumentException("Can't read this directory: " + file);
}
public static void assertNoPaths(String name) {
- if(name == null || name.trim().length() == 0) {
+ if (name == null || name.trim().length() == 0) {
return;
}
- if(name.indexOf("..") != -1) {
+ if (name.indexOf("..") != -1) {
throw new IllegalArgumentException("Bad name: " + name);
}
}
public static void assertBoringDouble(double value) {
- if(Double.isInfinite(value) || Double.isInfinite(value)) {
+ if (Double.isInfinite(value) || Double.isInfinite(value)) {
throw new IllegalArgumentException("Bad double: " + value);
}
}
+ public static void assertIsEmail(String email) {
+ if (email == null || email.trim().length() == 0) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ if (email.indexOf("@") == -1 || email.indexOf("@") == 0) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ if (email.indexOf(".", email.indexOf("@")) == -1 && email.indexOf("localhost") != email.indexOf("@") + 1) {
+ throw new IllegalArgumentException("Bad email: " + email);
+ }
+ }
+ public static void assertIsCreditCardNumber(String ccNumberString) {
+ if (ccNumberString == null || ccNumberString.length() < 13 || ccNumberString.length() > 16) {
+ throw new IllegalArgumentException("Bad CC number length: " + ccNumberString);
+ }
+
+ // Check Luhn (mod 10)
+ int[] digits = new int[ccNumberString.length()];
+ for (int i = 0; i < ccNumberString.length(); i++) {
+ digits[i] = Integer.parseInt(ccNumberString.charAt(i) + "");
+ }
+
+ int sum = 0;
+ boolean alt = false;
+ for (int i = digits.length - 1; i >= 0; i--) {
+ if (alt) {
+ digits[i] *= 2;
+ if (digits[i] > 9) {
+ digits[i] -= 9;
+ }
+ }
+ sum += digits[i];
+ alt = !alt;
+ }
+ if(sum % 10 != 0) {
+ throw new IllegalArgumentException("Bad CC number mod: " + ccNumberString);
+ }
+ }
+
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java 2007-08-27 21:05:45 UTC (rev 273)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/util/StreamUtils.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -57,6 +57,14 @@
output.flush();
output.close();
}
+
+ public static String readResource(String resourceName) throws IOException {
+ InputStream resourceStream = StreamUtils.class.getClassLoader().getResourceAsStream(resourceName);
+ if (resourceStream == null) {
+ return null;
+ }
+ return readInput(resourceStream);
+ }
public static void copyResource(String resourceName, File destinationDir) throws IOException {
InputStream resourceStream = StreamUtils.class.getClassLoader().getResourceAsStream(resourceName);
Added: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java (rev 0)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/xml/ServiceStateDocument.java 2007-08-27 23:52:35 UTC (rev 274)
@@ -0,0 +1,48 @@
+package com.ogoglio.xml;
+
+import nanoxml.XMLElement;
+
+import com.ogoglio.util.ArgumentUtils;
+
+public class ServiceStateDocument {
+
+ public static final String REGISTRATION_STATE_CLOSED = "closed";
+
+ public static final String REGISTRATION_STATE_ADMIN_ONLY = "adminOnly";
+
+ public static final String REGISTRATION_STATE_OPEN = "open";
+
+ public static final String[] REGISTRATION_STATES = { REGISTRATION_STATE_CLOSED, REGISTRATION_STATE_ADMIN_ONLY, REGISTRATION_STATE_OPEN };
+
+ public static final String NAME = "servicestate";
+
+ public static final String REGISTRATION_STATE = "registrationstate";
+
+ private XMLElement data = null;
+
+ public ServiceStateDocument(XMLElement data) {
+ ArgumentUtils.assertNotNull(data);
+ if (!NAME.equals(data.getName())) {
+ throw new IllegalArgumentException("data is not named " + NAME + ": " + data);
+ }
+ this.data = data;
+ }
+
+ public ServiceStateDocument(String registrationState) {
+ data = new XMLElement(NAME);
+ data.setAttribute(REGISTRATION_STATE, registrationState);
+ }
+
+ public String getRegistrationState() {
+ return data.getStringAttribute(REGISTRATION_STATE);
+ }
+
+ public XMLElement toElement() {
+ return data;
+ }
+
+ public String toString() {
+ return toElement().toString();
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|