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