|
From: <tre...@us...> - 2007-09-07 00:27:20
|
Revision: 379
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=379&view=rev
Author: trevorolio
Date: 2007-09-06 17:27:17 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
Fixed a bug in SpaceScriptEngine which caused a silent ECMA script failue.
Consolidated some of the login cookie script functionality.
Changed the REST api permissions on a thing's service resource.
Modified Paths:
--------------
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/MessageProxy.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.html
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
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-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-09-07 00:27:17 UTC (rev 379)
@@ -112,7 +112,7 @@
public void cleanup() { //this happens when a space is stopped, not necessarily when it's deleted
Object[] scopes = thingScopes.getValues();
for (int i = 0; i < scopes.length; i++) {
- callAndIgnoreFunction(DESTRUCT_FUNCTION_NAME, (ScriptableObject) scopes[i]); //yes, we call destruct in cleanup()... it's weird but right
+ callAndIgnoreFunction(DESTRUCT_FUNCTION_NAME, (ScriptableObject) scopes[i]); //yes, we call destruct in cleanup()... it's weird but right
}
scriptSpace.cleanup();
}
@@ -277,7 +277,12 @@
return null;
} else {
Function function = (Function) functionObject;
- return function.call(context, thingScope, thingScope, functionArgs);
+ try {
+ return function.call(context, thingScope, thingScope, functionArgs);
+ } catch (EcmaError e) {
+ spaceSimulator.log("Error calling " + functionName + ": " + e);
+ return null;
+ }
}
}
@@ -373,7 +378,7 @@
public void thingAdded(Thing thing) {
}
- private void callAndIgnoreFunction(String functionName, ScriptableObject thingScope){
+ private void callAndIgnoreFunction(String functionName, ScriptableObject thingScope) {
Context context = Context.enter();
try {
callJavascriptFunction(context, thingScope, functionName, new Object[0]);
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-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-07 00:27:17 UTC (rev 379)
@@ -61,6 +61,8 @@
public class SimServlet extends OgoglioServletBase {
private static final String RELOAD_PARAMETER = "reload";
+ public static final String THING_SERVICE_PATH_ELEMENT = "service";
+
private Sim sim = null;
private URI simURI = null;
@@ -755,7 +757,7 @@
private class ThingServiceResource extends SiteResource {
public ThingServiceResource() {
- super("service");
+ super(THING_SERVICE_PATH_ELEMENT);
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java 2007-09-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java 2007-09-07 00:27:17 UTC (rev 379)
@@ -181,7 +181,7 @@
}
int userCount = element.getChildren(UserDocument.NAME).length;
if(userCount >= spaceRecord.getMaxGuests()) {
- Log.error("Refused guest to space " + spaceRecord.getSpaceID() + " for reasons of max guest limit: " + payload.getSpaceID());
+ Log.error("Refused guest to space " + spaceRecord.getSpaceID() + " for reasons of max guest limit: " + spaceRecord.getMaxGuests());
Message failureMessage = new Message(channelServer.getLocator(), request.getOrigin(), payload.getSpaceID(), new PayloadFactory.AuthenticationFailurePayload("This space has reached its guest limit."));
sourceChannel.sendMessage(failureMessage);
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-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-07 00:27:17 UTC (rev 379)
@@ -16,7 +16,6 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Date;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -41,6 +40,7 @@
import com.ogoglio.persist.SpaceMemberRecord;
import com.ogoglio.persist.SpacePersistTasks;
import com.ogoglio.persist.SpaceRecord;
+import com.ogoglio.sim.site.SimServlet;
import com.ogoglio.util.Log;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.ServiceDocument;
@@ -362,7 +362,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if(!canUseMethodOnSpace(method, authedAccount, spaceRecord)){
+ if(!canUseMethodOnSpace(method, authedAccount, spaceRecord) && !SimServlet.THING_SERVICE_PATH_ELEMENT.equals(pathElements[pathElements.length - 1])){
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.html 2007-09-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/body.html 2007-09-07 00:27:17 UTC (rev 379)
@@ -31,7 +31,7 @@
<script type="text/javascript">
var bodyID = locationParameters['bodyID'];
-var loginCookie = getCookie('loginCookie');
+var loginCookie = getLoginCookie();
var titleElement = null;
var mainElement = null;
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-07 00:27:17 UTC (rev 379)
@@ -1,4 +1,5 @@
var appPath = "/og"; //do not put a slash on the end
+var loginCookieName = "loginCookie";
function getServiceURI(){
var locLink = document.location;
@@ -176,6 +177,16 @@
return window.open(URL, id, params);
}
+function getLoginCookie(){
+ return getCookie(loginCookieName);
+}
+
+function setLoginCookie(cookie){
+ var expire = new Date();
+ expire.setTime(expire.getTime() + 3600000*24*3);
+ document.cookie = loginCookieName + "=" + escape(cookie) + ";expires=" + expire.toGMTString() + ";path=/";
+}
+
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2007-09-07 00:27:11 UTC (rev 378)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2007-09-07 00:27:17 UTC (rev 379)
@@ -20,6 +20,10 @@
var allowsGuests = parseInt(xml.getAttribute("maxguests")) > 0;
if(authedUsername == null){
if(allowsGuests && typeof autoGuest != "undefined" && autoGuest){
+ if(getLoginCookie() != null && getLoginCookie().indexOf("guest_") == 0){
+ enterTheSpace();
+ return;
+ }
enterAsGuest();
} else if(allowsGuests){
spaceDiv.innerHTML = "<div style='width: 100%; text-align: center; margin-top: 20px; font-weight: bold; color: #000;'>Would you like to <a href='signin.html'>sign in</a> or <a href='space.html' onclick='enterAsGuest(); return false;'>enter as a guest</a>?";
@@ -62,7 +66,7 @@
}
function writeApplet(){
- var loginCookie = getCookie("loginCookie");
+ var loginCookie = getLoginCookie();
if(loginCookie == null){
spaceDiv.innerHTML = "No cookie. Please sign in or register as a guest.";
return;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|