Author: ngn
Date: Fri Jul 30 21:36:19 2010
New Revision: 980973
URL: http://svn.apache.org/viewvc?rev=980973&view=rev
Log:
Fix NPE in XML renderer
Fix bug on parsing element names with dashes
Modified:
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLParser.java
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLTokenizer.java
mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseElementsTestCase.java
Modified:
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java?rev=980973&r1=980972&r2=980973&view=diff
==============================================================================
---
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java
(original)
+++
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java
Fri Jul 30 21:36:19 2010
@@ -121,7 +121,7 @@ public class Renderer {
private void renderElementName(StringBuilder buffer, XMLElement element,
ResolverNamespaceResolver nsResolver) {
// if the element has a namespace prefix, retrieves the prefix from
the defining attribute
- if (element.getNamespacePrefix().length() > 0) {
+ if (element.getNamespacePrefix() != null &&
element.getNamespacePrefix().length() > 0) {
buffer.append(element.getNamespacePrefix()).append(COLON);
} else if (element.getNamespaceURI().length() > 0) {
// element is in a namespace, but without a declared prefix, we
need to resolve the prefix
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=980973&r1=980972&r2=980973&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
Fri Jul 30 21:36:19 2010
@@ -193,6 +193,8 @@ public class XMLParser implements TokenL
// token must be =
if (c == '=') {
state = State.AFTER_ATTRIBUTE_EQUALS;
+ } else {
+ fatalError("Not wellformed");
}
break;
case AFTER_ATTRIBUTE_EQUALS:
Modified:
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLTokenizer.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLTokenizer.java?rev=980973&r1=980972&r2=980973&view=diff
==============================================================================
---
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLTokenizer.java
(original)
+++
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/sax/impl/XMLTokenizer.java
Fri Jul 30 21:36:19 2010
@@ -87,6 +87,8 @@ public class XMLTokenizer {
} else if (c == '\'') {
emit(c, byteBuffer);
state = State.IN_SINGLE_ATTRIBUTE_VALUE;
+ } else if (c == '-') {
+ emit(c, byteBuffer);
} else if (isControlChar(c)) {
emit(c, byteBuffer);
} else if (Character.isWhitespace(c)) {
@@ -132,7 +134,7 @@ public class XMLTokenizer {
}
private boolean isControlChar(char c) {
- return c == '<' || c == '>' || c == '-' || c == '!' || c == '/' || c
== '?' || c == '=';
+ return c == '<' || c == '>' || c == '!' || c == '/' || c == '?' || c
== '=';
}
private void emit(char token, IoBuffer byteBuffer) throws SAXException {
Modified:
mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseElementsTestCase.java
URL:
http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseElementsTestCase.java?rev=980973&r1=980972&r2=980973&view=diff
==============================================================================
---
mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseElementsTestCase.java
(original)
+++
mina/vysper/trunk/nbxml/src/test/java/org/apache/vysper/xml/sax/impl/ParseElementsTestCase.java
Fri Jul 30 21:36:19 2010
@@ -107,6 +107,17 @@ public class ParseElementsTestCase exten
assertNoMoreevents(events);
}
+ public void testDashInName() throws Exception {
+ Iterator<TestEvent> events = parse("<ro-ot />").iterator();
+
+ assertStartDocument(events.next());
+ assertStartElement("", "ro-ot", "ro-ot", events.next());
+ assertEndElement("", "ro-ot", "ro-ot", events.next());
+ assertEndDocument(events.next());
+
+ assertNoMoreevents(events);
+ }
+
public void testInvalidUnicodeInName() throws Exception {
Iterator<TestEvent> events = parse("<r\u2190oot />").iterator();