Hello,
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 :
<message>
<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">
<entete>
<creation iso="2014-01-02T17:59:00.847">
<date>02/01/2014</date>
<heure>17:59:00</heure>
</creation>
<modification iso="2014-01-02T17:59:00.894">
<date>02/01/2014</date>
<heure>17:59:00</heure>
</modification>
</entete>
</ticket>
</commande>
</message>
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;
this.recap=recap;
this.modified=modified;
this.version=version;
this.etat=etat;
this.uid=uid;
this.reserve=reserve;
} 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 +
"/>" +
"</commande>";
}
}
and
public class CommandePacketProvider extends EmbeddedExtensionProvider {
@Override
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")
,attributeMap.get("version"),attributeMap.get("etat"),attributeMap.get("uid"),attributeMap.get("reserve"));
}
}
and
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…