First, I add ExtensionProvider in my plugin. The code is follow:
providerManager.addExtensionProvider("testpe", "lance:pe:test",new TestPacketExtensionProvider());
The provider is very simple,just print a String for test.
Then , I made a IQ and Message for test:
TestIQ tiq = new TestIQ(); tiq.setTo("admin@CHINA-2171AFB32/Smack");
Message msg = new Message();
msg.setTo("admin@CHINA-2171AFB32/Smack");
and a PacketExtension:
TestPacketExtension tpe = new TestPacketExtension();
The problem is here:
If I add the tpe in to tiq,and send the tiq, my provider dosen’t print anything.the cod is follow:
tiq.addExtension(tpe);
conn.sendPacket(tiq);
but if add the tpe in to msg,adn send the msg , my provider can work very well. the code is follow:
msg.addExtension(tpe);
conn.sendPacket(msg);
Sorry,my english is not very well.
-------------------------------------divider --------------------------------------------
my TestIQ code:
public class TestIQ extends IQ {
private String info; public TestIQ(){
} public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
buf.append("<test xmlns=\"lance:iq:testiq\">");
buf.append("<info>" + getInfo() + "</info>");
buf.append("</test>");
return buf.toString();
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}