I get an exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.jivesoftware.smack.util.XmlStringBuilder.element(XmlStringBuilder.java:78)
at univie.ac.at.xmpp.iq.CustomIq.getIQChildElementBuilder(CustomIq.java:24)
at org.jivesoftware.smack.packet.IQ.getChildElementXML(IQ.java:171)
at org.jivesoftware.smack.packet.IQ.toXML(IQ.java:140)
at org.jivesoftware.smack.packet.IQ.toXML(IQ.java:43)
at org.jivesoftware.smackx.debugger.EnhancedDebugger$20.run(EnhancedDebugger.java:821)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
This is my CustomIqProvider class :
public class CustomIqProvider extends IQProvider<CustomIq> {
@Override
public CustomIq parse(XmlPullParser parser, int initialDepth) throws Exception {
String state = null;
outerloop: while(true) {
int eventType = parser.next();
switch(eventType) {
case XmlPullParser.START_TAG:
String elementName = parser.getName();
state = parser.nextText();
break;
case XmlPullParser.END_TAG:
if(parser.getDepth() == initialDepth) break outerloop;
break;
}
}
return new CustomIq(state);
}
}
Debugger shows that the stanza looked like this before the exception was thrown:
And this is how my IQChildElementXmlStringBuilder in CustomIq looks like
@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
xml.rightAngleBracket();
xml.element("state", state);
return xml;
}