|
From: <ian...@us...> - 2008-03-21 22:45:00
|
Revision: 794
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=794&view=rev
Author: iansmith
Date: 2008-03-21 15:44:46 -0700 (Fri, 21 Mar 2008)
Log Message:
-----------
Improved error handling in PopulateMojo (detect more error cases).
Fixed small possible bug in SpaceDuplicator (negative value).
Added some better error information who object insertion into a space goes wrong (better error messages).
Modified Paths:
--------------
maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
Modified: maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java
===================================================================
--- maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java 2008-03-19 03:05:25 UTC (rev 793)
+++ maven/trunk/dev-plugins/src/main/java/com/ogoglio/plugin/PopulateMojo.java 2008-03-21 22:44:46 UTC (rev 794)
@@ -131,6 +131,10 @@
ThingDocument thing = things[j];
PossessionDocument possDoc = client.createPossession(templateIdMap.get(thing.getTemplateID()));
possDoc = client.addPossessionToSpace(possDoc.getPossessionID(), realSpaceDoc.getSpaceID());
+ if ((possDoc.getSpaceID()==PossessionDocument.NO_SPACE)||
+ (possDoc.getThingID()==PossessionDocument.NO_THING)) {
+ throw new MojoExecutionException("Unable to make a copy of possession [adding]:"+possDoc);
+ }
ThingDocument newThingDoc = client.getThingDocument(realSpaceDoc.getSpaceID(), possDoc.getThingID());
newThingDoc.setOrientation(thing.getOrientation());
newThingDoc.setTranslation(thing.getTranslation());
@@ -151,6 +155,7 @@
getLog().info("Patched up space " + realSpaceDoc.getDisplayName() + " [" + realSpaceDoc.getSpaceID() + "]");
} catch (IOException e) {
+ e.printStackTrace();
throw new MojoExecutionException("IOException patching space", e);
}
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2008-03-19 03:05:25 UTC (rev 793)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/SpaceDuplicator.java 2008-03-21 22:44:46 UTC (rev 794)
@@ -56,7 +56,7 @@
PossessionDocument[] possDocuments = client.getPossessionDocuments();
PossessionDocument possToUse = null;
for (int j = 0; j < possDocuments.length; j++) {
- if (possDocuments[j].getThingID() == -1 && possDocuments[j].getTemplateID() == thingDocs[i].getTemplateID()) {
+ if (possDocuments[j].getThingID() == PossessionDocument.NO_THING && possDocuments[j].getTemplateID() == thingDocs[i].getTemplateID()) {
possToUse = possDocuments[j];
break;
}
@@ -108,27 +108,49 @@
}
public static void emptySpace(long spaceID, WebAPIClient client, boolean deleteRemovedPossessions) throws IOException {
- ThingDocument[] thingDocs = client.getThingDocuments(spaceID);
- for (int i = 0; i < thingDocs.length; i++) {
- long possessionID = thingDocs[i].getPossessionID();
- client.removePossessionFromSpace(thingDocs[i].getPossessionID());
- if(deleteRemovedPossessions){
- client.deletePossession(possessionID);
+ ThingDocument[] thingDocs;
+ try {
+ thingDocs = client.getThingDocuments(spaceID);
+ } catch (IOException e) {
+ thingDocs =null;
+ System.err.println("Trying to empty space, but can't find any things! Ignoring IOException!");
+ }
+ if (thingDocs!=null){
+ for (int i = 0; i < thingDocs.length; i++) {
+ long possessionID = thingDocs[i].getPossessionID();
+ client.removePossessionFromSpace(thingDocs[i].getPossessionID());
+ if(deleteRemovedPossessions){
+ client.deletePossession(possessionID);
+ }
}
}
-
- DoorDocument[] doorDocs = client.getDoorDocuments(spaceID);
- for (int i = 0; i < doorDocs.length; i++) {
- client.deleteDoor(spaceID, doorDocs[i].getDoorID());
+ DoorDocument[] doorDocs;
+ try {
+ doorDocs = client.getDoorDocuments(spaceID);
+ } catch (IOException e) {
+ doorDocs =null;
+ System.err.println("Trying to empty space, but can't find any doors! Ignoring IOException!");
}
-
- Map settings = client.getSpaceSettings(spaceID);
- String[] keys = (String[]) settings.keySet().toArray(new String[0]);
- for (int i = 0; i < keys.length; i++) {
- client.removeSpaceSetting(spaceID, keys[i]);
+ if (doorDocs!=null) {
+ for (int i = 0; i < doorDocs.length; i++) {
+ client.deleteDoor(spaceID, doorDocs[i].getDoorID());
+ }
}
+ Map settings;
+ try {
+ settings = client.getSpaceSettings(spaceID);
+ } catch (IOException e) {
+ settings=null;
+ System.err.println("Trying to empty space, but can't find any settings! Ignoring IOException!");
+ }
+ if (settings!=null) {
+ String[] keys = (String[]) settings.keySet().toArray(new String[0]);
+ for (int i = 0; i < keys.length; i++) {
+ client.removeSpaceSetting(spaceID, keys[i]);
+ }
+ }
+
}
-
public static void main(String[] args) {
if (args.length != 4) {
printUsage();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-03-19 03:05:25 UTC (rev 793)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2008-03-21 22:44:46 UTC (rev 794)
@@ -957,7 +957,6 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
PossessionDocument updatedDoc = new PossessionDocument(parseXML(request.getInputStream()));
long oldSpaceID = record.getSpaceID();
long oldThingID = record.getThingID();
@@ -965,7 +964,6 @@
sendStringResponse(DocumentFactory.documentFromRecord(record).toString(), "text/xml", response);
return;
}
-
if (oldSpaceID != PossessionDocument.NO_SPACE) {
SpaceRecord oldSpaceRecord = SpacePersistTasks.findSpaceBySpaceID(oldSpaceID, getSessionFactory());
if (oldSpaceRecord != null) {
@@ -984,12 +982,12 @@
}
}
}
-
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
if (record.getSpaceID() != PossessionDocument.NO_SPACE) {
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(record.getSpaceID(), getSessionFactory());
if (spaceRecord == null) {
+ Log.error("Whoa! Space record was null when looking for spaceID:"+record.getSpaceID()+"!");
record.setSpaceID(-1);
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -997,27 +995,27 @@
}
SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
if (simRecord == null) {
+ Log.error("Whoa! Sim record was null when trying to get a sim for "+spaceRecord.getSpaceID());
record.setSpaceID(-1);
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
-
TemplateRecord templateRecord = TemplatePersistTasks.findTemplateByTemplateID(record.getTemplateID(), sessionFactory);
if (templateRecord == null) {
+ Log.error("Whoa! Template record was null when looking for:"+record.getTemplateID());
record.setSpaceID(-1);
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
-
URI thingsURI = WebAPIUtil.appendToURI(simRecord.getSimURI(), "space/" + record.getSpaceID() + "/thing/");
ThingDocument thingDoc = new ThingDocument(-1, templateRecord.getDisplayName(), templateRecord.getTemplateID(), templateRecord.getOwnerUsername(), record.getOwnerUsername(), record.getPossessionID(), new Transform3D(), null);
try {
XMLElement element = new WebAPIClientWire().sendAuthenticatedXML(thingsURI, thingDoc.toString(), "POST", null);
long thingID = element.getLongAttribute(ThingDocument.THING_ID, -1);
if (thingID == -1) {
- Log.error("Received a -1 thingID for some reason, bailing: " + element);
+ Log.error("Whoa! thing id was -1 in thing doc:"+element);
record.setSpaceID(-1);
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -1026,6 +1024,7 @@
record.setThingID(thingID);
PossessionPersistTasks.update(record, getSessionFactory());
} catch (IOException e) {
+ Log.error("IOException putting thing in space:"+e.getMessage());
record.setSpaceID(PossessionDocument.NO_SPACE);
record = PossessionPersistTasks.update(record, updatedDoc, getSessionFactory());
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|