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