|
From: <tre...@us...> - 2007-08-31 03:40:40
|
Revision: 300
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=300&view=rev
Author: trevorolio
Date: 2007-08-30 20:40:36 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Added a bridge between the external URL space and things, so now template scripts can be directly addressed via HTTP, and info panels are just iFrames showing a thing's service page.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.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/webapp/spaceui.js
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java
Added Paths:
-----------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPResponse.java
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-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -36,6 +36,7 @@
import com.ogoglio.client.model.Template;
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;
@@ -454,11 +455,11 @@
listener.generatedSpaceEventForUser(username, spaceEvent, this);
}
- public void showInfoPanelToUser(long sourceThingID, String username, String infoPanelHTML) {
+ public void showInfoPanelToUser(long sourceThingID, String username, String nonce) {
SpaceEvent spaceEvent = new SpaceEvent(SpaceEvent.SHOW_INFO_PANEL_EVENT);
spaceEvent.setProperty(SpaceEvent.USERNAME, username);
spaceEvent.setProperty(SpaceEvent.THING_ID, new Long(sourceThingID));
- spaceEvent.setProperty(SpaceEvent.INFO_PANEL_HTML, infoPanelHTML);
+ spaceEvent.setProperty(SpaceEvent.INFO_PANEL_NONCE, nonce);
listener.generatedSpaceEventForUser(username, spaceEvent, this);
}
@@ -979,6 +980,17 @@
thing.reload();
}
+ public ScriptHTTPResponse callThingHTTPService(long thingID, String method, Map parameterMap) {
+ Thing thing = space.getThing(thingID);
+ if(thing == null){
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(404, null, null);
+ return response;
+ } else {
+ return scriptEngine.callThingService(thingID, method, parameterMap);
+ }
+ }
+
public Map getSettings() {
synchronized (settings) {
return (Map) settings.clone();
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPResponse.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPResponse.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptHTTPResponse.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -0,0 +1,56 @@
+package com.ogoglio.sim.script;
+
+import org.mozilla.javascript.ScriptableObject;
+
+
+public class ScriptHTTPResponse extends ScriptableObject {
+
+ private int status = -1;
+
+ private String message = null;
+
+ private String mimeType = null;
+
+ public void jsConstructor(double status, String message, String mimeType) {
+ this.status = (int)status;
+ this.message = message;
+ this.mimeType = mimeType;
+ }
+
+ public double jsGet_status() {
+ return status;
+ }
+
+ public String jsGet_message() {
+ return message;
+ }
+
+ public String jsGet_mimeType(){
+ return mimeType;
+ }
+
+ public String getClassName() {
+ return "HTTPResponse";
+ }
+
+ public Object getDefaultValue(Object hint) {
+ return toString();
+ }
+
+ public String toString() {
+ return getClassName();
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public String getMIMEType() {
+ return mimeType;
+ }
+
+}
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-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/ScriptSpace.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -108,8 +108,8 @@
return spaceSimulator.removeSetting(key);
}
- public void jsFunction_showInfoPanel(double sourceThingID, String username, String infoPanelHTML){
- spaceSimulator.showInfoPanelToUser((long)sourceThingID, username, infoPanelHTML);
+ public void jsFunction_showInfoPanel(double sourceThingID, String username, String nonce){
+ spaceSimulator.showInfoPanelToUser((long)sourceThingID, username, nonce);
}
public void jsFunction_log(String message) {
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-08-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -17,6 +17,7 @@
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Map;
import java.util.Vector;
import javax.media.j3d.Transform3D;
@@ -56,11 +57,16 @@
public static final String ONCLICK_SCRIPT_PREFIX = "if(typeof onClick == \"function\") { onClick(";
+ public static final String ONCLICK_SCRIPT_SUFFIX = "); }";
+
public static final String ONCONTEXTCLICK_SCRIPT_PREFIX = "if(typeof onContextClick == \"function\") { onContextClick(";
public static final String CONTEXT_ITEM_SELECTED = "if(typeof onContextMenuItemChosen == \"function\") { onContextMenuItemChosen(";
- public static final String ONCLICK_SCRIPT_SUFFIX = "); }";
+ public static final String SERVICE_SCRIPT_PREFIX = "if(typeof onService == \"function\") { onService(";
+
+ public static final String SERVICE_SCRIPT_SUFFIX = "); }";
+
public SpaceScriptEngine(SpaceSimulator spaceSimulator) {
ArgumentUtils.assertNotNull(spaceSimulator);
this.spaceSimulator = spaceSimulator;
@@ -76,8 +82,9 @@
ScriptableObject.defineClass(globalScope, ScriptSpace.class);
ScriptableObject.defineClass(globalScope, ScriptMath.class);
ScriptableObject.defineClass(globalScope, ScriptHTTPRequest.class);
+ ScriptableObject.defineClass(globalScope, ScriptHTTPResponse.class);
ScriptableObject.defineClass(globalScope, ScriptContextMenuInfo.class);
-
+
scriptSpace = (ScriptSpace) constructorContext.newObject(globalScope, "Space", new Object[0]);
scriptSpace.setSpaceSimulator(spaceSimulator);
globalScope.put("space", globalScope, scriptSpace);
@@ -127,13 +134,17 @@
}
}
+ private ScriptableObject getThingScope(long thingID) {
+ return (ScriptableObject) thingScopes.getForward(new Long(thingID));
+ }
+
public void handleSpaceEvent(SpaceEvent event) {
if ((SpaceEvent.THING_CLICKED_EVENT.equals(event.getName())) || (SpaceEvent.THING_CONTEXT_CLICKED_EVENT.equals(event.getName()))) {
Long thingID = event.getLongProperty(SpaceEvent.THING_ID);
if (thingID == null) {
return;
}
- ScriptableObject thingScope = (ScriptableObject) thingScopes.getForward(thingID);
+ ScriptableObject thingScope = getThingScope(thingID.longValue());
if (thingScope == null) {
return;
}
@@ -155,11 +166,10 @@
try {
//the context click is called for value, the regular click for effect
if (SpaceEvent.THING_CONTEXT_CLICKED_EVENT.equals(event.getName())) {
- String errorToClient = processScriptForContextMenuInfo(thingScope,username, event.getLongProperty(SpaceEvent.NONCE).longValue(),
- script, context);
-
- if (errorToClient!=null) {
- spaceSimulator.log("Error in contextmenuclick handler:"+errorToClient);
+ String errorToClient = processScriptForContextMenuInfo(thingScope, username, event.getLongProperty(SpaceEvent.NONCE).longValue(), script, context);
+
+ if (errorToClient != null) {
+ spaceSimulator.log("Error in contextmenuclick handler:" + errorToClient);
}
} else {
spaceSimulator.log("Click script : " + evaluateScript(context, thingScope, script));
@@ -172,13 +182,14 @@
if (thingID == null) {
return;
}
- ScriptableObject thingScope = (ScriptableObject) thingScopes.getForward(thingID);
+ ScriptableObject thingScope = getThingScope(thingID.longValue());
if (thingScope == null) {
return;
}
+
Context context = Context.enter();
String username = event.getStringProperty(SpaceEvent.USERNAME);
- String script = CONTEXT_ITEM_SELECTED + "\"" + username + "\", \"" + event.getStringProperty(SpaceEvent.CONTEXT_MENU_DATA_ITEM_ID) + "\"" + ONCLICK_SCRIPT_SUFFIX ;
+ String script = CONTEXT_ITEM_SELECTED + "\"" + username + "\", \"" + event.getStringProperty(SpaceEvent.CONTEXT_MENU_DATA_ITEM_ID) + "\"" + ONCLICK_SCRIPT_SUFFIX;
String result = evaluateScript(context, thingScope, script);
spaceSimulator.log("Item selected script : " + result);
try {
@@ -188,7 +199,7 @@
//not a URL, so we are done, assume the call was for effect
}
} else if (SpaceEvent.ADD_THING_EVENT.equals(event.getName())) {
- try {
+ try {
Thing thing = spaceSimulator.getSpace().getThing(event.getLongProperty(SpaceEvent.THING_ID).longValue());
if (thing != null) {
constructThingScript(thing);
@@ -198,41 +209,34 @@
}
}
-
- //find the scripts that could response
-
- //for each responding script
- // hand the event and the script to an interpreter queue
-
}
private String processScriptForContextMenuInfo(ScriptableObject thingScope, String username, long nonce, String script, Context context) {
- Vector arrayOfObjects=new Vector();
+ Vector arrayOfObjects = new Vector();
String result = evaluateScriptForArray(context, thingScope, script, arrayOfObjects);
String errorToClient = null;
- if (result!=null) {
- spaceSimulator.log("Error in script:"+result);
+ if (result != null) {
+ spaceSimulator.log("Error in script:" + result);
errorToClient = result;
} else {
- for (int i=0; i<arrayOfObjects.size();++i) {
- ScriptableObject candidate = (ScriptableObject)arrayOfObjects.get(i);
+ for (int i = 0; i < arrayOfObjects.size(); ++i) {
+ ScriptableObject candidate = (ScriptableObject) arrayOfObjects.get(i);
if (!(candidate.getClassName().equals(ScriptContextMenuInfo.JS_CLASS_NAME))) {
- errorToClient = "Should be an array of ContextMenuInfo items but had "+candidate.getClassName() +" in the array1";
+ errorToClient = "Should be an array of ContextMenuInfo items but had " + candidate.getClassName() + " in the array1";
}
}
}
SpaceEvent event = new SpaceEvent(SpaceEvent.CONTEXT_MENU_DATA_EVENT);
event.setProperty(SpaceEvent.NONCE, new Long(nonce));
- if (errorToClient!=null) {
- event.setProperty(SpaceEvent.CONTEXT_MENU_DATA_GENERATION_ERROR,errorToClient);
+ if (errorToClient != null) {
+ event.setProperty(SpaceEvent.CONTEXT_MENU_DATA_GENERATION_ERROR, errorToClient);
} else {
//this is so we can use the same types on the client side
- Vector changedTypeObjects=new Vector();
- for (int i=0; i<arrayOfObjects.size();++i) {
- ScriptContextMenuInfo infoWithJSBaggage=(ScriptContextMenuInfo)arrayOfObjects.get(i);
- ContextMenuInfo infoNoJS=new ContextMenuInfo();
- infoNoJS.setValues(infoWithJSBaggage.getUserVisibleString(),
- infoWithJSBaggage.getEnabled(), infoWithJSBaggage.getId());
+ Vector changedTypeObjects = new Vector();
+ for (int i = 0; i < arrayOfObjects.size(); ++i) {
+ ScriptContextMenuInfo infoWithJSBaggage = (ScriptContextMenuInfo) arrayOfObjects.get(i);
+ ContextMenuInfo infoNoJS = new ContextMenuInfo();
+ infoNoJS.setValues(infoWithJSBaggage.getUserVisibleString(), infoWithJSBaggage.getEnabled(), infoWithJSBaggage.getId());
changedTypeObjects.add(infoNoJS);
}
event.setContextMenu(changedTypeObjects);
@@ -264,7 +268,7 @@
return "Error: " + e;
}
}
-
+
// dodgy: this returns an error message or null if things are ok
private String evaluateScriptForArray(Context context, ScriptableObject scriptScope, String script, Vector valuesFound) {
try {
@@ -276,27 +280,66 @@
} else if (!(result instanceof ScriptableObject)) {
return "unexpected return type from javascript";
}
-
- ScriptableObject obj=(ScriptableObject)result;
+
+ ScriptableObject obj = (ScriptableObject) result;
if (!(obj.getClassName().equals("Array"))) {
- return "Expected Array result but got "+obj.getClassName();
+ return "Expected Array result but got " + obj.getClassName();
}
Object length_raw = obj.get("length", obj);
- if ((length_raw==null) || (!(length_raw instanceof java.lang.Number))){
+ if ((length_raw == null) || (!(length_raw instanceof java.lang.Number))) {
return "Internal error! Can't understand length of array in javascript!";
}
- Number length= (Number)length_raw;
- for (int i=0; i<length.intValue();++i) {
+ Number length = (Number) length_raw;
+ for (int i = 0; i < length.intValue(); ++i) {
valuesFound.add(obj.get(i, obj));
}
return null;
} catch (EcmaError error) {
- return "Javascript Error:"+error.getMessage();
+ return "Javascript Error:" + error.getMessage();
} catch (Throwable e) {
- spaceSimulator.log("Caught a throwabe when evaluating script for array:"+e.getMessage());
- return "(Internal) Error:"+e.getMessage();
- }
+ spaceSimulator.log("Caught a throwabe when evaluating script for array:" + e.getMessage());
+ return "(Internal) Error:" + e.getMessage();
+ }
}
+
+ public ScriptHTTPResponse callThingService(long thingID, String method, Map parameterMap) {
+ ScriptableObject thingScope = getThingScope(thingID);
+ if (thingScope == null) {
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(200, "", "text/plain");
+ return response;
+ }
+
+ //TODO actually pass the parameter map
+ String script = SERVICE_SCRIPT_PREFIX + SERVICE_SCRIPT_SUFFIX;
+ Context context = Context.enter();
+ try {
+ Object result = context.evaluateString(thingScope, script, "<cmd>", 1, null);
+ if (result == null || result instanceof Undefined) {
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(200, "", "text/plain");
+ return response;
+ } else if (result instanceof ScriptHTTPResponse) {
+ return (ScriptHTTPResponse) result;
+ } else {
+ spaceSimulator.log("Javascript Error: onService returned " + result);
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(500, "Javascript Error: onService returned " + result, null);
+ return response;
+ }
+ } catch (EcmaError error) {
+ spaceSimulator.log("Javascript Error: in onService: " + error.getErrorMessage());
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(500, "Javascript Error: in onService: " + error.getErrorMessage(), null);
+ return response;
+ } catch (Throwable e) {
+ spaceSimulator.log("Javascript Error: in onService: " + e);
+ ScriptHTTPResponse response = new ScriptHTTPResponse();
+ response.jsConstructor(500, "Javascript Error: in onService: " + e, null);
+ return response;
+ }
+ }
+
public static String getMessage(EcmaError e) {
return "Error at line " + e.lineNumber() + " column " + e.columnNumber() + (e.lineSource() == null ? " " : "(" + e.lineSource() + ")") + e.getErrorMessage();
}
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-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -41,9 +41,9 @@
import com.ogoglio.sim.SpaceSimulator;
import com.ogoglio.sim.script.ScriptContextFactory;
import com.ogoglio.sim.script.ScriptHTTPRequest;
+import com.ogoglio.sim.script.ScriptHTTPResponse;
import com.ogoglio.site.AuthServlet;
import com.ogoglio.site.OgoglioServletBase;
-import com.ogoglio.site.SiteInfo;
import com.ogoglio.site.SpaceServlet;
import com.ogoglio.util.StreamUtils;
import com.ogoglio.xml.DoorDocument;
@@ -748,11 +748,63 @@
}
}
+ private class ThingServiceResource extends SiteResource {
+ public ThingServiceResource() {
+ super("service");
+ }
+
+ 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);
+ }
+
+ public void doScriptService(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
+ try {
+ long spaceID = Long.parseLong(pathElements[2]);
+ SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
+ if (spaceRecord == null) {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ 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){
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ Map parameterMap = request.getParameterMap();
+ ScriptHTTPResponse scriptResponse = simulator.callThingHTTPService(thingID, request.getMethod(), parameterMap);
+ response.setStatus(scriptResponse.getStatus());
+ if(scriptResponse.getStatus() != 200){
+ return;
+ }
+ sendStringResponse(scriptResponse.getMessage(), scriptResponse.getMIMEType(), response);
+ } catch (PersistException e){
+ e.printStackTrace();
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ }
+ }
+
private class ThingResource extends SiteResource {
public ThingResource() {
super(SiteResource.LONG_ELEMENT);
addSubResource(new PagesResource());
+ addSubResource(new ThingServiceResource());
}
public void doDelete(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
Modified: maven/trunk/ogoglio-server/src/main/webapp/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/main/webapp/spaceui.js 2007-08-31 03:40:36 UTC (rev 300)
@@ -200,7 +200,7 @@
//############## Start Info Panel Functions ##################
var infoPanels = new Array();
-function addInfoPanel(id, panelHTML){
+function addInfoPanel(id, nonce){
var infoDiv = document.getElementById("infoDiv");
if(infoDiv == null){
return;
@@ -217,15 +217,22 @@
infoActionDiv.style.textAlign = "right";
infoActionDiv.style.backgroundColor = "#F00";
var closeActionAnchor = document.createElement("a");
- closeActionAnchor.setAttribute("href", "hmmm.html");
+ closeActionAnchor.setAttribute("href", "error.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);
+ var panelHTMLWrapper = document.createElement("iframe");
+ panelHTMLWrapper.setAttribute("width", "270");
+ panelHTMLWrapper.setAttribute("height", "270");
+ var spaceID = locationParameters["spaceID"];
+ var thingURI = getServiceURI() + "/space/" + spaceID + "/thing/" + id + "/service";
+ if(nonce != null){
+ thingURI += "?nonce=" + nonce;
+ }
+ panelHTMLWrapper.setAttribute("src", thingURI);
+ infoPanelElement.appendChild(panelHTMLWrapper);
if(infoPanels[id] != null){
infoDiv.replaceChild(infoPanelElement, infoPanels[id]);
@@ -237,15 +244,6 @@
}
}
-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){
@@ -255,7 +253,7 @@
return;
}
infoDiv.removeChild(infoPanels[id]);
- infoPanels.remove(infoPanels[id]);
+ infoPanels[id] = null;
}
// 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/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-31 03:40:29 UTC (rev 299)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/sim/script/test/ScriptTest.java 2007-08-31 03:40:36 UTC (rev 300)
@@ -45,7 +45,7 @@
listener.scriptMap.put(new Long(2), constructorScript);
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());
+ thingDoc = spaceSimulator.addThing(templateDoc2.getTemplateID(), templateDoc2.getOwnerUsername(), templateDoc2.getDisplayName(), "trevor", 2, new Transform3D());
assertTrue(spaceSimulator.removeThing(thingDoc.getThingID()));
try {
@@ -54,7 +54,8 @@
e.printStackTrace();
}
} finally {
- spaceSimulator.cleanup();
+ if (spaceSimulator != null)
+ spaceSimulator.cleanup();
}
}
@@ -81,7 +82,7 @@
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) {
@@ -99,16 +100,16 @@
}
public InputStream getTemplateGeometryStream(long templateID, int lodIndex) {
- String resourcePath = (String)objMap.get(new Long(templateID));
- if(resourcePath == 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) {
- String resourcePath = (String)resourceMap.get(new Long(templateID));
- if(resourcePath == null){
+ String resourcePath = (String) resourceMap.get(new Long(templateID));
+ if (resourcePath == null) {
return null;
}
return UIConstants.getResource(resourcePath);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|