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();
 


Reply via email to