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;
   }


Reply via email to