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