You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2011/04/27 16:46:56 UTC

svn commit: r1097132 - in /incubator/wookie/trunk/parser/java: src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java src/org/apache/wookie/w3c/impl/WidgetManifestModel.java src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java

Author: scottbw
Date: Wed Apr 27 14:46:55 2011
New Revision: 1097132

URL: http://svn.apache.org/viewvc?rev=1097132&view=rev
Log:
Implemented the W3C conformance tests for the Widget-Updates spec at the parser level; also updated the UDD parser to catch bad HTTP codes and content-types using HTTPClient to retrieve the UDD rather than let JDOM swallow them. See WOOKIE-103. Note that some tests fail or generate errors at the moment - I've reported these to W3C as possible test problems.

Added:
    incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java
Modified:
    incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/WidgetManifestModel.java
    incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java

Added: incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java?rev=1097132&view=auto
==============================================================================
--- incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java (added)
+++ incubator/wookie/trunk/parser/java/src-test/org/apache/wookie/w3c/test/UpdateConformanceTest.java Wed Apr 27 14:46:55 2011
@@ -0,0 +1,442 @@
+package org.apache.wookie.w3c.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.wookie.w3c.W3CWidget;
+import org.apache.wookie.w3c.updates.InvalidUDDException;
+import org.apache.wookie.w3c.updates.UpdateDescriptionDocument;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class UpdateConformanceTest extends ConformanceTest{
+	
+	
+	/**
+	 * This first set of tests checks that we process the update description element OK in the config.xml
+	 */
+	
+	@Test
+	public void pr001(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/001/ta-pr-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+
+	@Test
+	// This test is incorrect
+	public void pr002(){
+		String err = processWidgetWithErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/002/ta-pr-002.wgt");
+		assertFalse(err == null||err.equals(""));
+	}
+	
+	@Test
+	public void pr003(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/003/ta-pr-003.wgt");
+		assertNull(widget.getUpdate());
+	}
+	
+	
+	@Test
+	public void pr004(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/004/ta-pr-004.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	// Requires runtime testing
+	@Ignore
+	public void pr005(){
+	}	
+	
+	@Test
+	public void pr006(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/006/ta-pr-006.wgt");
+		assertEquals(null, widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr007(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/007/ta-pr-007.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	// Error in test
+	@Test
+	public void pr008(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/008/ta-pr-008.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr009(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/009/ta-pr-009.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr010(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/010/ta-pr-010.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr011(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/011/ta-pr-011.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr012(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/012/ta-pr-012.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr013(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/013/ta-pr-013.wgt");
+		assertEquals(null, widget.getUpdate());
+	}	
+	
+	@Test
+	public void pr014(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-preparation1/014/ta-pr-014.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+	}	
+	
+	/**
+	 * This set of tests checks the acquisition of the UDD. These should also be tested in the server at runtime using functional testing.
+	 */
+	// Requires runtime testing
+	@Test
+	public void ac1(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition1/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-if-none-match", widget.getUpdate());
+	}
+	// Requires runtime testing
+	@Test
+	public void ac2(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition2/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?check-if-modified-since", widget.getUpdate());
+	}
+	// Requires runtime testing
+	@Test
+	public void ac3(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition3/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-accept-language", widget.getUpdate());
+	}
+	// Requires runtime testing
+	@Test
+	public void ac4(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition4/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-cache-control=must-revalidate", widget.getUpdate());
+		widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition4/002/ta-ac-002.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-cache-control=no-cache", widget.getUpdate());
+		widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition4/003/ta-ac-003.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pragma=no-cache", widget.getUpdate());
+	}
+	
+	// Requires runtime testing
+	@Test
+	public void ac5(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition5/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-expires-in=300", widget.getUpdate());
+	}
+	
+	// Requires runtime testing
+	@Test
+	public void ac6() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition6/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-pass", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+
+	@Test(expected=InvalidUDDException.class)
+	public void ac7() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition7/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-wrong-ct", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void ac81() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition8/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-204", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void ac82() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition8/002/ta-ac-002.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-304", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	// Requires runtime testing - this just checks we parse the UDD OK
+	@Test
+	public void ac83() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition8/003/ta-ac-003.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-udi-204", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void ac9() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition9/001/ta-ac-001.wgt");
+		assertEquals("http://people.opera.com/harig/wupdres/resources/out.php?udd-206", widget.getUpdate());
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test
+	public void ac101() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition10/001/ta-ac-001.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+
+	@Test
+	public void ac102() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition10/002/ta-ac-002.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	// Requires runtime testing
+	@Test
+	public void ac103() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition10/003/ta-ac-003.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	// Requires runtime testing
+	@Test
+	public void ac104() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition10/004/ta-ac-004.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires manual runtime testing 
+	@Ignore
+	public void ac11(){
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void ac12() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition12/001/ta-ac-001.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+
+	//Requires manual testing - break the network connection during testing
+	@Ignore
+	@Test(expected=InvalidUDDException.class)
+	public void ac13() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-acquisition13/001/ta-ac-001.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	/**
+	 * Tests processing the UDD
+	 */
+	
+	@Test
+	public void pr1(){
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing1/001/ta-pr-001.wgt");
+		assertNull(widget.getUpdate());
+	}	
+	
+	@Test(expected=InvalidUDDException.class)
+	public void pr201() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/001/ta-pr-001.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	@Test(expected=InvalidUDDException.class)
+	public void pr202() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/002/ta-pr-002.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing - this changes the ID!
+	//Test error?
+	@Test
+	public void pr203() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/003/ta-pr-003.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	@Test(expected=InvalidUDDException.class)
+	public void pr204() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/004/ta-pr-004.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing
+	@Test
+	public void pr205() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/005/ta-pr-005.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing
+	@Test
+	public void pr206() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/006/ta-pr-006.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing
+	//Test error?
+	@Test
+	public void pr207() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/007/ta-pr-007.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}		
+	
+	//Requires runtime testing
+	@Test
+	public void pr208() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/008/ta-pr-008.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}		
+	
+	//Requires runtime testing
+	@Test
+	public void pr209() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/009/ta-pr-009.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires runtime testing
+	@Test
+	public void pr210() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/010/ta-pr-010.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing
+	@Test
+	public void pr211() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/011/ta-pr-011.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}		
+	
+	//Requires runtime testing
+	@Test
+	public void pr212() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/012/ta-pr-012.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	//Requires runtime testing
+	@Test
+	public void pr213() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/013/ta-pr-013.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}	
+	
+	@Test(expected=InvalidUDDException.class)
+	public void pr214() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/014/ta-pr-014.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires runtime testing
+	@Test
+	public void pr215() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/015/ta-pr-015.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires runtime testing
+	//Note that we throw an exception when a UDD has a relative src attr, which I think is the correct behaviour - this
+	//test seems to assume you just silently fail to update the widget?
+	@Test(expected=InvalidUDDException.class)
+	public void pr216() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/016/ta-pr-016.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires runtime testing
+	@Test
+	public void pr217() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/017/ta-pr-017.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test
+	public void pr218() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/018/ta-pr-018.wgt");
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+		assertTrue(udd.getDetails("en").contains("PASS"));
+	}
+	
+	@Test
+	public void pr219() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/019/ta-pr-019.wgt");
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+		assertEquals("PASS", udd.getDetails("en"));
+	}
+	
+	@Test
+	public void pr220() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/020/ta-pr-020.wgt");
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+		assertEquals("P A S S", udd.getDetails("en"));
+	}
+	
+	//Requires runtime testing
+	@Test
+	public void pr221() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing2/021/ta-pr-021.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void pr301() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing3/001/ta-pr-001.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	@Test(expected=InvalidUDDException.class)
+	public void pr302() throws InvalidUDDException{
+		W3CWidget widget = processWidgetNoErrors("http://dev.w3.org/2006/waf/widgets-updates/test-suite/test-cases/ta-processing3/002/ta-pr-002.wgt");
+		@SuppressWarnings("unused")
+		UpdateDescriptionDocument udd = new UpdateDescriptionDocument(widget.getUpdate());
+	}
+	
+	//Requires runtime testing
+	@Ignore
+	public void ve1(){}
+	
+	//Requires runtime testing
+	@Ignore
+	public void ve2(){}	
+}

Modified: incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/WidgetManifestModel.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/WidgetManifestModel.java?rev=1097132&r1=1097131&r2=1097132&view=diff
==============================================================================
--- incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/WidgetManifestModel.java (original)
+++ incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/impl/WidgetManifestModel.java Wed Apr 27 14:46:55 2011
@@ -322,7 +322,7 @@ public class WidgetManifestModel extends
 			}	
 			
 			// UDPATE DESCRIPTION IS OPTONAL - can only be one, ignore subsequent repetitions
-			if(tag.equals(IW3CXMLConfiguration.UPDATE_ELEMENT) && fUpdate == null) {
+			if(tag.equals(IW3CXMLConfiguration.UPDATE_ELEMENT) && fUpdate == null && child.getNamespace().getURI().equals(IW3CXMLConfiguration.MANIFEST_NAMESPACE)) {
 				UpdateDescription update = new UpdateDescription();
 				update.fromXML(child);
 				// It must have a valid HREF attribute, or it is ignored

Modified: incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java?rev=1097132&r1=1097131&r2=1097132&view=diff
==============================================================================
--- incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java (original)
+++ incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateDescriptionDocument.java Wed Apr 27 14:46:55 2011
@@ -18,6 +18,8 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.wookie.w3c.IW3CXMLConfiguration;
 import org.apache.wookie.w3c.impl.AbstractLocalizedEntity;
 import org.apache.wookie.w3c.util.LocalizationUtils;
@@ -84,10 +86,25 @@ public class UpdateDescriptionDocument{
 	public UpdateDescriptionDocument(String href) throws InvalidUDDException{
 		try {
 			URL url = new URL(href);
+			
+			HttpClient client = new HttpClient();
+			GetMethod method = new GetMethod(url.toString());
+			method.setFollowRedirects(true);
+			client.executeMethod(method);
+			String type = method.getResponseHeader("Content-Type").getValue();
+			int code = method.getStatusCode();
+			
+			if (code != 200) throw new InvalidUDDException("Bad HTTP response from update site: "+code);
+			if (!type.equals("application/xml")) throw new InvalidUDDException("Bad content type in response from update site: "+type);
+			
 			Document doc;
-			doc = new SAXBuilder().build(url);
+			doc = new SAXBuilder().build(method.getResponseBodyAsStream());
+			
 			fromXML(doc);
+			
 		} catch (Exception e) {
+			// If it is a specific UDDException, throw it, otherwise raise a generic UDD exception
+			if (e instanceof InvalidUDDException) throw (InvalidUDDException)e;
 			throw new InvalidUDDException("the document is not a valid UDD");
 		}
 	}