unicorn commit: added error messages for invalid responses

changeset:   1313:6191eb74a4f4
user:        Thomas Gambet <tgambet@w3.org>
date:        Tue Jul 06 17:39:28 2010 -0400
files:       src/org/w3c/unicorn/response/impl/DefaultResponseXBeans.java
description:
added error messages for invalid responses


diff -r 967d3db2e09d -r 6191eb74a4f4 src/org/w3c/unicorn/response/impl/DefaultResponseXBeans.java
--- a/src/org/w3c/unicorn/response/impl/DefaultResponseXBeans.java	Tue Jul 06 17:38:55 2010 -0400
+++ b/src/org/w3c/unicorn/response/impl/DefaultResponseXBeans.java	Tue Jul 06 17:39:28 2010 -0400
@@ -6,12 +6,14 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Date;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.xmlbeans.XmlError;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
@@ -52,10 +54,20 @@
 		this.observerID = observerID;
 		
 		try {
+			Collection<XmlError> errorList = new ArrayList<XmlError>();
+			XmlOptions xo = new XmlOptions();
+			xo.setUseDefaultNamespace();
+			xo.setErrorListener(errorList);
 			ord = ObservationresponseDocument.Factory.parse(is, new XmlOptions().setCharacterEncoding(charset));
 			or = ord.getObservationresponse();
-			if (!or.validate())
-				throw new UnicornException(new org.w3c.unicorn.util.Message(2, "$message_response_validation_error", null, Framework.mapOfObserver.get(observerID).getName(Property.get(getLang()))));
+			if (!or.validate(xo)) {
+				String content = "";
+				content += "Errors: " + errorList.size();
+			    for (XmlError error : errorList) {
+			    	content += "\n" + error.getMessage();
+			    }
+				throw new UnicornException(new org.w3c.unicorn.util.Message(2, "$message_response_validation_error", content, Framework.mapOfObserver.get(observerID).getName(Property.get(getLang()))));
+			}
 		} catch (XmlException e) {
 			if (e.getMessage().contains("document element namespace mismatch"))
 				throw new UnicornException(new org.w3c.unicorn.util.Message(org.w3c.unicorn.util.Message.ERROR, "$message_response_invalid_schema", null, Framework.mapOfObserver.get(observerID).getName(Property.get("DEFAULT_LANGUAGE"))));

Received on Wednesday, 7 July 2010 14:12:16 UTC