powered by Jive Software

Client does not parse packet extensions properly


I am using the DefaultPacketExtension class to get Jabber events from messages. The XML messages arrive at my client in proper form:



However, after parsing, the “map” member variable of the DefaultPacketExtension instance is NULL, and does not contain any of the inner properties of the extension. Therefore, I cannot determine if the packet extension indicates a “composing” event, nor can I get the ID from the packet extension. The parsed packet extension DOES contain the element name and the namespace, but that’'s it.

Creating a packet extension with these properties and sending it embedded in a message packet works fine.

Any ideas?




I’‘ll try to take a look at this issue tonight to figure out what’'s up.



Looks like it doesn’'t map an empty tag and a missing assignment is preventing tag text from getting saved.

Here’'s a fix for parsePacketExtention that just add the check for empty tag and add the missing eventType assignment:

// No providers registered, so use a default extension.
        DefaultPacketExtension extension = new DefaultPacketExtension(elementName, namespace);
        boolean done = false;
        while (!done) {
            int eventType = parser.next();
            if (eventType == XmlPullParser.START_TAG) {
                String name = parser.getName();
                if (parser.isEmptyElementTag()) {
                }                 else {
                    eventType = parser.next();
                    if (eventType == XmlPullParser.TEXT) {
                        String value = parser.getText();
                     extension.setValue(name, value);
            else if (eventType == XmlPullParser.END_TAG) {
                if (parser.getName().equals(elementName)) {
                    done = true;

Take care,



Thanks for the patch! I’'ll get this applied to the code base tonight. Your name will most definitely appear in the next changelog.


…that way they know who to blame eh?

The change is now in CVS so it will appear in tomorrow’'s daily build. Let me know how it works!