Author: ieb
Date: Tue Nov 4 18:25:41 2008
New Revision: 711492
URL: http://svn.apache.org/viewvc?rev=711492&view=rev
Log:
SHINDIG-562
Enabled XSD validation on all responses to tighten up the unit tests and
ensure that things not explicitly
checked in the unit test, are caught by the xsd.
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlDataTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlPeopleDisabled.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXStreamConverterTest.java
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/XSDValidator.java
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
Tue Nov 4 18:25:41 2008
@@ -57,6 +57,10 @@
import javax.xml.stream.XMLStreamReader;
public abstract class AbstractLargeRestfulTests extends TestCase {
+ protected static final String XMLSCHEMA = "
xmlns=\"http://ns.opensocial.org/2008/opensocial\" \n"
+ + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+ + " xsi:schemaLocation=\"http://ns.opensocial.org/2008/opensocial
classpath:opensocial.xsd\" ";
+ protected static final String XSDRESOURCE = "opensocial.xsd";
private HttpServletRequest req;
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityTest.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityTest.java
Tue Nov 4 18:25:41 2008
@@ -35,7 +35,11 @@
import javax.xml.xpath.XPathFactory;
public class RestfulXmlActivityTest extends AbstractLargeRestfulTests {
- Activity johnsActivity;
+ private static final String XMLSCHEMA = "
xmlns=\"http://ns.opensocial.org/2008/opensocial\" \n"
+ + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+ + " xsi:schemaLocation=\"http://ns.opensocial.org/2008/opensocial
classpath:opensocial.xsd\" ";
+ private static final String XSDRESOURCE = "opensocial.xsd";
+ private Activity johnsActivity;
private XPathFactory xpathFactory;
@Override
@@ -71,6 +75,8 @@
String resp = getResponse("/activities/john.doe/@self/@app/1", "GET",
"xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
InputSource source = new InputSource(new StringReader(resp));
XPath xp = xpathFactory.newXPath();
NodeList result = (NodeList) xp.evaluate("/response/activity", source,
@@ -128,6 +134,9 @@
public void testGetActivitiesJson() throws Exception {
String resp = getResponse("/activities/john.doe/@self", "GET", "xml",
"application/xml");
+ System.err.println("Response Is "+resp);
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
XPath xp = xpathFactory.newXPath();
assertEquals("0", xp.evaluate("/response/startIndex", new InputSource(
new StringReader(resp))));
@@ -187,6 +196,8 @@
public void testGetFriendsActivitiesJson() throws Exception {
String resp = getResponse("/activities/john.doe/@friends", "GET", "xml",
"application/xml");
+
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
XPath xp = xpathFactory.newXPath();
assertEquals("0", xp.evaluate("/response/startIndex", new InputSource(
@@ -213,9 +224,14 @@
String createResponse = getResponse("/activities/john.doe/@self", "POST",
postData, "xml", "application/xml");
+ XSDValidator.validate(createResponse, XMLSCHEMA, XSDRESOURCE,false);
+
String resp = getResponse("/activities/john.doe/@self", "GET", "xml",
"application/xml");
+
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
XPath xp = xpathFactory.newXPath();
assertEquals("0", xp.evaluate("/response/startIndex", new InputSource(
new StringReader(resp))));
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlDataTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlDataTest.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlDataTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlDataTest.java
Tue Nov 4 18:25:41 2008
@@ -65,6 +65,8 @@
String resp = getResponse("/appdata/john.doe/@friends/app", "GET",
extraParams, "xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
XPath xp = xpathFactory.newXPath();
NodeList result = (NodeList) xp.evaluate("/appdata/entry", new InputSource(
new StringReader(resp)), XPathConstants.NODESET);
@@ -101,6 +103,8 @@
extraParams.put("fields", null);
String resp = getResponse("/appdata/john.doe/@self/app", "GET",
extraParams, "xml", "application/xml");
+
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
XPath xp = xpathFactory.newXPath();
NodeList result = (NodeList) xp.evaluate("/appdata/entry", new InputSource(
@@ -133,6 +137,7 @@
String resp = getResponse("/appdata/john.doe/@self/app", "GET",
extraParams, "xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
XPath xp = xpathFactory.newXPath();
NodeList result = (NodeList) xp.evaluate("/appdata/entry", new InputSource(
@@ -165,6 +170,7 @@
String resp = getResponse("/appdata/john.doe/@self/app", "GET",
extraParams, "xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
XPath xp = xpathFactory.newXPath();
NodeList result = (NodeList) xp.evaluate("/appdata/entry", new InputSource(
@@ -188,6 +194,8 @@
String resp = getResponse("/appdata/john.doe/@self/app", "DELETE",
extraParams, "xml",
"application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
assertCount("0");
// should be xml ?
@@ -195,6 +203,8 @@
getResponse("/appdata/john.doe/@self/app", "DELETE", extraParams, "xml",
"application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
assertCount(null);
}
@@ -209,6 +219,8 @@
String resp = getResponse("/appdata/john.doe/@self/app", "POST",
extraParams, postData,
"xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
assertCount("5");
}
@@ -217,6 +229,7 @@
String resp = getResponse("/appdata/john.doe/@self/app", "GET", "xml",
"application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
XPath xp = xpathFactory.newXPath();
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlPeopleDisabled.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlPeopleDisabled.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlPeopleDisabled.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlPeopleDisabled.java
Tue Nov 4 18:25:41 2008
@@ -33,6 +33,7 @@
import org.apache.shindig.social.opensocial.model.Organization;
import org.apache.shindig.social.opensocial.model.Person;
import org.apache.shindig.social.opensocial.model.Url;
+import org.apache.shindig.social.opensocial.util.XSDValidator;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -228,6 +229,8 @@
String resp = getResponse("/people/canonical/@self", "GET", extraParams,
"xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
System.err.println("Got Response \n"+resp);
XPath xp = xpathFactory.newXPath();
@@ -493,6 +496,8 @@
String resp = getResponse("/people/john.doe/@friends", "GET", extraParams,
"xml", "application/xml");
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
System.err.println("Got Response \n"+resp);
XPath xp = xpathFactory.newXPath();
@@ -526,7 +531,9 @@
String resp = getResponse("/people/john.doe/@friends", "GET", extraParams,
"xml", "application/xml");
-
+
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
System.err.println("Got Response \n"+resp);
XPath xp = xpathFactory.newXPath();
@@ -548,6 +555,9 @@
extraParams.put("startIndex", "1");
resp = getResponse("/people/john.doe/@friends", "GET", extraParams, "xml",
"application/xml");
+
+ XSDValidator.validate(resp, XMLSCHEMA, XSDRESOURCE,false);
+
xp = xpathFactory.newXPath();
resultNodeList = (NodeList) xp.evaluate("/response", new InputSource(
new StringReader(resp)), XPathConstants.NODESET);
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXStreamConverterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXStreamConverterTest.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXStreamConverterTest.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/BeanXStreamConverterTest.java
Tue Nov 4 18:25:41 2008
@@ -58,8 +58,6 @@
private static final String XMLSCHEMA = "
xmlns=\"http://ns.opensocial.org/2008/opensocial\" \n"
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+ " xsi:schemaLocation=\"http://ns.opensocial.org/2008/opensocial
classpath:opensocial.xsd\" ";
- private static final Log log = LogFactory
- .getLog(BeanXStreamConverterTest.class);
private static final String XSDRESOURCE = "opensocial.xsd";
private Person johnDoe;
private Activity activity;
@@ -122,7 +120,7 @@
public void testPersonToXml() throws Exception {
String xml = XSDValidator.validate(beanXmlConverter.convertToXml(johnDoe),
- XMLSCHEMA, XSDRESOURCE);
+ XMLSCHEMA, XSDRESOURCE, true);
Element element = XmlUtil.parse(xml);
Node id = element.getElementsByTagName("id").item(0);
assertEquals(johnDoe.getId(), id.getTextContent());
@@ -130,7 +128,7 @@
public void testActivityToXml() throws Exception {
String xml = XSDValidator.validate(beanXmlConverter.convertToXml(activity),
- XMLSCHEMA, XSDRESOURCE);
+ XMLSCHEMA, XSDRESOURCE, true);
Element element = XmlUtil.parse(xml);
Node id = element.getElementsByTagName("id").item(0);
@@ -201,7 +199,7 @@
activities.add(activity);
activities.add(activity);
String xml = XSDValidator.validate(beanXmlConverter
- .convertToXml(activities), XMLSCHEMA, XSDRESOURCE);
+ .convertToXml(activities), XMLSCHEMA, XSDRESOURCE, true);
XmlUtil.parse(xml);
String expectedXml = "<response>" + "<list.container>" + " <activity>"
+ " <id>activityId</id>" + " <mediaItems>"
Modified:
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/XSDValidator.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/XSDValidator.java?rev=711492&r1=711491&r2=711492&view=diff
==============================================================================
---
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/XSDValidator.java
(original)
+++
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/util/XSDValidator.java
Tue Nov 4 18:25:41 2008
@@ -42,7 +42,7 @@
* The schema language being used.
*/
private static final String W3C_XML_SCHEMA =
"http://www.w3.org/2001/XMLSchema";
-
+
/**
* The XML declaration
*/
@@ -52,9 +52,11 @@
/**
* Validate a xml string against a supplied schema.
- *
- * @param xml the xml presented as a string
- * @param schema an input stream containing the xsd
+ *
+ * @param xml
+ * the xml presented as a string
+ * @param schema
+ * an input stream containing the xsd
* @return a list of errors or a 0 lenght string if none.
*/
public static String validate(String xml, InputStream schema) {
@@ -67,8 +69,11 @@
/**
* Validate a xml input stream against a supplied schema.
- * @param xml a stream containing the xml
- * @param schema a stream containing the schema
+ *
+ * @param xml
+ * a stream containing the xml
+ * @param schema
+ * a stream containing the schema
* @return a list of errors or warnings, a 0 lenght string if none.
*/
public static String validate(InputStream xml, InputStream schema) {
@@ -80,20 +85,20 @@
try {
SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA);
Schema s = schemaFactory.newSchema(new StreamSource(schema));
-
-
+
Validator validator = s.newValidator();
final LSResourceResolver lsr = validator.getResourceResolver();
validator.setResourceResolver(new LSResourceResolver() {
public LSInput resolveResource(String arg0, String arg1, String arg2,
String arg3, String arg4) {
-
log.info("resolveResource("+arg0+","+arg1+","+arg2+","+arg3+","+arg4+")");
+ log.info("resolveResource(" + arg0 + "," + arg1 + "," + arg2 + ","
+ + arg3 + "," + arg4 + ")");
return lsr.resolveResource(arg0, arg1, arg2, arg3, arg4);
}
-
+
});
-
+
validator.validate(new StreamSource(xml));
} catch (IOException e) {
} catch (SAXException e) {
@@ -102,8 +107,7 @@
return errors.toString();
}
-
-
+
/**
* Process the response string to strip the container element and insert the
* opensocial schema.
@@ -111,21 +115,26 @@
* @param xml
* @return
*/
- public static String insertSchema(String xml, String schemaStatement,
boolean container) {
+ public static String insertSchema(String xml, String schemaStatement,
+ boolean removeContainer) {
if (xml == null || xml.trim().length() == 0) {
return xml;
}
- if (xml.startsWith("<response>")) {
- xml = xml.substring("<response>".length());
- }
- if (xml.endsWith("</response>")) {
- xml = xml.substring(0, xml.length() - "</response>".length());
+
+ if (removeContainer) {
+ if (xml.startsWith("<response>")) {
+ xml = xml.substring("<response>".length());
+ }
+ if (xml.endsWith("</response>")) {
+ xml = xml.substring(0, xml.length() - "</response>".length());
+ }
}
xml = xml.trim();
int gt = xml.indexOf('>');
if (gt > 0) {
- return XMLDEC + xml.substring(0, gt) + schemaStatement +
xml.substring(gt);
+ return XMLDEC + xml.substring(0, gt) + schemaStatement
+ + xml.substring(gt);
}
return xml;
}
@@ -134,16 +143,17 @@
* @param xmlFragment
* @return a list of errors
*/
- public static String validate(String xmlFragment, String schemaStatement,
String schemaResource ) {
- String xml = XSDValidator.insertSchema(xmlFragment, schemaStatement, true);
+ public static String validate(String xmlFragment, String schemaStatement,
+ String schemaResource, boolean removeContainer) {
+ String xml = XSDValidator.insertSchema(xmlFragment, schemaStatement,
removeContainer);
log.debug("Valiating " + xml);
String errors = XSDValidator.validate(xml, XSDValidator.class
.getResourceAsStream(schemaResource));
- if ( !"".equals(errors) ) {
- log.error("Failed to validate "+xml);
+ if (!"".equals(errors)) {
+ log.error("Failed to validate " + xml);
}
- if ( !"".equals(errors) ) {
- throw new Error("XML document does not validate \n"+errors+"\n"+xml);
+ if (!"".equals(errors)) {
+ throw new Error("XML document does not validate \n" + errors + "\n" +
xml);
}
return xml;
}