|
From: <ian...@us...> - 2008-03-04 21:44:51
|
Revision: 787
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=787&view=rev
Author: iansmith
Date: 2008-03-04 13:44:54 -0800 (Tue, 04 Mar 2008)
Log Message:
-----------
Fixed problems where we were printing errors to standard out rather than logging them.
Fixed parser to handle XML that has comma-based floating point.
Modified Paths:
--------------
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
maven/trunk/ogoglio-common/src/main/java/nanoxml/XMLElement.java
maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/WebStore.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/CometChannelManager.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/NetworkChannelServer.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/SimpleSocketWaiterThread.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
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/AuthenticatedSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -208,7 +208,7 @@
try {
return new URI(request.getRequestURL().toString());
} catch (URISyntaxException e) {
- e.printStackTrace();
+ Log.error("Couldn't get request URI!",e);
throw new IllegalStateException("Bad request URI?!? " + request.getRequestURI());
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/nanoxml/XMLElement.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/nanoxml/XMLElement.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-common/src/main/java/nanoxml/XMLElement.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -1113,7 +1113,13 @@
try {
return Float.parseFloat(value);
} catch (NumberFormatException e) {
- throw this.invalidValue(name, value);
+ //for people in other locales
+ value = value.replace(',', '.');
+ try {
+ return Float.parseFloat(value);
+ } catch (NumberFormatException f) {
+ throw this.invalidValue(name, value);
+ }
}
}
}
@@ -1385,7 +1391,13 @@
try {
return Double.valueOf(value).doubleValue();
} catch (NumberFormatException e) {
- throw this.invalidValue(name, value);
+ //other locales
+ value = value.replace(',', '.');
+ try {
+ return Double.valueOf(value).doubleValue();
+ } catch (NumberFormatException f) {
+ throw this.invalidValue(name, value);
+ }
}
}
}
Modified: maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java
===================================================================
--- maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-common/src/test/java/com/ogoglio/xml/test/XMLTest.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -313,4 +313,20 @@
assertEquals(3, possDoc.getSpaceID());
assertEquals(4, possDoc.getThingID());
}
+
+ public void testEuroNumbers() {
+ String source="<foo bar=\"5.678\" grik=\"1,234\"/>";
+ XMLElement elem=new XMLElement();
+ elem.parseString(source);
+ assertEquals(5.678,elem.getFloatAttribute("bar"),0.0001);
+ assertEquals(1.234,elem.getFloatAttribute("grik"),0.0001);
+
+ source="<football><euro cost=\"1,45\"/><american cost=\"145.1\"/></football>";
+ elem.parseString(source);
+ XMLElement euro=elem.getChild("euro");
+ XMLElement american=elem.getChild("american");
+
+ assertEquals(1.45,euro.getDoubleAttribute("cost"),0.0001);
+ assertEquals(145.1,american.getDoubleAttribute("cost"),0.0001);
+ }
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/WebStore.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/WebStore.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/WebStore.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -26,6 +26,7 @@
import com.ogoglio.client.WebAPIClientWire;
import com.ogoglio.client.WebAPIUtil;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.util.Log;
public class WebStore implements MediaStore {
@@ -70,7 +71,8 @@
try {
return new WebAPIClientWire().sendDelete(WebAPIUtil.appendToURI(mediaURI, name), null);
} catch (IOException e) {
- e.printStackTrace();
+ Log.error("Error in delete!",e);
+ //e.printStackTrace();
return false;
}
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/CometChannelManager.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/CometChannelManager.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/CometChannelManager.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -119,7 +119,7 @@
Log.error("No Such Destination!" + msg, e);
}
} catch (Throwable t) {
- t.printStackTrace();
+ Log.error("Error in CometChannelManager.messageDone",t);
}
}
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/NetworkChannelServer.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/NetworkChannelServer.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/NetworkChannelServer.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -71,9 +71,9 @@
try {
channels[i].sendMessage(message);
} catch (NoSuchDestinationException e) {
- e.printStackTrace();
+ Log.error("distribute() of network channel server, no such destination:",e);
} catch (BlockingQueue.QueueClosedException e) {
- e.printStackTrace();
+ Log.error("distribute() of network channel server, blockingqueue.queueclosed:",e);
}
}
}
@@ -86,7 +86,7 @@
try {
channels[i].sendMessage(message);
} catch (NoSuchDestinationException e) {
- e.printStackTrace();
+ Log.error("distributeExclusively() of network channel server, no such destination:",e);
}
}
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/SimpleSocketWaiterThread.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/SimpleSocketWaiterThread.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/message/server/SimpleSocketWaiterThread.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -49,7 +49,7 @@
ready.clientReady(clientProto);
} catch (IOException e) {
if (!cleaned) {
- e.printStackTrace();
+ Log.error("IOException waiting for client in SimpleSocketWaiter:",e);
}
break;
}
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 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -40,10 +40,6 @@
public static final Random RANDOM = new Random();
- private static final long TEST_SIM_INTERVAL_MS = 15000;
-
- private static long lastTestOfSimServers=0L;
-
public static SpaceRecord updateSpace(final long spaceID, final SpaceDocument spaceDocument, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
@@ -201,35 +197,45 @@
return findOrAssignSim(spaceRecord, sessionFactory, true);
}
- public static void verifyReachableSims(SimRecord[] puportedReachable, SessionFactory sessionFactory) throws PersistException {
+ public static void verifyReachableSims(SimRecord[] purportedReachable, SessionFactory sessionFactory) throws PersistException {
//let's see if they are ok
- for (int i=0; i<puportedReachable.length;++i) {
- try {
- URI simURI=puportedReachable[i].getSimURI();
- HttpURLConnection connection = (HttpURLConnection) simURI.toURL().openConnection();
- connection.setRequestMethod("GET");
- connection.setAllowUserInteraction(false);
- connection.setConnectTimeout(2000);
- connection.setReadTimeout(3000);
- if (connection.getResponseCode()!=200) {
- Log.warn("Can't get a connection to "+simURI+"! Marking inactive!");
- markNotReachable(puportedReachable[i], sessionFactory);
- } else {
- Log.info("Verified connection to "+simURI);
- }
- } catch (MalformedURLException e) {
- Log.warn("Can't understand the URI "+puportedReachable[i].getSimURI()+"! Marking inactive!");
- markNotReachable(puportedReachable[i], sessionFactory);
- } catch (ProtocolException e) {
- Log.warn("Can't understand the URI protocol "+puportedReachable[i].getSimURI()+"! Marking inactive!");
- markNotReachable(puportedReachable[i], sessionFactory);
- } catch (IOException e) {
- Log.warn("Can't connect to "+puportedReachable[i].getSimURI()+"! Marking inactive! IOException:"+e.getMessage());
- markNotReachable(puportedReachable[i], sessionFactory);
- }
+ for (int i=0; i<purportedReachable.length;++i) {
+ SimRecord someSimRec=purportedReachable[i];
+ verifySingleSimAsReachable(sessionFactory, someSimRec);
}
}
+
+ private static boolean verifySingleSimAsReachable(SessionFactory sessionFactory, SimRecord someSimRec) throws PersistException {
+ try {
+ URI simURI=someSimRec.getSimURI();
+ HttpURLConnection connection = (HttpURLConnection) simURI.toURL().openConnection();
+ connection.setRequestMethod("GET");
+ connection.setAllowUserInteraction(false);
+ connection.setConnectTimeout(2000);
+ connection.setReadTimeout(3000);
+ if (connection.getResponseCode()!=200) {
+ Log.warn("Can't get a connection to "+simURI+"! Marking inactive!");
+ markNotReachable(someSimRec, sessionFactory);
+ return false;
+ } else {
+ Log.info("Verified connection to "+simURI);
+ return true;
+ }
+ } catch (MalformedURLException e) {
+ Log.warn("Can't understand the URI "+someSimRec.getSimURI()+"! Marking inactive!");
+ markNotReachable(someSimRec, sessionFactory);
+ return false;
+ } catch (ProtocolException e) {
+ Log.warn("Can't understand the URI protocol "+someSimRec.getSimURI()+"! Marking inactive!");
+ markNotReachable(someSimRec, sessionFactory);
+ return false;
+ } catch (IOException e) {
+ Log.warn("Can't connect to "+someSimRec.getSimURI()+"! Marking inactive! IOException:"+e.getMessage());
+ markNotReachable(someSimRec, sessionFactory);
+ return false;
+ }
+ }
public static SimRecord findOrAssignSim(final SpaceRecord spaceRecord, SessionFactory sessionFactory, boolean use_network) throws PersistException {
SimRecord rec = findSimFromSpaceIfReachable(spaceRecord, sessionFactory);
@@ -241,14 +247,15 @@
if (assignable.length==0) {
throw new UnableToAssignSimException("Unable to find any sims that we can assign to!");
}
- //has it been a while?
- long now=System.currentTimeMillis();
- if ((now-lastTestOfSimServers<TEST_SIM_INTERVAL_MS) || (!use_network)) {
- return pickSimRandomly(spaceRecord, sessionFactory, assignable);
+ // first check this sim, if it's ok or no network then we just bail out
+ SimRecord randomChoice = pickSimRandomly(spaceRecord, sessionFactory, assignable);
+ if (!use_network) {
+ return randomChoice;
}
- //update the time check
- lastTestOfSimServers=now;
-
+ if (verifySingleSimAsReachable(sessionFactory, randomChoice)) {
+ return randomChoice;
+ }
+ //if we reach here, we have failed on that sim verification, so check ALL of them
verifyReachableSims(findAllReachableSims(spaceRecord, sessionFactory),sessionFactory);
assignable=findAllReachableAndNotRetiredSims(spaceRecord, sessionFactory);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/Sim.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -122,7 +122,7 @@
try {
saveSpaceDocument(spaceSim.toSpaceDocument());
} catch (IOException e) {
- e.printStackTrace();
+ Log.error("IOException trying to save space document!",e);
}
}
}
@@ -194,7 +194,7 @@
}
return null;
} catch (PersistException e) {
- e.printStackTrace();
+ Log.error("Persist exception trying to getUserRole",e);
return null;
}
}
@@ -223,7 +223,7 @@
mediaService.write(MediaService.getPageContentName(spaceID, thingID, pageID), content);
return true;
} catch (IOException e) {
- e.printStackTrace();
+ Log.error("IOException trying to set page content",e);
return false;
}
}
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 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/SpaceSimulator.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -195,7 +195,7 @@
listener.requestSave(this);
}
} catch (Throwable e) {
- e.printStackTrace();
+ Log.error("Error during cleanup of space "+space.getSpaceID()+"!",e);
}
}
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 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -109,11 +109,14 @@
ScriptMath math = (ScriptMath) constructorContext.newObject(globalScope, "Math", new Object[0]);
globalScope.put("math", globalScope, math);
} catch (IllegalAccessException e) {
- e.printStackTrace();
+ Log.error("Illegal access in constructor SpaceScriptEngine",e);
+ //e.printStackTrace();
} catch (InstantiationException e) {
- e.printStackTrace();
+ Log.error("InstantiationException in constructor of SpaceScriptEngine",e);
+ //e.printStackTrace();
} catch (InvocationTargetException e) {
- e.printStackTrace();
+ Log.error("Invocation target exception in constructor of SpaceScriptEngine",e);
+ //e.printStackTrace();
} finally {
Context.exit();
}
@@ -364,7 +367,8 @@
constructThingScript(thing);
}
} catch (Throwable e) {
- e.printStackTrace();
+ Log.error("Error in handle space event, trying to run thing script",e);
+ //e.printStackTrace();
}
}
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 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -470,7 +470,7 @@
sendStringResponse(newDoc.toString(), "text/xml", response);
} catch (PersistException e) {
- e.printStackTrace();
+ Log.error("Persist exception in post of ThingsResource",e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
@@ -1007,7 +1007,7 @@
sendStringResponse(newDoc.toString(), "text/xml", response);
} catch (PersistException e) {
- e.printStackTrace();
+ Log.error("Persist exception in post of Doors resource",e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -25,6 +25,7 @@
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.persist.AccountRecord;
import com.ogoglio.util.ArgumentUtils;
+import com.ogoglio.util.Log;
public abstract class AuthenticatedSiteResource extends SiteResource {
@@ -72,7 +73,7 @@
}
doPost(request, response, pathElements, authedAccount);
} catch (PersistException e) {
- e.printStackTrace();
+ Log.error("Persist exception in post of Authenticated site resource!",e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
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 2008-03-02 14:10:50 UTC (rev 786)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java 2008-03-04 21:44:54 UTC (rev 787)
@@ -228,7 +228,7 @@
Log.error("Unknown request payload: " + request.getPayload());
}
} catch (Throwable e) {
- e.printStackTrace();
+ Log.error("Error is MessageProxy.ClientMessageHandler.handleEvent!",e);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|