powered by Jive Software

Receiving custom message


I’m developping an android application which use smack.

I receive a complex packet, and i need to interpret it…

I tried to use packet.toXML() but this function truncate my packet.

So i saw that i must implement my own provider and packetextension, i tried this but it doesn’t work;

The packet i received is :

   <commande xmlns="urn:xmpp:crisalid:commande:update" id="1" recap="False" modified="2014-01-02T17:59:00.894" version="434" etat="2" uid="178F76C702424A8F919B495625A90B59" reserve="False">
      <ticket type="TAB" version="2" imprime="N" caisse="0" attente="N" annule="N" numero="0" uid="{178F76C7-0242-4A8F-919B-495625A90B59}" memo="N" devise="EURO">
            <creation iso="2014-01-02T17:59:00.847">
            <modification iso="2014-01-02T17:59:00.894">

I already did that :

public class CommandePacketExtension implements PacketExtension {
    public static final String NAMESPACE = "urn:xmpp:crisalid:commande:update";
    private String id,recap,modified,version,etat,uid,reserve;     public CommandePacketExtension(String id,String recap,String modified,String version,String etat,String uid,String reserve)
        this.id = id;
    }     public String getId()
        return id;
    }     public String getRecap()
        return recap;
    }     public String getModified()
        return modified;
    }     public String getVersion()
        return version;
    }     public String getEtat() {
        return etat;
    }     public String getUid()
        return uid;
    }     public String getReserve()
        return reserve;
    }     @Override
    public String getElementName() {
        return "commande";
    }     @Override
    public String getNamespace() {
        return null;
    }     @Override
    public String toXML() {
        return "<commande xmlns='" + NAMESPACE +
               " id=" + id +
               " modified=" + modified +
               " version=" + version +
               " etat=" + etat +
               " uid=" + uid +
               " reserve=" + reserve +
               "/>" +


public class CommandePacketProvider extends EmbeddedExtensionProvider {
    protected PacketExtension createReturnExtension(String s, String s2, Map<String, String> attributeMap, List<? extends PacketExtension> packetExtensions) {
        return new CommandePacketExtension(attributeMap.get("id"),attributeMap.get("recap"),attributeMap.get("modified")


pm.addExtensionProvider("commande", CommandePacketExtension.NAMESPACE,new CommandePacketProvider());

So with that i can see : in my logcat but if i do the same think for ticket, entete, it doesn’t work;

I need to do a class for each one, or a parser or…