You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2010/05/04 20:53:32 UTC

svn commit: r940999 - in /mina/vysper/trunk/nbxml/src: main/java/org/apache/vysper/xml/sax/impl/ test/java/org/apache/vysper/xml/sax/impl/

Author: ngn
Date: Tue May  4 18:53:32 2010
New Revision: 940999

URL: http://svn.apache.org/viewvc?rev=940999&view=rev
Log:
Fix bug where whitespace was not allowed after XML declaration

Modified:
    mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java
    mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/AbstractAsyncXMLReaderTestCase.java
    mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseXmlDeclarationTestCase.java

Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java?rev=940999&r1=940998&r2=940999&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java Tue May  4 18:53:32 2010
@@ -304,10 +304,13 @@ public class XMLParser implements TokenL
 			String unescaped = unescape(s);
 			log.trace("Parser emitting characters \"{}\"", unescaped);
 			contentHandler.characters(unescaped.toCharArray(), 0, unescaped.length());
-		} else {
+		} else if (s.trim().length() > 0) {
 			// must start document, even that document is not wellformed
 			startDocument();
 			fatalError("Text only allowed in element");
+		} else {
+			// ignorable whitespace
+			startDocument();
 		}
 	}
 	

Modified: mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/AbstractAsyncXMLReaderTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/AbstractAsyncXMLReaderTestCase.java?rev=940999&r1=940998&r2=940999&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/AbstractAsyncXMLReaderTestCase.java (original)
+++ mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/AbstractAsyncXMLReaderTestCase.java Tue May  4 18:53:32 2010
@@ -62,6 +62,7 @@ public abstract class AbstractAsyncXMLRe
 	
 	protected void assertStartElement(String expectedUri, String expectedLocalName, String expectedQName, Attributes expectedAttributes, 
 			TestEvent actual) {
+		printIfFatal(actual);
 		if(!(actual instanceof StartElementEvent)) fail("Event must be StartElementEvent but was " + actual.getClass());
 		StartElementEvent startElementEvent = (StartElementEvent) actual;
 		assertEquals("URI", expectedUri, startElementEvent.getURI());
@@ -69,6 +70,13 @@ public abstract class AbstractAsyncXMLRe
 		assertEquals("qName", expectedQName, startElementEvent.getQName());
 		assertAttributes(expectedAttributes, startElementEvent.getAtts());
 	}
+	
+	private void printIfFatal(TestEvent actual) {
+		if(actual instanceof FatalErrorEvent) {
+			((FatalErrorEvent)actual).getException().printStackTrace();
+		}
+		
+	}
 
 	protected void assertAttributes(Attributes expectedAttrs, Attributes actualAttrs) {
 		assertEquals("Attribute count", expectedAttrs.getLength(), actualAttrs.getLength());
@@ -83,6 +91,7 @@ public abstract class AbstractAsyncXMLRe
 	
 	protected void assertEndElement(String expectedUri, String expectedLocalName, String expectedQName, 
 			TestEvent actual) {
+		printIfFatal(actual);
 		if(!(actual instanceof EndElementEvent)) fail("Event must be EndElementEvent");
 		EndElementEvent endElementEvent = (EndElementEvent) actual;
 		assertEquals("URI", expectedUri, endElementEvent.getURI());
@@ -91,14 +100,17 @@ public abstract class AbstractAsyncXMLRe
 	}
 
 	protected void assertStartDocument(TestEvent actual) {
+		printIfFatal(actual);
 		if(!(actual instanceof StartDocumentEvent)) fail("Event must be StartDocumentEvent but is " + actual.getClass());
 	}
 
 	protected void assertEndDocument(TestEvent actual) {
+		printIfFatal(actual);
 		if(!(actual instanceof EndDocumentEvent)) fail("Event must be EndDocumentEvent");
 	}
 
 	protected void assertText(String expected, TestEvent actual) {
+		printIfFatal(actual);
 		if(!(actual instanceof CharacterEvent)) fail("Event must be CharacterEvent");
 		
 		assertEquals(expected, ((CharacterEvent)actual).getCharacters());

Modified: mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseXmlDeclarationTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseXmlDeclarationTestCase.java?rev=940999&r1=940998&r2=940999&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseXmlDeclarationTestCase.java (original)
+++ mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseXmlDeclarationTestCase.java Tue May  4 18:53:32 2010
@@ -30,7 +30,7 @@ import org.apache.vysper.xml.sax.impl.Te
 public class ParseXmlDeclarationTestCase extends AbstractAsyncXMLReaderTestCase {
 
 	public void testEmptyElement() throws Exception {
-		Iterator<TestEvent> events = parse("<?xml version=\"1.0\"?><root />").iterator();
+		Iterator<TestEvent> events = parse("<?xml version=\"1.0\"?>\n <root />").iterator();
 
 		assertStartDocument(events.next());
 		// no event for the declaration