In my chat Application I want to delete message from both sender-receiver side,
for that I send acknowledgement through add replace tag with id attribute
sender side,
Message Removed
Receiver side get null id in replace tag,
Message Removed
---->for that I used PacketExtension
public class MessageExtensionProvider implements PacketExtension {
private String mess_server_id;
public static String namespace = “urn:xmpp:message-correct:0”; //<- what is namespace? what should it be?
public static String elementname = “replace”;
public MessageExtensionProvider() {
}
public MessageExtensionProvider(String id) {
this.mess_server_id = id;
}
public void setid(String value) {
this.mess_server_id = value;
}
public String getid() {
return mess_server_id;
}
public String getElementName() {
return MessageExtensionProvider.elementname;
}
public String getNamespace() {
return MessageExtensionProvider.namespace;
}
public String toXML() {
StringBuffer builder = new StringBuffer();
builder.append("<").append(getElementName()).append(" ");
builder.append(“xmlns=”").append(getNamespace()).append("" ");
builder.append(“id=”").append(mess_server_id).append(""" + “>” + “”);
return builder.tostring();
}
}
----->used this parser:
public class EditDeleteExtensionProvider implements PacketExtensionProvider {
//@Override
public PacketExtension parseExtension(XmlPullParser parser) throws Exception {
// TODO Auto-generated method stub
MessageExtensionProvider fileExt = new MessageExtensionProvider();
int eventType = parser.next();
while (eventType == XmlPullParser.START_TAG) {
String name = parser.getName();
// System.out.println(“Extension provider nm get” + fileExt.toXML() + " " + name);
switch (parser.getEventType()) {
case XmlPullParser.START_TAG:
if (name.equals(“id”)) {
fileExt.setid(parser.nextText());
}
}
eventType = parser.next();
}
return fileExt;
}
}
---->add this provider
ProviderManager.getInstance().addExtensionProvider(
MessageExtensionProvider.elementname,MessageExtensionProvider.namespace,
new EditDeleteExtensionProvider());