[isidorus-cvs] r536 - in branches/gdl-frontend/src/anaToMia/GDL_TmEngine: lib src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine

lgiessmann at common-lisp.net lgiessmann at common-lisp.net
Thu Jun 30 10:30:38 UTC 2011


Author: lgiessmann
Date: Thu Jun 30 03:30:38 2011
New Revision: 536

Log:
gdl-frontend: Topic Maps Engine: fixed a bug when a topic reference or an array is set to null instead of being set to a value

Modified:
   branches/gdl-frontend/src/anaToMia/GDL_TmEngine/lib/GDL_TopicMaps_Model.jar
   branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java
   branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java

Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/lib/GDL_TopicMaps_Model.jar
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java	Thu Jun 30 03:28:32 2011	(r535)
+++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/JtmsTmEngine.java	Thu Jun 30 03:30:38 2011	(r536)
@@ -8,6 +8,8 @@
 import com.google.gwt.json.client.JSONParser;
 import com.google.gwt.json.client.JSONString;
 import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.Window;
+
 import us.isidor.gdl.anaToMia.TopicMaps.TmEngineModel.ExporterException;
 import us.isidor.gdl.anaToMia.TopicMaps.TmEngineModel.FormatException;
 import us.isidor.gdl.anaToMia.TopicMaps.TmEngineModel.MissingReference;
@@ -416,6 +418,8 @@
 
 
 	private Topic getReferenced(JSONValue reference, TopicMap tm, Prefixes prefixes) throws FormatException, MissingReference{
+		if(reference.isNull() != null) return null;
+		
 		JSONString stringValue = reference.isString();
 		if(stringValue == null){
 			throw new FormatException("expected a string value as topic reference, but found \"" + reference.toString() + "\"");
@@ -452,6 +456,10 @@
 		ArrayList<String> stringReferences = new ArrayList<String>();
 
 		JSONArray stringValues = references.isArray();
+		if(references.isNull() != null){
+			return getReferenceds(stringReferences, tm, prefixes);
+		}
+		
 		if(stringValues == null){
 			throw new FormatException("expected an array of strings as topic references, but found \"" + references.toString() + "\"");
 		}
@@ -553,17 +561,22 @@
 
 		if(object.containsKey(key)){
 			JSONValue jsonValue = object.get(key);
-			JSONArray jsonArray = jsonValue.isArray();
-			if(jsonArray == null){
-				throw new FormatException("the field \"" + key + "\" must be a string array");
+			if(jsonValue.isNull() != null){
+				// the value must be null, so return an emtpy ArrayList
+				return values;
 			} else {
-				for(int i = 0; i != jsonArray.size(); ++i){
-					JSONValue itemValue = jsonArray.get(i);
-					JSONString itemString = itemValue.isString();
-					if(itemString == null){
-						throw new FormatException("the field \"" + key + "\" must be a string array");
-					} else {
-						values.add(itemString.stringValue());
+				JSONArray jsonArray = jsonValue.isArray();
+				if(jsonArray == null){
+					throw new FormatException("the field \"" + key + "\" must be a string array, but is " + jsonValue);
+				} else {
+					for(int i = 0; i != jsonArray.size(); ++i){
+						JSONValue itemValue = jsonArray.get(i);
+						JSONString itemString = itemValue.isString();
+						if(itemString == null){
+							throw new FormatException("the field \"" + key + "\" must be a string array, but is " + jsonValue);
+						} else {
+							values.add(itemString.stringValue());
+						}
 					}
 				}
 			}
@@ -579,16 +592,21 @@
 		if(object.containsKey(key)){
 			JSONValue jsonValues = object.get(key);
 			JSONArray jsonArray = jsonValues.isArray();
-			if(jsonArray == null){
-				throw new FormatException("the field \"" + key + "\" must be an array of JSON objects");
+			if(jsonValues.isNull() != null){
+				// the value must be null, so return an emtpy ArrayList
+				return values;
 			} else {
-				for(int i = 0; i != jsonArray.size(); ++i){
-					JSONValue jsonValue = jsonArray.get(i);
-					JSONObject jsonObject = jsonValue.isObject();
-					if(jsonObject == null){
-						throw new FormatException("the field \"" + key + "\" must be an array of JSON objects");
-					} else {
-						values.add(jsonObject);
+				if(jsonArray == null){
+					throw new FormatException("the field \"" + key + "\" must be an array of JSON objects");
+				} else {
+					for(int i = 0; i != jsonArray.size(); ++i){
+						JSONValue jsonValue = jsonArray.get(i);
+						JSONObject jsonObject = jsonValue.isObject();
+						if(jsonObject == null){
+							throw new FormatException("the field \"" + key + "\" must be an array of JSON objects");
+						} else {
+							values.add(jsonObject);
+						}
 					}
 				}
 			}

Modified: branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java
==============================================================================
--- branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java	Thu Jun 30 03:28:32 2011	(r535)
+++ branches/gdl-frontend/src/anaToMia/GDL_TmEngine/src/us/isidor/gdl/anaToMia/TmEngine/jtmsBasedEngine/TestClass.java	Thu Jun 30 03:30:38 2011	(r536)
@@ -29,19 +29,7 @@
 	private Label exportedJTMLabel = new Label();
 	private Label title = new Label();
 	private HorizontalPanel statusPanel = new HorizontalPanel();
-	private String tmData =  "{\"version\":\"1.1\","+
-							  "\"item_type\":\"topicmap\"," +
-							  "\"item_identifiers\":[\"http://some.where/my-tm\"]," +
-							  "\"topics\":[{\"subject_identifiers\":[\"http://some.where/my-top-1\"," +
-							                                        "\"http://some.where/my-top-1-1\"]," + 
-							               "\"names\":[{\"item_identifiers\":[\"http://some.where/my-name-ii-1\"]," +
-							                           "\"value\":\"_Test_Topic_\"," +
-							                           "\"scope\":[\"si:http://some.where/my-scope-1\"," +
-							                                      "\"si:http://some.where/my-scope-2\"]," +
-							                           "\"type\":\"si:http://some.where/my-name-type-1\"}]}," +
-							              "{\"subject_identifiers\":[\"http://some.where/my-name-type-1\"]}," +
-							              "{\"subject_identifiers\":[\"http://some.where/my-scope-1\"]}," +
-							              "{\"subject_identifiers\":[\"http://some.where/my-scope-2\"]}]}";
+	private String tmData = "{\"version\":\"1.1\",\"prefixes\":{\"pref_1\":\"http://www.topicmaps.org/xtm/1.0/core.xtm#\",\"pref_2\":\"http://psi.topicmaps.org/iso13250/model/\",\"pref_5\":\"http://some.where/tmsparql/author/\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\",\"pref_3\":\"http://psi.topicmaps.org/tmcl/\",\"pref_6\":\"http://some.where/psis/poem/\",\"pref_4\":\"http://some.where/tmsparql/\",\"pref_7\":\"http://some.where/ii/zb/\",\"pref_8\":\"http://some.where/ii/\"},\"item_identifiers\":[\"[pref_4:jtm-tm]\"],\"topics\":[{\"subject_identifiers\":[\"[pref_1:topic]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:association]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:occurrence]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:class-instance]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:class]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:supertype-subtype]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:supertype]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:subtype]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:sort]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_1:display]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_2:type-instance]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_2:type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_2:instance]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":null,\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:topic-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:occurrence-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:association-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:written-by]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:association-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:role-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:written]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:role-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:writer]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:role-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:name-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_3:scope-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:author]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:poem]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:first-name]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:name-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:last-name]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:name-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:title]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:name-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:display-name]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:scope-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:de]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:scope-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:date-of-birth]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:date-of-death]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:poem-content]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:years]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:isDead]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:isAlive]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:occurrence-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_4:reifier-type]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_3:topic-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_5:goethe]\"],\"subject_locators\":null,\"item_identifiers\":[\"[pref_8:goethe]\"],\"instance_of\":[\"si:[pref_4:author]\"],\"names\":[{\"item_identifiers\":null,\"value\":\"Johann Wolfgang\",\"type\":\"si:[pref_4:first-name]\",\"scope\":null,\"variants\":null,\"reifier\":null},{\"item_identifiers\":null,\"value\":\"von Goethe\",\"type\":\"si:[pref_4:last-name]\",\"scope\":null,\"variants\":[{\"item_identifiers\":[\"[pref_8:goethe-variant]\"],\"datatype\":\"http://www.w3.org/2001/XMLSchema#string\",\"value\":\"Goethe\",\"scope\":[\"si:[pref_4:display-name]\"],\"reifier\":null}],\"reifier\":\"ii:[pref_8:goethe-name-reifier]\"},{\"item_identifiers\":[\"[pref_8:goethe-untyped-name]\"],\"value\":\"Johann Wolfgang von Goethe\",\"type\":null,\"scope\":null,\"variants\":null,\"reifier\":null}],\"occurrences\":[{\"item_identifiers\":[\"[pref_8:goethe-occ]\"],\"datatype\":\"http://www.w3.org/2001/XMLSchema#date\",\"type\":\"si:[pref_4:date-of-birth]\",\"value\":\"28.08.1749\",\"scope\":null,\"reifier\":\"ii:[pref_8:goethe-occ-reifier]\"},{\"item_identifiers\":null,\"datatype\":\"http://www.w3.org/2001/XMLSchema#date\",\"type\":\"si:[pref_4:date-of-death]\",\"value\":\"22.03.1832\",\"scope\":null,\"reifier\":null},{\"item_identifiers\":[\"[pref_8:goethe-years-occ]\"],\"datatype\":\"http://www.w3.org/2001/XMLSchema#integer\",\"type\":\"si:[pref_4:years]\",\"value\":\"82\",\"scope\":null,\"reifier\":null},{\"item_identifiers\":null,\"datatype\":\"http://www.w3.org/2001/XMLSchema#boolean\",\"type\":\"si:[pref_4:isDead]\",\"value\":\"true\",\"scope\":null,\"reifier\":null},{\"item_identifiers\":null,\"datatype\":\"http://www.w3.org/2001/XMLSchema#boolean\",\"type\":\"si:[pref_4:isAlive]\",\"value\":\"false\",\"scope\":null,\"reifier\":null}]},{\"subject_identifiers\":null,\"subject_locators\":null,\"item_identifiers\":[\"[pref_8:goethe-occ-reifier]\"],\"instance_of\":[\"si:[pref_4:reifier-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":null,\"subject_locators\":null,\"item_identifiers\":[\"[pref_8:goethe-name-reifier]\"],\"instance_of\":[\"si:[pref_4:reifier-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":[\"[pref_6:zauberlehrling]\"],\"subject_locators\":null,\"item_identifiers\":null,\"instance_of\":[\"si:[pref_4:poem]\"],\"names\":[{\"item_identifiers\":null,\"value\":\"Der Zauberlehrling\",\"type\":\"si:[pref_4:title]\",\"scope\":null,\"variants\":null,\"reifier\":null}],\"occurrences\":[{\"item_identifiers\":[\"[pref_7:occurrence]\"],\"datatype\":\"http://www.w3.org/2001/XMLSchema#string\",\"type\":\"si:[pref_4:poem-content]\",\"value\":\"Hat der alte Hexenmeister ... sich doch einmal wegbegeben! ...\",\"scope\":[\"si:[pref_4:de]\"],\"reifier\":null}]},{\"subject_identifiers\":null,\"subject_locators\":null,\"item_identifiers\":[\"[pref_8:association-reifier]\"],\"instance_of\":[\"si:[pref_4:reifier-type]\"],\"names\":null,\"occurrences\":null},{\"subject_identifiers\":null,\"subject_locators\":null,\"item_identifiers\":[\"[pref_8:role-reifier]\"],\"instance_of\":[\"si:[pref_4:reifier-type]\"],\"names\":null,\"occurrences\":null}],\"associations\":[{\"item_identifiers\":[\"[pref_8:association]\"],\"type\":\"si:[pref_4:written-by]\",\"reifier\":\"ii:[pref_8:association-reifier]\",\"scope\":null,\"roles\":[{\"item_identifiers\":null,\"type\":\"si:[pref_4:writer]\",\"reifier\":\"ii:[pref_8:role-reifier]\",\"player\":\"si:[pref_5:goethe]\"},{\"item_identifiers\":[\"[pref_8:role-2]\"],\"type\":\"si:[pref_4:written]\",\"reifier\":null,\"player\":\"si:[pref_6:zauberlehrling]\"}]}],\"item_type\":\"topicmap\",\"reifier\":null}";  
 
 	@Override
 	public void onModuleLoad() {
@@ -111,10 +99,13 @@
 			try{
 				tme.importTopicMap(userInputField.getValue(), tm);
 			}catch(FormatException fe){
+				fe.printStackTrace();
 				Window.alert("caught error: " + fe.getMessage());
 			}catch(MissingReference me){
+				me.printStackTrace();
 				Window.alert("caught error: " + me.getMessage());
 			}catch (Exception e){
+				e.printStackTrace();
 				Window.alert("cought error: " + e.getMessage());
 			}finally {
 				topicsLabel.setText("topics: " + tm.getTopics().length());




More information about the Isidorus-cvs mailing list