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/05 12:09:27 UTC

svn commit: r941229 - in /mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder: XMPPContentHandler.java XMPPDecoder.java

Author: ngn
Date: Wed May  5 10:09:27 2010
New Revision: 941229

URL: http://svn.apache.org/viewvc?rev=941229&view=rev
Log:
Fix NPE when characters sent outside of stanza
Allow XML declaration for restarting XML streams

Modified:
    mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPContentHandler.java
    mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPDecoder.java

Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPContentHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPContentHandler.java?rev=941229&r1=941228&r2=941229&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPContentHandler.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPContentHandler.java Wed May  5 10:09:27 2010
@@ -76,7 +76,9 @@ public class XMPPContentHandler implemen
 	public void characters(char[] ch, int start, int length)
 			throws SAXException {
 		// TODO handle start and length
-		builder.addText(new String(ch));
+		if(builder != null) {
+			builder.addText(new String(ch));
+		}
 		
 	}
 
@@ -90,7 +92,7 @@ public class XMPPContentHandler implemen
 			// complete stanza, emit
 			emitStanza();
 		} else if(depth == 0) {
-			// end stanza:stanza element
+			// end stream:stream element
 			// TODO handle
 		} else {
 			builder.endInnerElement();

Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPDecoder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPDecoder.java?rev=941229&r1=941228&r2=941229&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPDecoder.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/decoder/XMPPDecoder.java Wed May  5 10:09:27 2010
@@ -36,6 +36,7 @@ import org.apache.vysper.xml.sax.impl.De
  */
 public class XMPPDecoder extends CumulativeProtocolDecoder {
 
+	private static final String XML_DECL = "<?xml";
     private static final String STREAM_STREAM = "<stream:stream";
 
 	public static final String SESSION_ATTRIBUTE_NAME = "xmppParser";
@@ -80,7 +81,7 @@ public class XMPPDecoder extends Cumulat
     	String peek = in.getString(14, CharsetUtil.UTF8_DECODER);
     	in.reset();
 
-    	if (reader == null || STREAM_STREAM.equals(peek)) {
+    	if (reader == null || STREAM_STREAM.equals(peek) || (peek != null && peek.startsWith(XML_DECL))) {
         	reader = new DefaultNonBlockingXMLReader();
         	
         	// we need to check the jabber:client/jabber:server NS declarations